শৈলী এবং থিম

রচনা পদ্ধতি চেষ্টা করুন
জেটপ্যাক কম্পোজ হল Android এর জন্য প্রস্তাবিত UI টুলকিট। কম্পোজ এ থিমিং এর সাথে কিভাবে কাজ করবেন তা শিখুন।

অ্যান্ড্রয়েডের শৈলী এবং থিমগুলি আপনাকে ওয়েব ডিজাইনের স্টাইলশীটের মতো ইউআই গঠন এবং আচরণ থেকে আপনার অ্যাপ ডিজাইনের বিশদ বিবরণ আলাদা করতে দেয়।

একটি শৈলী হল বৈশিষ্ট্যগুলির একটি সংগ্রহ যা একটি একক View জন্য উপস্থিতি নির্দিষ্ট করে৷ একটি শৈলী ফন্টের রঙ, ফন্টের আকার, পটভূমির রঙ এবং আরও অনেক কিছুর মতো বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারে।

একটি থিম হল অ্যাট্রিবিউটের একটি সংগ্রহ যা একটি সম্পূর্ণ অ্যাপ, অ্যাক্টিভিটি বা ভিউ হায়ারার্কিতে প্রয়োগ করা হয়—শুধু একটি পৃথক ভিউ নয়। আপনি যখন একটি থিম প্রয়োগ করেন, তখন অ্যাপের প্রতিটি দৃশ্য বা কার্যকলাপ থিমের প্রতিটি বৈশিষ্ট্য প্রয়োগ করে যা এটি সমর্থন করে। থিমগুলি অ-ভিউ উপাদানগুলিতেও শৈলী প্রয়োগ করতে পারে, যেমন স্ট্যাটাস বার এবং উইন্ডো ব্যাকগ্রাউন্ড।

শৈলী এবং থিমগুলি res/values/ এ একটি স্টাইল রিসোর্স ফাইলে ঘোষণা করা হয়, সাধারণত styles.xml নামে।

চিত্র 1. একই কার্যকলাপে দুটি থিম প্রয়োগ করা হয়েছে: Theme.AppCompat (বাম) এবং Theme.AppCompat.Light (ডান)।

থিম বনাম শৈলী

থিম এবং শৈলী অনেক মিল আছে, কিন্তু তারা বিভিন্ন উদ্দেশ্যে ব্যবহার করা হয়. থিম এবং শৈলীগুলির একই মৌলিক কাঠামো রয়েছে—একটি মূল-মূল্যের জোড়া যা সম্পদের বৈশিষ্ট্যগুলিকে মানচিত্র করে।

একটি শৈলী একটি নির্দিষ্ট ধরনের দৃশ্যের জন্য বৈশিষ্ট্যগুলি নির্দিষ্ট করে৷ উদাহরণস্বরূপ, একটি শৈলী একটি বোতামের বৈশিষ্ট্য নির্দিষ্ট করতে পারে। আপনি একটি শৈলীতে নির্দিষ্ট করেছেন এমন প্রতিটি বৈশিষ্ট্য হল একটি বৈশিষ্ট্য যা আপনি লেআউট ফাইলে সেট করতে পারেন। একটি শৈলীতে সমস্ত বৈশিষ্ট্যগুলি বের করা একাধিক উইজেট জুড়ে তাদের ব্যবহার এবং বজায় রাখা সহজ করে তোলে।

একটি থিম নামযুক্ত সংস্থানগুলির একটি সংগ্রহকে সংজ্ঞায়িত করে যা শৈলী, বিন্যাস, উইজেট ইত্যাদি দ্বারা উল্লেখ করা যেতে পারে। থিমগুলি অ্যান্ড্রয়েড সংস্থানগুলিতে colorPrimary মতো শব্দার্থিক নামগুলি বরাদ্দ করে৷

শৈলী এবং থিম একসাথে কাজ করার জন্য বোঝানো হয়। উদাহরণস্বরূপ, আপনার একটি স্টাইল থাকতে পারে যা নির্দিষ্ট করে যে একটি বোতামের একটি অংশ হল colorPrimary , এবং আরেকটি অংশ হল colorSecondary । সেই রঙের প্রকৃত সংজ্ঞা থিমে দেওয়া আছে। ডিভাইসটি নাইট মোডে চলে গেলে, আপনার অ্যাপটি তার "হালকা" থিম থেকে "অন্ধকার" থিমে স্যুইচ করতে পারে, সেই সমস্ত সম্পদের নামের মান পরিবর্তন করে। আপনার শৈলী পরিবর্তন করার দরকার নেই, যেহেতু শৈলীগুলি শব্দার্থিক নাম ব্যবহার করছে এবং নির্দিষ্ট রঙের সংজ্ঞা নয়।

থিম এবং শৈলীগুলি কীভাবে একসাথে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, ব্লগ পোস্টটি দেখুন Android স্টাইলিং: থিম বনাম শৈলী

একটি শৈলী তৈরি করুন এবং প্রয়োগ করুন

একটি নতুন শৈলী তৈরি করতে, আপনার প্রকল্পের res/values/styles.xml ফাইলটি খুলুন। আপনি তৈরি করতে চান এমন প্রতিটি শৈলীর জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি নাম সহ একটি <style> উপাদান যোগ করুন যা শৈলীটিকে অনন্যভাবে সনাক্ত করে।
  2. আপনি সংজ্ঞায়িত করতে চান প্রতিটি শৈলী বৈশিষ্ট্যের জন্য একটি <item> উপাদান যোগ করুন। প্রতিটি আইটেমের name একটি বৈশিষ্ট্য নির্দিষ্ট করে যা আপনি অন্যথায় আপনার লেআউটে একটি XML বৈশিষ্ট্য হিসাবে ব্যবহার করেন৷ <item> উপাদানের মান হল সেই অ্যাট্রিবিউটের মান।

উদাহরণস্বরূপ, ধরুন আপনি নিম্নলিখিত শৈলীটি সংজ্ঞায়িত করেছেন:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="GreenText" parent="TextAppearance.AppCompat">
        <item name="android:textColor">#00FF00</item>
    </style>
</resources>

আপনি নিম্নলিখিত হিসাবে একটি দৃশ্যে শৈলী প্রয়োগ করতে পারেন:

<TextView
    style="@style/GreenText"
    ... />

শৈলীতে নির্দিষ্ট করা প্রতিটি বৈশিষ্ট্য সেই ভিউতে প্রয়োগ করা হয় যদি ভিউ এটি গ্রহণ করে। ভিউটি এমন কোনো বৈশিষ্ট্যকে উপেক্ষা করে যা এটি গ্রহণ করে না।

যাইহোক, স্বতন্ত্র ভিউতে একটি স্টাইল প্রয়োগ করার পরিবর্তে, আপনি সাধারণত আপনার সমগ্র অ্যাপ, অ্যাক্টিভিটি বা ভিউ সংগ্রহের জন্য একটি থিম হিসেবে শৈলী প্রয়োগ করেন , যেমন এই গাইডের অন্য একটি বিভাগে বর্ণনা করা হয়েছে।

একটি শৈলী প্রসারিত এবং কাস্টমাইজ করুন

আপনার নিজস্ব শৈলী তৈরি করার সময়, সর্বদা ফ্রেমওয়ার্ক বা সমর্থন লাইব্রেরি থেকে একটি বিদ্যমান শৈলী প্রসারিত করুন যাতে আপনি প্ল্যাটফর্ম UI শৈলীগুলির সাথে সামঞ্জস্য বজায় রাখতে পারেন। একটি শৈলী প্রসারিত করতে, আপনি parent অ্যাট্রিবিউট দিয়ে যে স্টাইলটি প্রসারিত করতে চান তা নির্দিষ্ট করুন। তারপরে আপনি উত্তরাধিকারসূত্রে পাওয়া শৈলী বৈশিষ্ট্যগুলিকে ওভাররাইড করতে পারেন এবং নতুন যুক্ত করতে পারেন।

উদাহরণস্বরূপ, আপনি অ্যান্ড্রয়েড প্ল্যাটফর্মের ডিফল্ট পাঠ্য উপস্থিতি উত্তরাধিকার সূত্রে পেতে পারেন এবং এটিকে নিম্নরূপ সংশোধন করতে পারেন:

<style name="GreenText" parent="@android:style/TextAppearance">
    <item name="android:textColor">#00FF00</item>
</style>

যাইহোক, অ্যান্ড্রয়েড সমর্থন লাইব্রেরি থেকে সর্বদা আপনার মূল অ্যাপ শৈলীগুলি উত্তরাধিকারসূত্রে পান৷ সমর্থন লাইব্রেরির শৈলীগুলি প্রতিটি সংস্করণে উপলব্ধ UI বৈশিষ্ট্যগুলির জন্য প্রতিটি শৈলী অপ্টিমাইজ করে সামঞ্জস্য প্রদান করে৷ সাপোর্ট লাইব্রেরি শৈলীগুলির প্রায়শই প্ল্যাটফর্মের শৈলীর মতো একটি নাম থাকে তবে AppCompat অন্তর্ভুক্ত থাকে।

একটি লাইব্রেরি বা আপনার নিজস্ব প্রকল্প থেকে শৈলী উত্তরাধিকারী হতে, পূর্ববর্তী উদাহরণে দেখানো @android:style/ অংশ ছাড়াই মূল শৈলীর নাম ঘোষণা করুন। উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণটি সমর্থন লাইব্রেরি থেকে পাঠ্য উপস্থিতির শৈলীগুলিকে উত্তরাধিকার সূত্রে প্রাপ্ত করে:

<style name="GreenText" parent="TextAppearance.AppCompat">
    <item name="android:textColor">#00FF00</item>
</style>

আপনি parent অ্যাট্রিবিউট ব্যবহার না করে, একটি ডট নোটেশন সহ একটি শৈলীর নাম প্রসারিত করে - প্ল্যাটফর্ম থেকে ব্যতীত শৈলীগুলিকে উত্তরাধিকার সূত্রে পেতে পারেন৷ অর্থাৎ, আপনি যে স্টাইলটি উত্তরাধিকার সূত্রে পেতে চান তার নামের সাথে আপনার স্টাইলের নামের উপসর্গটি একটি পিরিয়ড দ্বারা পৃথক করুন। আপনি সাধারণত শুধুমাত্র আপনার নিজস্ব শৈলী প্রসারিত করার সময় এটি করেন, অন্যান্য লাইব্রেরি থেকে শৈলী নয়। উদাহরণস্বরূপ, নিম্নলিখিত শৈলীটি পূর্বের উদাহরণে GreenText থেকে সমস্ত শৈলীকে উত্তরাধিকার সূত্রে প্রাপ্ত করে এবং তারপরে পাঠ্যের আকার বৃদ্ধি করে:

<style name="GreenText.Large">
    <item name="android:textSize">22dp</item>
</style>

আপনি আরও নামের উপর চেইন করে যতবার চান ততবার এই ধরনের শৈলী উত্তরাধিকারসূত্রে পাওয়া চালিয়ে যেতে পারেন।

আপনি <item> ট্যাগ দিয়ে কোন বৈশিষ্ট্যগুলি ঘোষণা করতে পারেন তা খুঁজে বের করতে, বিভিন্ন শ্রেণীর রেফারেন্সে "XML বৈশিষ্ট্য" টেবিলটি পড়ুন। সমস্ত ভিউ বেস View ক্লাস থেকে XML অ্যাট্রিবিউট সমর্থন করে এবং অনেক ভিউ তাদের নিজস্ব বিশেষ অ্যাট্রিবিউট যোগ করে। উদাহরণস্বরূপ, TextView XML বৈশিষ্ট্যগুলির মধ্যে রয়েছে android:inputType বৈশিষ্ট্য যা আপনি একটি পাঠ্য ভিউতে প্রয়োগ করতে পারেন যা ইনপুট গ্রহণ করে, যেমন একটি EditText উইজেট।

একটি থিম হিসাবে একটি শৈলী প্রয়োগ করুন

আপনি যেভাবে শৈলী তৈরি করেন সেভাবে আপনি একটি থিম তৈরি করতে পারেন। পার্থক্য হল আপনি কীভাবে এটি প্রয়োগ করেন: একটি ভিউতে style অ্যাট্রিবিউট সহ একটি স্টাইল প্রয়োগ করার পরিবর্তে, আপনি AndroidManifest.xml ফাইলে <application> ট্যাগ বা একটি <activity> ট্যাগে android:theme অ্যাট্রিবিউট সহ একটি থিম প্রয়োগ করেন .

উদাহরণস্বরূপ, পুরো অ্যাপে Android সাপোর্ট লাইব্রেরির মেটেরিয়াল ডিজাইন "ডার্ক" থিম কীভাবে প্রয়োগ করবেন তা এখানে রয়েছে:

<manifest ... >
    <application android:theme="@style/Theme.AppCompat" ... >
    </application>
</manifest>

এবং এখানে কিভাবে শুধুমাত্র একটি কার্যকলাপে "হালকা" থিম প্রয়োগ করবেন:

<manifest ... >
    <application ... >
        <activity android:theme="@style/Theme.AppCompat.Light" ... >
        </activity>
    </application>
</manifest>

অ্যাপ বা কার্যকলাপের প্রতিটি দৃশ্য প্রদত্ত থিমে সংজ্ঞায়িত স্টাইলগুলি থেকে সমর্থন করে এমন শৈলীগুলি প্রয়োগ করে৷ যদি একটি দৃশ্য শুধুমাত্র শৈলীতে ঘোষিত কিছু বৈশিষ্ট্য সমর্থন করে, তাহলে এটি শুধুমাত্র সেই বৈশিষ্ট্যগুলিকে প্রযোজ্য করে এবং যেগুলি সমর্থন করে না তাকে উপেক্ষা করে৷

অ্যান্ড্রয়েড 5.0 (এপিআই লেভেল 21) এবং অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরি v22.1 দিয়ে শুরু করে, আপনি আপনার লেআউট ফাইলের একটি ভিউতে android:theme অ্যাট্রিবিউটও নির্দিষ্ট করতে পারেন। এটি সেই দৃশ্য এবং যেকোনো শিশুর দর্শনের জন্য থিম পরিবর্তন করে, যা আপনার ইন্টারফেসের একটি নির্দিষ্ট অংশে থিমের রঙ প্যালেট পরিবর্তন করার জন্য দরকারী।

পূর্ববর্তী উদাহরণগুলি দেখায় যে কীভাবে একটি থিম প্রয়োগ করতে হয় যেমন Theme.AppCompat যা Android সাপোর্ট লাইব্রেরি দ্বারা সরবরাহ করা হয়৷ যাইহোক, আপনি সাধারণত আপনার অ্যাপের ব্র্যান্ডের সাথে মানানসই থিম কাস্টমাইজ করতে চান। এটি করার সর্বোত্তম উপায় হল সাপোর্ট লাইব্রেরি থেকে এই শৈলীগুলি প্রসারিত করা এবং নিম্নলিখিত বিভাগে বর্ণিত কিছু বৈশিষ্ট্যকে ওভাররাইড করা।

শৈলী অনুক্রম

অ্যান্ড্রয়েড আপনার অ্যান্ড্রয়েড অ্যাপ জুড়ে বৈশিষ্ট্য সেট করার বিভিন্ন উপায় প্রদান করে। উদাহরণস্বরূপ, আপনি একটি লেআউটে সরাসরি বৈশিষ্ট্যগুলি সেট করতে পারেন, একটি দৃশ্যে একটি শৈলী প্রয়োগ করতে পারেন, একটি বিন্যাসে একটি থিম প্রয়োগ করতে পারেন এবং এমনকি প্রোগ্রামগতভাবে বৈশিষ্ট্যগুলি সেট করতে পারেন৷

আপনার অ্যাপকে কীভাবে স্টাইল করবেন তা বেছে নেওয়ার সময়, Android-এর শৈলী অনুক্রমের দিকে খেয়াল রাখুন। সাধারণভাবে, সামঞ্জস্যের জন্য যতটা সম্ভব থিম এবং শৈলী ব্যবহার করুন। আপনি যদি একাধিক স্থানে একই গুণাবলী উল্লেখ করেন, তাহলে নিচের তালিকাটি নির্ধারণ করে যে কোন বৈশিষ্ট্যগুলি শেষ পর্যন্ত প্রয়োগ করা হবে। তালিকাটি সর্বোচ্চ অগ্রাধিকার থেকে সর্বনিম্ন পর্যন্ত অর্ডার করা হয়েছে।

  1. TextView প্রাপ্ত ক্লাসে টেক্সট স্প্যান ব্যবহার করে অক্ষর- বা অনুচ্ছেদ-স্তরের স্টাইলিং প্রয়োগ করা হচ্ছে।
  2. প্রোগ্রামগতভাবে গুণাবলী প্রয়োগ করা।
  3. একটি দৃশ্যে সরাসরি পৃথক বৈশিষ্ট্য প্রয়োগ করা।
  4. একটি দৃশ্যে একটি শৈলী প্রয়োগ করা হচ্ছে।
  5. ডিফল্ট স্টাইলিং।
  6. ভিউ, অ্যাক্টিভিটি বা আপনার সম্পূর্ণ অ্যাপে একটি থিম প্রয়োগ করা।
  7. নির্দিষ্ট ভিউ-নির্দিষ্ট স্টাইলিং প্রয়োগ করা, যেমন একটি TextView এ একটি TextAppearance সেট করা।

চিত্র 2. একটি span থেকে স্টাইল করা একটি textAppearance থেকে স্টাইলিংকে ওভাররাইড করে।

পাঠ্য উপস্থিতি

শৈলীগুলির সাথে একটি সীমাবদ্ধতা হল আপনি একটি View শুধুমাত্র একটি শৈলী প্রয়োগ করতে পারেন। একটি TextView তে, তবে, আপনি একটি TextAppearance বৈশিষ্ট্যও নির্দিষ্ট করতে পারেন যা একটি শৈলীর অনুরূপ কাজ করে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

<TextView
    ...
    android:textAppearance="@android:style/TextAppearance.Material.Headline"
    android:text="This text is styled via textAppearance!" />

TextAppearance আপনাকে টেক্সট-নির্দিষ্ট স্টাইলিং সংজ্ঞায়িত করতে দেয় যখন অন্য ব্যবহারের জন্য উপলব্ধ একটি View শৈলী ছেড়ে যায়। উল্লেখ্য, যাইহোক, আপনি যদি সরাসরি View বা একটি শৈলীতে কোনো টেক্সট অ্যাট্রিবিউট সংজ্ঞায়িত করেন, সেই মানগুলি TextAppearance মানগুলিকে ওভাররাইড করে।

TextAppearance স্টাইলিং বৈশিষ্ট্যগুলির একটি উপসেট সমর্থন করে যা TextView অফার করে। সম্পূর্ণ অ্যাট্রিবিউট তালিকার জন্য, TextAppearance দেখুন।

কিছু সাধারণ TextView অ্যাট্রিবিউট অন্তর্ভুক্ত নয় যেগুলি হল lineHeight[Multiplier|Extra] , lines , breakStrategy , এবং hyphenationFrequency . TextAppearance অক্ষর স্তরে কাজ করে অনুচ্ছেদ স্তরে নয়, তাই সমগ্র বিন্যাসকে প্রভাবিত করে এমন বৈশিষ্ট্যগুলি সমর্থিত নয়৷

ডিফল্ট থিম কাস্টমাইজ করুন

আপনি যখন অ্যান্ড্রয়েড স্টুডিওর সাথে একটি প্রকল্প তৈরি করেন, তখন এটি আপনার অ্যাপে একটি মেটেরিয়াল ডিজাইন থিম প্রয়োগ করে, যেমনটি আপনার প্রকল্পের styles.xml ফাইলে সংজ্ঞায়িত করা হয়েছে। এই AppTheme শৈলীটি সমর্থন লাইব্রেরি থেকে একটি থিমকে প্রসারিত করে এবং ব্যবহার করা হলে রঙের বৈশিষ্ট্যগুলির জন্য ওভাররাইডগুলি অন্তর্ভুক্ত করে যা কী UI উপাদানগুলির দ্বারা ব্যবহৃত হয়, যেমন অ্যাপ বার এবং ফ্লোটিং অ্যাকশন বোতাম ব্যবহার করা হয়৷ সুতরাং, আপনি প্রদত্ত রঙগুলি আপডেট করে আপনার অ্যাপের রঙের নকশা দ্রুত কাস্টমাইজ করতে পারেন৷

উদাহরণস্বরূপ, আপনার styles.xml ফাইলটি এর মতো দেখাচ্ছে:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

শৈলীর মানগুলি আসলে অন্যান্য রঙের সংস্থানগুলির উল্লেখ, প্রকল্পের res/values/colors.xml ফাইলে সংজ্ঞায়িত করা হয়েছে। যে ফাইলটি আপনি রং পরিবর্তন করতে সম্পাদনা করেন। গতিশীল রঙ এবং অতিরিক্ত কাস্টম রঙের সাথে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে উপাদান ডিজাইনের রঙের ওভারভিউ দেখুন।

একবার আপনি আপনার রঙগুলি জানলে, res/values/colors.xml এ মান আপডেট করুন :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--   Color for the app bar and other primary UI elements. -->
    <color name="colorPrimary">#3F51B5</color>

    <!--   A darker variant of the primary color, used for
           the status bar (on Android 5.0+) and contextual app bars. -->
    <color name="colorPrimaryDark">#303F9F</color>

    <!--   a secondary color for controls like checkboxes and text fields. -->
    <color name="colorAccent">#FF4081</color>
</resources>

তারপরে আপনি যা চান অন্য শৈলীগুলিকে ওভাররাইড করতে পারেন। উদাহরণস্বরূপ, আপনি নিম্নলিখিত হিসাবে কার্যকলাপের পটভূমির রঙ পরিবর্তন করতে পারেন:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
    <item name="android:windowBackground">@color/activityBackground</item>
</style>

আপনি আপনার থিমে ব্যবহার করতে পারেন এমন বৈশিষ্ট্যগুলির একটি তালিকার জন্য, R.styleable.Theme এ বৈশিষ্ট্যগুলির সারণী দেখুন। আপনার লেআউটে ভিউগুলির জন্য শৈলী যোগ করার সময়, আপনি ভিউ ক্লাস রেফারেন্সে "এক্সএমএল অ্যাট্রিবিউটস" টেবিলটি দেখে বৈশিষ্ট্যগুলিও খুঁজে পেতে পারেন। উদাহরণস্বরূপ, সমস্ত ভিউ বেস View ক্লাস থেকে XML অ্যাট্রিবিউট সমর্থন করে।

বেশিরভাগ বৈশিষ্ট্য নির্দিষ্ট ধরনের ভিউতে প্রয়োগ করা হয় এবং কিছু সব ভিউতে প্রযোজ্য। যাইহোক, R.styleable.Theme এ তালিকাভুক্ত কিছু থিম অ্যাট্রিবিউট অ্যাক্টিভিটি উইন্ডোতে প্রযোজ্য, লেআউটের ভিউ নয়। উদাহরণ স্বরূপ, windowBackground উইন্ডোর পটভূমি পরিবর্তন করে এবং windowEnterTransition একটি ট্রানজিশন অ্যানিমেশন সংজ্ঞায়িত করে যখন কার্যকলাপ শুরু হয়। আরও বিশদ বিবরণের জন্য, একটি অ্যানিমেশন ব্যবহার করে একটি কার্যকলাপ শুরু করুন দেখুন।

অ্যান্ড্রয়েড সাপোর্ট লাইব্রেরি অন্যান্য বৈশিষ্ট্যগুলিও প্রদান করে যা আপনি Theme.AppCompat থেকে প্রসারিত আপনার থিম কাস্টমাইজ করতে ব্যবহার করতে পারেন, যেমন পূর্বের উদাহরণে দেখানো colorPrimary অ্যাট্রিবিউট। এগুলো লাইব্রেরির attrs.xml ফাইলে সবচেয়ে ভালো দেখা যায়।

এছাড়াও সমর্থন লাইব্রেরি থেকে বিভিন্ন থিম উপলব্ধ রয়েছে যা আপনি পূর্ববর্তী উদাহরণে দেখানোর পরিবর্তে প্রসারিত করতে চাইতে পারেন। উপলব্ধ থিমগুলি দেখার জন্য সেরা জায়গা হল লাইব্রেরির themes.xml ফাইল

সংস্করণ-নির্দিষ্ট শৈলী যোগ করুন

যদি অ্যান্ড্রয়েডের একটি নতুন সংস্করণ থিম বৈশিষ্ট্যগুলি যোগ করে যা আপনি ব্যবহার করতে চান, আপনি এখনও পুরানো সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ থাকা অবস্থায় সেগুলিকে আপনার থিমে যুক্ত করতে পারেন৷ আপনার যা দরকার তা হল একটি values ডিরেক্টরিতে সংরক্ষিত আরেকটি styles.xml ফাইল যাতে রিসোর্স সংস্করণ কোয়ালিফায়ার রয়েছে:

res/values/styles.xml        # themes for all versions
res/values-v21/styles.xml    # themes for API level 21+ only

যেহেতু values/styles.xml ফাইলের শৈলীগুলি সমস্ত সংস্করণের জন্য উপলব্ধ, values-v21/styles.xml এ আপনার থিমগুলি তাদের উত্তরাধিকারী হতে পারে৷ এর মানে হল যে আপনি একটি "বেস" থিম দিয়ে শুরু করে এবং তারপর আপনার সংস্করণ-নির্দিষ্ট শৈলীতে এটি প্রসারিত করে নকল শৈলী এড়াতে পারেন।

উদাহরণস্বরূপ, Android 5.0 (API স্তর 21) এবং উচ্চতর জন্য উইন্ডো ট্রানজিশন ঘোষণা করতে, আপনাকে নতুন বৈশিষ্ট্যগুলি ব্যবহার করতে হবে৷ সুতরাং, res/values/styles.xml এ আপনার বেস থিম এইরকম দেখতে পারে:

<resources>
    <!-- Base set of styles that apply to all versions. -->
    <style name="BaseAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/primaryColor</item>
        <item name="colorPrimaryDark">@color/primaryTextColor</item>
        <item name="colorAccent">@color/secondaryColor</item>
    </style>

    <!-- Declare the theme name that's actually applied in the manifest file. -->
    <style name="AppTheme" parent="BaseAppTheme" />
</resources>

তারপরে, res/values-v21/styles.xml এ সংস্করণ-নির্দিষ্ট শৈলী যোগ করুন, নিম্নরূপ:

<resources>
    <!-- extend the base theme to add styles available only with API level 21+ -->
    <style name="AppTheme" parent="BaseAppTheme">
        <item name="android:windowActivityTransitions">true</item>
        <item name="android:windowEnterTransition">@android:transition/slide_right</item>
        <item name="android:windowExitTransition">@android:transition/slide_left</item>
    </style>
</resources>

এখন আপনি আপনার ম্যানিফেস্ট ফাইলে AppTheme প্রয়োগ করতে পারেন এবং সিস্টেম প্রতিটি সিস্টেম সংস্করণের জন্য উপলব্ধ শৈলী নির্বাচন করে৷

বিভিন্ন ডিভাইসের জন্য বিকল্প সংস্থান ব্যবহার সম্পর্কে আরও তথ্যের জন্য, বিকল্প সংস্থান সরবরাহ করা দেখুন।

উইজেট শৈলী কাস্টমাইজ করুন

ফ্রেমওয়ার্ক এবং সাপোর্ট লাইব্রেরির প্রতিটি উইজেটের একটি ডিফল্ট শৈলী রয়েছে। উদাহরণস্বরূপ, যখন আপনি সমর্থন লাইব্রেরি থেকে একটি থিম ব্যবহার করে আপনার অ্যাপকে স্টাইল করেন, তখন Widget.AppCompat.Button শৈলী ব্যবহার করে Button একটি উদাহরণ স্টাইল করা হয়। আপনি যদি একটি বোতামে একটি ভিন্ন উইজেট শৈলী প্রয়োগ করতে চান, আপনি আপনার লেআউট ফাইলের style বৈশিষ্ট্যের সাথে তা করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিতগুলি লাইব্রেরির সীমাহীন বোতাম শৈলীতে প্রযোজ্য:

<Button
    style="@style/Widget.AppCompat.Button.Borderless"
    ... />

আপনি যদি সমস্ত বোতামে এই স্টাইলটি প্রয়োগ করতে চান, তাহলে আপনি এটিকে আপনার থিমের buttonStyle স্টাইলে ঘোষণা করতে পারেন:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless</item>
    ...
</style>

আপনি উইজেট শৈলীগুলিকেও প্রসারিত করতে পারেন, ঠিক যেমন অন্য কোনো শৈলী প্রসারিত করেন , এবং তারপর আপনার লেআউট বা থিমে আপনার কাস্টম উইজেট শৈলী প্রয়োগ করুন৷

অতিরিক্ত সম্পদ

থিম এবং শৈলী সম্পর্কে আরও জানতে, নিম্নলিখিত অতিরিক্ত সংস্থানগুলি দেখুন:

ব্লগ পোস্ট