জেটপ্যাক রচনা আপনার অ্যান্ড্রয়েড প্রকল্পে সংজ্ঞায়িত সংস্থানগুলি অ্যাক্সেস করতে পারে। এই দস্তাবেজটি ব্যাখ্যা করে যে কিছু API-এর রচনা এটি করার প্রস্তাব দেয়৷
সম্পদ হল অতিরিক্ত ফাইল এবং স্ট্যাটিক কন্টেন্ট যা আপনার কোড ব্যবহার করে, যেমন বিটম্যাপ, লেআউট সংজ্ঞা, ইউজার ইন্টারফেস স্ট্রিং, অ্যানিমেশন নির্দেশাবলী এবং আরও অনেক কিছু। আপনি যদি অ্যান্ড্রয়েডের সংস্থানগুলির সাথে পরিচিত না হন তবে অ্যাপ সংস্থান ওভারভিউ গাইডটি দেখুন।
স্ট্রিংস
সবচেয়ে সাধারণ ধরনের সম্পদ হল আপনার স্ট্রিং। আপনার XML সংস্থানগুলিতে স্ট্যাটিকভাবে সংজ্ঞায়িত একটি স্ট্রিং পুনরুদ্ধার করতে stringResource
API ব্যবহার করুন।
// In the res/values/strings.xml file // <string name="compose">Jetpack Compose</string> // In your Compose code Text( text = stringResource(R.string.compose) )
stringResource
এছাড়াও অবস্থানগত বিন্যাস সঙ্গে কাজ করে.
// In the res/values/strings.xml file // <string name="congratulate">Happy %1$s %2$d</string> // In your Compose code Text( text = stringResource(R.string.congratulate, "New Year", 2021) )
স্ট্রিং বহুবচন (পরীক্ষামূলক)
একটি নির্দিষ্ট পরিমাণের সাথে একটি বহুবচন লোড করতে pluralStringResource
API ব্যবহার করুন।
// In the res/strings.xml file // <plurals name="runtime_format"> // <item quantity="one">%1$d minute</item> // <item quantity="other">%1$d minutes</item> // </plurals> // In your Compose code Text( text = pluralStringResource( R.plurals.runtime_format, quantity, quantity ) )
pluralStringResource
পদ্ধতি ব্যবহার করার সময়, যদি আপনার স্ট্রিংটিতে একটি সংখ্যা সহ স্ট্রিং বিন্যাস অন্তর্ভুক্ত থাকে তবে আপনাকে দুইবার গণনা পাস করতে হবে। উদাহরণস্বরূপ, স্ট্রিং %1$d minutes
জন্য, প্রথম গণনা প্যারামিটারটি উপযুক্ত বহুবচন স্ট্রিং নির্বাচন করে এবং দ্বিতীয় গণনা পরামিতিটি %1$d
স্থানধারকের মধ্যে ঢোকানো হয়। যদি আপনার বহুবচন স্ট্রিং স্ট্রিং বিন্যাস অন্তর্ভুক্ত না করে, তাহলে আপনাকে তৃতীয় প্যারামিটারটি pluralStringResource
এ পাস করতে হবে না।
বহুবচন সম্পর্কে আরও তথ্যের জন্য, পরিমাণ স্ট্রিং ডকুমেন্টেশন দেখুন।
মাত্রা
একইভাবে, একটি সম্পদ XML ফাইল থেকে মাত্রা পেতে dimensionResource
API ব্যবহার করুন।
// In the res/values/dimens.xml file // <dimen name="padding_small">8dp</dimen> // In your Compose code val smallPadding = dimensionResource(R.dimen.padding_small) Text( text = "...", modifier = Modifier.padding(smallPadding) )
রং
আপনি যদি আপনার অ্যাপে ক্রমবর্ধমানভাবে রচনা গ্রহণ করেন, তাহলে একটি সম্পদ XML ফাইল থেকে রং পেতে colorResource
API ব্যবহার করুন।
// In the res/colors.xml file // <color name="purple_200">#FFBB86FC</color> // In your Compose code Divider(color = colorResource(R.color.purple_200))
colorResource
স্থির রঙের সাথে প্রত্যাশিতভাবে কাজ করে, কিন্তু এটি রঙের রাজ্য তালিকার সম্পদকে সমতল করে।
ভেক্টর সম্পদ এবং চিত্র সম্পদ
ভেক্টর ড্রয়েবল বা পিএনজির মতো রাস্টারাইজড অ্যাসেট ফরম্যাট লোড করতে painterResource
API ব্যবহার করুন। আপনাকে ড্রয়েবলের ধরণ জানার দরকার নেই, কেবল Image
কম্পোজেবল বা paint
মডিফায়ারে painterResource
ব্যবহার করুন।
// Files in res/drawable folders. For example: // - res/drawable-nodpi/ic_logo.xml // - res/drawable-xxhdpi/ic_logo.png // In your Compose code Icon( painter = painterResource(id = R.drawable.ic_logo), contentDescription = null // decorative element )
painterResource
মূল থ্রেডে রিসোর্সের বিষয়বস্তু ডিকোড এবং পার্স করে।
অ্যানিমেটেড ভেক্টর অঙ্কনযোগ্য
একটি অ্যানিমেটেড ভেক্টর আঁকাযোগ্য XML লোড করতে AnimatedImageVector.animatedVectorResource
API ব্যবহার করুন। পদ্ধতিটি একটি AnimatedImageVector
উদাহরণ প্রদান করে। অ্যানিমেটেড ইমেজ প্রদর্শন করার জন্য, একটি Painter
তৈরি করতে rememberAnimatedVectorPainter
পদ্ধতি ব্যবহার করুন যা Image
এবং Icon
কম্পোজেবলে ব্যবহার করা যেতে পারে। rememberAnimatedVectorPainter
পদ্ধতির বুলিয়ান atEnd
প্যারামিটার নির্দেশ করে যে সমস্ত অ্যানিমেশনের শেষে ছবিটি আঁকা উচিত কিনা। পরিবর্তনযোগ্য অবস্থার সাথে ব্যবহার করা হলে, এই মানের পরিবর্তন সংশ্লিষ্ট অ্যানিমেশনকে ট্রিগার করে।
// Files in res/drawable folders. For example: // - res/drawable/ic_hourglass_animated.xml // In your Compose code val image = AnimatedImageVector.animatedVectorResource(R.drawable.ic_hourglass_animated) val atEnd by remember { mutableStateOf(false) } Icon( painter = rememberAnimatedVectorPainter(image, atEnd), contentDescription = null // decorative element )
আইকন
জেটপ্যাক কম্পোজ Icons
অবজেক্টের সাথে আসে যা কম্পোজে মেটেরিয়াল আইকন ব্যবহার করার জন্য এন্ট্রি পয়েন্ট। পাঁচটি স্বতন্ত্র আইকন থিম রয়েছে: ভরাট , আউটলাইনড , রাউন্ডেড , টুটোন এবং শার্প । প্রতিটি থিম একই আইকন ধারণ করে, কিন্তু একটি স্বতন্ত্র ভিজ্যুয়াল শৈলী সহ। আপনার সাধারণত একটি থিম বেছে নেওয়া উচিত এবং ধারাবাহিকতার জন্য আপনার অ্যাপ্লিকেশন জুড়ে এটি ব্যবহার করা উচিত।
একটি আইকন আঁকতে, আপনি Icon
কম্পোজেবল ব্যবহার করতে পারেন যা টিন্ট প্রয়োগ করে এবং আইকনের সাথে মেলে লেআউট আকার প্রদান করে।
Icon(Icons.Rounded.Menu, contentDescription = "Localized description")
সবচেয়ে বেশি ব্যবহৃত কিছু আইকন androidx.compose.material
নির্ভরতার অংশ হিসেবে পাওয়া যায়। অন্যান্য উপাদান আইকন ব্যবহার করতে, build.gradle
ফাইলে material-icons-extended
নির্ভরতা যোগ করুন।
dependencies {
def composeBom = platform('androidx.compose:compose-bom:2024.09.03')
implementation composeBom
implementation 'androidx.compose.material:material-icons-extended'
}
হরফ
কম্পোজে ফন্টগুলি ব্যবহার করতে, res/font
ফোল্ডারে রেখে ফন্ট ফাইলগুলিকে সরাসরি আপনার APKগুলিতে ডাউনলোড করুন এবং বান্ডেল করুন৷
Font
API ব্যবহার করে প্রতিটি ফন্ট লোড করুন এবং তাদের সাথে একটি FontFamily
তৈরি করুন যা আপনি আপনার নিজস্ব Typography
তৈরি করতে TextStyle
উদাহরণে ব্যবহার করতে পারেন। নিচের কোডটি ক্রেন কম্পোজ নমুনা এবং এর Typography.kt
ফাইল থেকে নেওয়া হয়েছে।
// Define and load the fonts of the app private val light = Font(R.font.raleway_light, FontWeight.W300) private val regular = Font(R.font.raleway_regular, FontWeight.W400) private val medium = Font(R.font.raleway_medium, FontWeight.W500) private val semibold = Font(R.font.raleway_semibold, FontWeight.W600) // Create a font family to use in TextStyles private val craneFontFamily = FontFamily(light, regular, medium, semibold) // Use the font family to define a custom typography val craneTypography = Typography( titleLarge = TextStyle( fontFamily = craneFontFamily ) /* ... */ ) // Pass the typography to a MaterialTheme that will create a theme using // that typography in the part of the UI hierarchy where this theme is used @Composable fun CraneTheme(content: @Composable () -> Unit) { MaterialTheme(typography = craneTypography) { content() } }
কম্পোজে ডাউনলোডযোগ্য ফন্ট ব্যবহার করার জন্য, ডাউনলোডযোগ্য ফন্ট পৃষ্ঠাটি দেখুন।
থিমিং ইন কম্পোজ ডকুমেন্টেশনে টাইপোগ্রাফি সম্পর্কে আরও জানুন
{% শব্দার্থে %}আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়
- ছবি লোড হচ্ছে {:#loading-images}
- কম্পোজে মেটেরিয়াল ডিজাইন 2
- কম্পোজে কাস্টম ডিজাইন সিস্টেম