স্টাইল এপিআই হলো জেটপ্যাক কম্পোজ-এর এলিমেন্ট ও কম্পোনেন্টগুলোকে কাস্টমাইজ বা 'স্টাইল' করার একটি নতুন পদ্ধতি, যা ঐতিহ্যগতভাবে মডিফায়ারের মাধ্যমে করা হতো। এটি আরও গভীর ও সহজ কাস্টমাইজেশনের সুযোগ উন্মোচন করার জন্য ডিজাইন করা হয়েছে।
স্টাইলস এপিআই বিভিন্ন ফর্ম ফ্যাক্টরে নমনীয়তা বাড়ায়, উন্নত পারফরম্যান্স প্রদান করে এবং কাস্টম ডিজাইন সিস্টেম তৈরি করা সহজ করে তোলে। আপনার কাস্টম কম্পোনেন্টের প্রয়োজন না থাকলেও, আপনার ডিজাইন সিস্টেমের জন্য স্টাইলস এপিআই-এর অনেক সুবিধা রয়েছে।
একটি গুরুত্বপূর্ণ পার্থক্য হলো, স্টাইলগুলো মডিফায়ারের বিকল্প নয়, তবে এগুলো প্যাডিং এবং রঙের মতো স্টাইলিং প্যারামিটারগুলোর বিকল্প হিসেবে কাজ করে। অধিকতর নমনীয়তা এবং পারফরম্যান্সের জন্য আমরা প্যারামিটারের পরিবর্তে স্টাইল ব্যবহার করার পরামর্শ দিই।
স্টাইলের সুবিধা
- স্টেট-ভিত্তিক স্টাইলিং সহজ করে: এই এপিআইটি বিভিন্ন স্টেটের (যেমন, হোভারড, ফোকাসড, প্রেসড) উপর ভিত্তি করে পরিবর্তিত হওয়া স্টাইলগুলো সংজ্ঞায়িত করার জন্য একটি আরও সংক্ষিপ্ত এবং ডিক্লারেটিভ উপায় প্রদান করে, যা মডিফায়ার সিস্টেমের তুলনায় বয়লারপ্লেট কোড উল্লেখযোগ্যভাবে হ্রাস করে।
- অ্যানিমেটেড স্টেট ট্রানজিশন উন্নত করে: স্টাইল এপিআই আদর্শ পারফরম্যান্স বৈশিষ্ট্য সহ বিভিন্ন স্টেটের মধ্যে স্টাইল প্রোপার্টির বিল্ট-ইন অ্যানিমেশনের সুযোগ দেয়, যা বর্তমান
animateColorAsStateপদ্ধতির মতো রিকম্পোজিশন এড়িয়ে চলে। - কম্পোনেন্ট এপিআই সুবিন্যস্ত করে: কাস্টমাইজেশনের জন্য একটিমাত্র স্টাইল প্যারামিটার চালু করার মাধ্যমে, কম্পোনেন্ট এপিআইগুলো ব্যাপকভাবে সরলীকৃত হয় এবং অধিকতর নমনীয়তা প্রদান করে।
- মডিফায়ারের তুলনায় কম পুনর্গঠনের ফলে উন্নত পারফরম্যান্স: স্টাইলগুলি কম্পোজ পর্বের মধ্য দিয়ে না গিয়ে কম্পোজের ড্র এবং লেআউট পর্বে চলে।
- আরও মানসম্মত এপিআই সেট: একগুচ্ছ মানসম্মত স্টাইলিস্টিক প্রোপার্টি যেকোনো কম্পোনেন্টকে স্টাইলযোগ্য করে তোলে।
মূল ধারণা
| ধারণা | বর্ণনা |
|---|---|
Style | একটি ইন্টারফেস যা একটি UI এলিমেন্টের বাহ্যিক রূপ নির্ধারণ করে, এবং এতে স্টাইল করার মতো কিছু নির্দিষ্ট প্রোপার্টি থাকে। এটি CSS স্টাইলের মতোই এবং স্থানীয়ভাবে বা কোনো থিমের মাধ্যমে কাস্টমাইজ করা যায়। স্টাইলগুলো একটির ওপর আরেকটি ওভাররাইট করে; কোনো প্রোপার্টি দুইবার সেট করলে (যেমন, background() ) একটিমাত্র চূড়ান্ত মান পাওয়া যায়। |
StyleScope | একটি স্টাইলের মধ্যে applyStyle() ফাংশনের জন্য একটি রিসিভার স্কোপ। এটি ভিজ্যুয়াল বৈশিষ্ট্য (প্যাডিং, ব্যাকগ্রাউন্ড, বর্ডার, ইত্যাদি) নির্ধারণ করতে এবং বর্তমান StyleState অ্যাক্সেস করার জন্য ফাংশন সরবরাহ করে। |
StyleState | এটি এমন স্টেট (যেমন, isEnabled , isPressed , isChecked , বা নিজস্ব স্টেট) প্রদান করে, যা আপনি একটি স্টাইলের মধ্যে শর্তসাপেক্ষ স্টাইলিং নির্ধারণ করতে ব্যবহার করতে পারেন। |
শুরু করুন: নির্ভরতা যোগ করুন
আপনার নিজের প্রোজেক্টে এপিআইগুলো ব্যবহার করার জন্য, নিশ্চিত করুন যে আপনি জেটপ্যাক কম্পোজ ফাউন্ডেশনের সর্বশেষ আলফা রিলিজ ব্যবহার করছেন। আপনার settings.gradle.kts ফাইলে, ব্যবহারযোগ্য রিপোজিটরিগুলোর তালিকায় স্ন্যাপশট ম্যাভেন রিপোজিটরিটি যোগ করুন।
আপনার libs.versions.toml ফাইলে অথবা সরাসরি app/build.gradle.kts ফাইলে, Compose-এর ভার্সন 1.11.0-alpha06 এ সেট করুন:
compose = "1.11.0-alpha06"
androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "compose" }
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "compose" }
androidx-compose-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics", version.ref = "compose" }
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "compose" }
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "compose" }
androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version.ref = "compose" }
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4", version.ref = "compose" }
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "compose" }