Corner radius হল UI উপাদানের কোণ গোলাকার করার একটি প্যারামিটার, যা লজিক্যাল পিক্সেলে (iOS-এ pt, Android-এ dp) পরিমাপ করা হয় এবং একটি আয়তক্ষেত্রের কোণে অঙ্কিত বৃত্তের ব্যাসার্ধ নির্ধারণ করে। সঠিক corner radius নির্বাচন ইন্টারফেসের ধারণাকে প্রভাবিত করে: বড় গোলাকার একটি নরম, বন্ধুত্বপূর্ণ স্বর তৈরি করে, ছোট — কঠোর এবং আনুষ্ঠানিক। Material Design Guidelines (Google, 2026) অনুসারে, কার্ডের জন্য প্রস্তাবিত radius হল 8–16 dp, বাটনের জন্য — 4–8 dp। উপাদানের চেহারা পরিচালনা সম্পর্কে আরও জানতে UI-তে ছায়া সম্পর্কে নিবন্ধ পড়ুন।
মূল পয়েন্ট
Corner radius একটি সংখ্যাসূচক মান যা একটি আয়তক্ষেত্রাকার উপাদানের কোণগুলির গোলাকারের মাত্রা নির্ধারণ করে। মান যত বেশি, কোণ তত বেশি গোলাকার হয়। মান 0-এ, কোণটি সমকোণ (90°) থাকে; ছোট বাহুর অর্ধেকের সমান মানে, উপাদানটি একটি বৃত্তে (বর্গক্ষেত্রের জন্য) বা সোজা বাহু সহ একটি গোলাকার আয়তক্ষেত্রে (ক্যাপসুল) রূপান্তরিত হয়।
মোবাইল ডিজাইনে, corner radius এর জন্য ব্যবহৃত হয়: কার্ড এবং টাইল, বাটন, ইনপুট ফিল্ড, মডেল উইন্ডো, ছবি এবং অবতার, প্রগতি নির্দেশক, চিপ এবং ব্যাজ। প্রতিটি উপাদানের প্রকারের Material Design এবং Human Interface Guidelines-এর উপর ভিত্তি করে গোলাকারের একটি প্রস্তাবিত পরিসর রয়েছে।
Material Design 3 (Google, 2026) অনুসারে, কোণ গোলাকার তিনটি স্তরে শ্রেণীবদ্ধ করা হয়েছে: ছোট (4 dp) বাটন এবং ইনপুট ফিল্ডের জন্য, মাঝারি (8–12 dp) কার্ড এবং শিটের জন্য, বড় (16–28 dp) ডায়ালগ এবং বটম শিটের জন্য। Apple HIG (2025) সিস্টেম উপাদানের (UIButton, UITextField) জন্য 10–12 pt-এর একটি অভিন্ন corner radius এবং মডেল উপস্থাপনার জন্য 20+ pt সুপারিশ করে।
iOS-এ, কোণ গোলাকার CALayer-এর cornerRadius প্রপার্টির মাধ্যমে বাস্তবায়িত হয়। UIKit-এ, প্রতিটি UIView-এর একটি লেয়ার থাকে যার cornerRadius সেট করা যায়। আরও জটিল গোলাকারের (বিভিন্ন কোণের জন্য বিভিন্ন ব্যাসার্ধ) জন্য, UIBezierPath-এর সাথে maskedCorners এবং CACornerMask ব্যবহার করা হয়।
// UIKit: CALayer-এর মাধ্যমে গোলাকার
import UIKit
let cardView = UIView()
cardView.backgroundColor = .systemBackground
cardView.layer.cornerRadius = 12
cardView.layer.maskedCorners = [
.layerMinXMinYCorner,
.layerMaxXMinYCorner
]
SwiftUI-এ, গোলাকার cornerRadius() মডিফায়ার বা RoundedRectangle-এর সাথে ClipShape-এর মাধ্যমে সেট করা হয়। SwiftUI clipped() এবং overlay()-এর সাথে UIRectCorner-এর মাধ্যমে পৃথক কোণ গোলাকার সমর্থন করে।
// SwiftUI: RoundedRectangle-এর মাধ্যমে গোলাকার
import SwiftUI
VStack {
Text("Corner Radius 16")
.padding()
.background(
RoundedRectangle(cornerRadius: 16)
.fill(Color.blue)
)
}
// পৃথক কোণ গোলাকার
RoundedRectangle(
cornerSize: CGSize(width: 16, height: 16),
style: .continuous
)
Continuous corner radius একটি গোলাকার শৈলী যা Apple iOS 7 থেকে iOS-এ ব্যবহার করছে। ক্লাসিক ব্যাসার্ধ (বৃত্তাকার) থেকে ভিন্ন, অবিচ্ছিন্ন ব্যাসার্ধ একটি বৃত্তাকার চাপের পরিবর্তে তৃতীয়-ক্রমের Bezier বক্ররেখা ব্যবহার করে মসৃণ গোলাকার তৈরি করে। SwiftUI RoundedRectangle-এ style: .continuous প্যারামিটারের মাধ্যমে এই শৈলী সমর্থন করে। Apple সমস্ত সিস্টেম উপাদানের জন্য continuous corner radius সুপারিশ করে কারণ এটি দৃশ্যত আরও প্রাকৃতিক।
Android-এ, কোণ গোলাকার ঐতিহ্যগতভাবে res/drawable ফোল্ডারে XML shape রিসোর্সের মাধ্যমে বাস্তবায়িত হয়। Shape cornerRadius এবং solid প্যারামিটার সহ পটভূমির আকৃতি নির্ধারণ করে। বিভিন্ন কোণের জন্য, <corners android:bottomLeftRadius="..." /> ব্যবহার করা হয়। Material Design 3-এ, থিম সমর্থন এবং গতিশীল আকার সহ MaterialShapeDrawable যোগ করা হয়েছে।
<!-- res/drawable/bg_card.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>
Jetpack Compose-এ, গোলাকার Modifier-এর shape প্যারামিটারের মাধ্যমে সেট করা হয়। Compose প্রতিটি কোণ এবং শৈলীর (CircularShape বা CutCornerShape) জন্য বিভিন্ন ব্যাসার্ধের সমর্থন সহ RoundedCornerShape প্রদান করে। Compose গ্রাফিক স্ট্রোকের সাথে RoundedCornerShape-এর মাধ্যমে continuous corner radius সমর্থন করে।
// Jetpack Compose: RoundedCornerShape-এর মাধ্যমে গোলাকার
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
Card(
shape = RoundedCornerShape(
topStart = 16.dp,
topEnd = 16.dp,
bottomStart = 4.dp,
bottomEnd = 4.dp
),
elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
) {
Text(text = "কাস্টম গোলাকার সহ Card")
}
Android View System-এ MaterialShapeDrawable drawable পুনরায় তৈরি না করে গতিশীলভাবে corner radius পরিবর্তন করার অনুমতি দেয়। সঠিক কনফিগারেশনের জন্য ShapeAppearanceModel ব্যবহার করুন: প্রতিটি কোণের জন্য পৃথকভাবে cornerFamily (rounded বা cut) এবং cornerSize সেট করুন।
Corner radius নির্বাচন উপাদানের ধরন, ব্যবহারের প্রসঙ্গ এবং প্ল্যাটফর্মের উপর নির্ভর করে। কোনো সার্বজনীন নিয়ম নেই, কিন্তু Material Design এবং Apple HIG স্ট্যান্ডার্ড উপাদানের জন্য স্পষ্ট সুপারিশ প্রদান করে। মূল নীতি: গোলাকার লক্ষণীয় হওয়া উচিত কিন্তু বিষয়বস্তুতে বাধা দেওয়া উচিত নয়।
| উপাদানের ধরন | প্রস্তাবিত Radius | প্ল্যাটফর্ম | নোট |
|---|---|---|---|
| বাটন | 4–8 dp / 8 pt | iOS, Android | বাটন যত বড়, radius তত বড় |
| কার্ড | 8–16 dp / 10–12 pt | iOS, Android | Material Design: 12 dp ডিফল্ট |
| ইনপুট ফিল্ড | 4–8 dp / 8 pt | iOS, Android | অত্যধিক গোলাকার অস্বাভাবিক দেখায় |
| মডেল উইন্ডো | 16–28 dp / 20+ pt | iOS, Android | iOS 18: 24 pt ডিফল্ট |
| অবতার | আকারের 50% | iOS, Android | গোলাকার অবতারের জন্য radius = বাহুর অর্ধেক |
| চিপ / ব্যাজ | 16–20 dp / 14 pt | Android | বড় গোলাকারের সাথে ক্যাপসুল আকৃতি |
কনট্রাস্ট নিয়ম: একই ইন্টারফেসে ভিন্ন corner radius-এর উপাদানগুলির মধ্যে কমপক্ষে 4 dp-এর পার্থক্য থাকা উচিত যাতে দৃশ্যমান পার্থক্য লক্ষণীয় হয়। একটি স্ক্রিনে 3 স্তরের গোলাকার ব্যবহার করবেন না — এটি দৃশ্যমান গোলমাল তৈরি করে। Material Design 3 প্রতি স্ক্রিনে দুটির বেশি স্তরের গোলাকার না ব্যবহার করার সুপারিশ করে: একটি কন্টেইনার (কার্ড, ডায়ালগ) এবং একটি ইন্টারঅ্যাকটিভ উপাদানের (বাটন, ফিল্ড) জন্য।
Flutter-এ, কোণ গোলাকার BorderRadius ক্লাসের মাধ্যমে বাস্তবায়িত হয়, যা Radius.circular() বা Radius.elliptical() মান গ্রহণ করে। Flutter BorderRadius.only() এবং BorderRadius.horizontal()/vertical()-এর মাধ্যমে পৃথক গোলাকার সমর্থন করে। ClipRRect উইজেট প্রদত্ত BorderRadius অনুযায়ী চাইল্ড উপাদান কেটে ফেলে।
// Flutter: ClipRRect এবং Container-এর মাধ্যমে গোলাকার
import 'package:flutter/material.dart';
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(16.0),
topRight: Radius.circular(16.0),
bottomLeft: Radius.circular(4.0),
bottomRight: Radius.circular(4.0),
),
),
child: Text('কাস্টম কোণ গোলাকার'),
)
// Image সহ ClipRRect
ClipRRect(
borderRadius: BorderRadius.circular(12.0),
child: Image.network(
'https://example.com/image.jpg',
fit: BoxFit.cover,
),
)
Flutter-এ ClipRRect ব্যবহার করা হয় যখন আপনাকে একটি ছবি বা জটিল উইজেট একটি গোলাকার সীমানা বরাবর কাটতে হয়। সাধারণ পটভূমি কন্টেইনারের জন্য, borderRadius সহ BoxDecoration যথেষ্ট — এটি আরও কার্যকর কারণ এটি একটি পৃথক কাটিং লেয়ার তৈরি করে না। Material Flutter 3.22+ ContinuousRectangleBorder-এর মাধ্যমে continuous corner radius সমর্থন করে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Android-এ dp (density-independent pixels) এবং iOS-এ pt (points) হল লজিক্যাল ইউনিট যা পিক্সেল ঘনত্ব নির্বিশেষে স্ক্রিনে ভৌত আকারের সাথে মিলে যায়। 1 dp ≈ 1 pt ≈ 1/160 ইঞ্চি। dp এবং pt-তে corner radius-এর সংখ্যাসূচক মান প্ল্যাটফর্মের মধ্যে ডিজাইন স্থানান্তর করার সময় বিনিময়যোগ্যভাবে ব্যবহার করা যেতে পারে।
iOS-এ, CACornerMask-এর সাথে maskedCorners ব্যবহার করুন: layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]। Android XML-এ — । Jetpack Compose-এ — RoundedCornerShape(topStart = 12.dp, topEnd = 12.dp)। Flutter-এ — BorderRadius.only(topLeft: Radius.circular(12), topRight: Radius.circular(12))।
Continuous corner radius একটি গোলাকার শৈলী যেখানে কোণটি একটি বৃত্তাকার চাপের পরিবর্তে তৃতীয়-ক্রমের Bezier বক্ররেখা দ্বারা গঠিত হয়। Apple iOS 7 থেকে সমস্ত সিস্টেম উপাদানের জন্য এই শৈলী ব্যবহার করছে। দৃশ্যত, ক্রমাগত গোলাকার ক্লাসিক বৃত্তাকার শৈলীর তুলনায় আরও মসৃণ এবং প্রাকৃতিক দেখায়।
iOS-এ 10–12 pt (সিস্টেম কিবোর্ডের মতো) এবং Android-এ 8–12 dp সুপারিশ করা হয়। কিবোর্ডের ভিতরের কীগুলির ছোট radius (4–6 dp) বা কোনো গোলাকার নাও থাকতে পারে। স্পর্শ এলাকা বাড়ানোর জন্য, গোলাকার সীমানা এবং বাটনের প্রান্তের মধ্যে 4–8 dp-এর padding ব্যবহার করুন।
UITableViewCell স্বয়ংক্রিয়ভাবে contentView থেকে cornerRadius উত্তরাধিকার সূত্রে পায় না কারণ কোষের পটভূমি backgroundView-এ আঁকা হয়। একটি কোষ গোলাকার করতে, contentView.layer এবং backgroundView.layer উভয়েই একসাথে cornerRadius সেট করুন। SwiftUI-তে, RoundedRectangle-এর সাথে .listRowBackground() ব্যবহার করুন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন