সম্পদ হল অতিরিক্ত ফাইল এবং স্ট্যাটিক কন্টেন্ট যা আপনার কোড ব্যবহার করে, যেমন বিটম্যাপ, লেআউট সংজ্ঞা, ইউজার ইন্টারফেস স্ট্রিং, অ্যানিমেশন নির্দেশাবলী এবং আরও অনেক কিছু।
সর্বদা আপনার কোড থেকে ছবি এবং স্ট্রিং এর মত অ্যাপ রিসোর্সগুলিকে বাহ্যিক করুন, যাতে আপনি সেগুলি স্বাধীনভাবে বজায় রাখতে পারেন৷ এছাড়াও, নির্দিষ্ট ডিভাইস কনফিগারেশনের জন্য বিকল্প সংস্থানগুলিকে বিশেষভাবে নামযুক্ত সংস্থান ডিরেক্টরিতে গোষ্ঠীবদ্ধ করে সরবরাহ করুন। রানটাইমে, Android বর্তমান কনফিগারেশনের উপর ভিত্তি করে উপযুক্ত সংস্থান ব্যবহার করে। উদাহরণস্বরূপ, আপনি স্ক্রীনের আকারের উপর নির্ভর করে বা ভাষার সেটিং এর উপর নির্ভর করে ভিন্ন স্ট্রিং এর উপর নির্ভর করে একটি ভিন্ন UI লেআউট প্রদান করতে চাইতে পারেন।
একবার আপনি আপনার অ্যাপের সংস্থানগুলিকে বাহ্যিক করে নিলে, আপনি আপনার প্রকল্পের R
ক্লাসে তৈরি রিসোর্স আইডিগুলি ব্যবহার করে সেগুলি অ্যাক্সেস করতে পারেন৷ এই নথিটি আপনাকে দেখায় কিভাবে আপনার Android প্রকল্পে সংস্থানগুলিকে গোষ্ঠীভুক্ত করতে হয়৷ এটি আপনাকে নির্দিষ্ট ডিভাইস কনফিগারেশনের জন্য বিকল্প সংস্থানগুলি কীভাবে সরবরাহ করতে হয় এবং তারপরে আপনার অ্যাপ কোড বা অন্যান্য XML ফাইলগুলি থেকে সেগুলি অ্যাক্সেস করতে হয় তাও দেখায়৷
গ্রুপ রিসোর্স প্রকার
আপনার প্রকল্পের res/
ডিরেক্টরির একটি নির্দিষ্ট সাবডিরেক্টরিতে প্রতিটি ধরনের রিসোর্স রাখুন। উদাহরণস্বরূপ, এখানে একটি সাধারণ প্রকল্পের জন্য ফাইলের অনুক্রমটি রয়েছে:
MyProject/ src/ MyActivity.java res/ drawable/ graphic.png layout/ main.xml info.xml mipmap/ icon.png values/ strings.xml
res/
ডিরেক্টরিতে এর সাব-ডিরেক্টরিতে সমস্ত সংস্থান রয়েছে: একটি ইমেজ রিসোর্স, দুটি লেআউট রিসোর্স, লঞ্চার আইকনগুলির জন্য একটি mipmap/
ডিরেক্টরি এবং একটি স্ট্রিং রিসোর্স ফাইল। রিসোর্স ডিরেক্টরির নামগুলি গুরুত্বপূর্ণ এবং সারণি 1 এ বর্ণনা করা হয়েছে।
দ্রষ্টব্য: মিপম্যাপ ফোল্ডারগুলি ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, মিপম্যাপ ডিরেক্টরিতে অ্যাপ আইকন রাখুন দেখুন।
সারণী 1. প্রজেক্ট res/
ডিরেক্টরির ভিতরে সমর্থিত রিসোর্স ডিরেক্টরি।
ডিরেক্টরি | সম্পদের ধরন |
---|---|
animator/ | XML ফাইল যা প্রপার্টি অ্যানিমেশন সংজ্ঞায়িত করে। |
anim/ | XML ফাইল যা টুইন অ্যানিমেশনকে সংজ্ঞায়িত করে। প্রপার্টি অ্যানিমেশনগুলিও এই ডিরেক্টরিতে সংরক্ষণ করা যেতে পারে, তবে animator/ ডিরেক্টরিটি দুটি প্রকারের মধ্যে পার্থক্য করার জন্য সম্পত্তি অ্যানিমেশনের জন্য পছন্দ করা হয়। |
color/ | XML ফাইল যা রঙের একটি রাষ্ট্রীয় তালিকা সংজ্ঞায়িত করে। আরও তথ্যের জন্য, রঙ রাজ্য তালিকা সংস্থান দেখুন। |
drawable/ | বিটম্যাপ ফাইলগুলি (PNG,
আরও তথ্যের জন্য, অঙ্কনযোগ্য সম্পদ দেখুন। |
mipmap/ | বিভিন্ন লঞ্চার আইকন ঘনত্বের জন্য অঙ্কনযোগ্য ফাইল। mipmap/ ফোল্ডার সহ লঞ্চার আইকন পরিচালনার বিষয়ে আরও তথ্যের জন্য, মিপম্যাপ ডিরেক্টরিতে অ্যাপ আইকন রাখুন দেখুন। |
layout/ | XML ফাইল যা একটি ব্যবহারকারী ইন্টারফেস বিন্যাস সংজ্ঞায়িত করে। আরও তথ্যের জন্য, লেআউট সংস্থান দেখুন। |
menu/ | XML ফাইল যা অ্যাপ মেনুকে সংজ্ঞায়িত করে, যেমন একটি বিকল্প মেনু, প্রসঙ্গ মেনু বা সাবমেনু। আরও তথ্যের জন্য, মেনু সংস্থান দেখুন। |
raw/ | নির্বিচারে ফাইল তাদের কাঁচা আকারে সংরক্ষণ করুন. একটি কাঁচা যাইহোক, যদি আপনার মূল ফাইলের নাম এবং ফাইলের অনুক্রমে অ্যাক্সেসের প্রয়োজন হয়, |
values/ | XML ফাইল যাতে সাধারণ মান থাকে, যেমন স্ট্রিং, পূর্ণসংখ্যা এবং রঙ। যেখানে অন্যান্য যেহেতু প্রতিটি সংস্থান তার নিজস্ব XML উপাদান দিয়ে সংজ্ঞায়িত করা হয়েছে, আপনি যা চান ফাইলটির নাম দিতে পারেন এবং একটি ফাইলে বিভিন্ন ধরণের সংস্থান রাখতে পারেন। যাইহোক, স্বচ্ছতার জন্য, আপনি বিভিন্ন ফাইলে অনন্য সম্পদের ধরন রাখতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি এই ডিরেক্টরিতে তৈরি করতে পারেন এমন সংস্থানগুলির জন্য এখানে কিছু ফাইলের নাম কনভেনশন রয়েছে:
আরও তথ্যের জন্য, স্ট্রিং রিসোর্স , স্টাইল রিসোর্স এবং আরও রিসোর্স প্রকার দেখুন। |
xml/ | আরবিট্রারি এক্সএমএল ফাইল যা রানটাইমে Resources.getXML() কল করে পড়া যায়। বিভিন্ন XML কনফিগারেশন ফাইল অবশ্যই এখানে সংরক্ষণ করতে হবে, যেমন একটি অনুসন্ধান কনফিগারেশন । |
font/ | TTF, OTF, বা TTC-এর মতো এক্সটেনশন সহ ফন্ট ফাইল, বা XML ফাইল যাতে <font-family> উপাদান থাকে। সম্পদ হিসাবে ফন্ট সম্পর্কে আরও তথ্যের জন্য, একটি XML সম্পদ হিসাবে একটি ফন্ট যুক্ত করুন দেখুন। |
সতর্কতা: রিসোর্স ফাইলগুলি সরাসরি res/
ডিরেক্টরির মধ্যে সংরক্ষণ করবেন না। এটি একটি কম্পাইলার ত্রুটি সৃষ্টি করে।
স্বতন্ত্র ধরনের সংস্থান সম্পর্কে আরও তথ্যের জন্য, সম্পদের প্রকার ওভারভিউ দেখুন।
সারণী 1-এ সংজ্ঞায়িত সাবডিরেক্টরিতে আপনি যে সংস্থানগুলি সংরক্ষণ করেন তা হল আপনার ডিফল্ট সংস্থান। অর্থাৎ, এই সম্পদগুলি আপনার অ্যাপের জন্য ডিফল্ট ডিজাইন এবং বিষয়বস্তু নির্ধারণ করে। যাইহোক, বিভিন্ন ধরণের Android-চালিত ডিভাইসগুলি বিভিন্ন ধরণের সংস্থানগুলির জন্য কল করতে পারে।
উদাহরণস্বরূপ, অতিরিক্ত স্ক্রিনের জায়গার সুবিধা নিতে আপনি সাধারণ স্ক্রীনের চেয়ে বড় ডিভাইসগুলির জন্য বিভিন্ন লেআউট সংস্থান সরবরাহ করতে পারেন। আপনি ডিভাইসের ভাষা সেটিং এর উপর ভিত্তি করে আপনার ব্যবহারকারী ইন্টারফেসে পাঠ্য অনুবাদ করে এমন বিভিন্ন স্ট্রিং সংস্থানও প্রদান করতে পারেন। বিভিন্ন ডিভাইস কনফিগারেশনের জন্য এই বিভিন্ন সংস্থানগুলি প্রদান করতে, আপনাকে আপনার ডিফল্ট সংস্থানগুলি ছাড়াও বিকল্প সংস্থানগুলি সরবরাহ করতে হবে।
বিকল্প সম্পদ সরবরাহ করুন
বেশিরভাগ অ্যাপ নির্দিষ্ট ডিভাইস কনফিগারেশন সমর্থন করার জন্য বিকল্প সংস্থান প্রদান করে। উদাহরণস্বরূপ, বিভিন্ন পর্দার ঘনত্বের জন্য বিকল্প অঙ্কনযোগ্য সংস্থান এবং বিভিন্ন ভাষার জন্য বিকল্প স্ট্রিং সংস্থান অন্তর্ভুক্ত করুন। রানটাইমে, Android বর্তমান ডিভাইস কনফিগারেশন সনাক্ত করে এবং আপনার অ্যাপের জন্য উপযুক্ত সংস্থানগুলি লোড করে৷
![](https://developer.android.com/static/images/resources/resource_devices_diagram2.png?authuser=4&hl=bn)
চিত্র 1. দুটি ডিভাইস পর্দার আকারের উপর ভিত্তি করে বিভিন্ন লেআউট সংস্থান ব্যবহার করে।
সংস্থানগুলির একটি সেটের জন্য কনফিগারেশন-নির্দিষ্ট বিকল্পগুলি নির্দিষ্ট করতে, নিম্নলিখিতগুলি করুন:
-
<resources_name> - <qualifier>
ফর্মেres/
নামে একটি নতুন ডিরেক্টরি তৈরি করুন।-
<resources_name>
হল সংশ্লিষ্ট ডিফল্ট সম্পদের ডিরেক্টরির নাম (সারণী 1 এ সংজ্ঞায়িত করা হয়েছে)। -
<qualifier>
একটি নাম যা একটি পৃথক কনফিগারেশন নির্দিষ্ট করে যার জন্য এই সম্পদগুলি ব্যবহার করা হবে (সারণী 2 এ সংজ্ঞায়িত)।
আপনি একাধিক
<qualifier>
যোগ করতে পারেন। একটি ড্যাশ সঙ্গে প্রতিটি পৃথক.সতর্কতা: একাধিক কোয়ালিফায়ার যুক্ত করার সময়, আপনাকে অবশ্যই সেগুলিকে একই ক্রমে রাখতে হবে যে ক্রমে সেগুলি সারণী 2-এ তালিকাভুক্ত করা হয়েছে৷ যদি কোয়ালিফায়ারগুলি ভুলভাবে অর্ডার করা হয় তবে সংস্থানগুলি উপেক্ষা করা হয়৷
-
- এই নতুন ডিরেক্টরিতে উপযুক্ত বিকল্প সম্পদ সংরক্ষণ করুন। রিসোর্স ফাইলগুলিকে অবশ্যই ডিফল্ট রিসোর্স ফাইলগুলির মতোই নাম দিতে হবে৷
উদাহরণস্বরূপ, এখানে কিছু ডিফল্ট এবং বিকল্প সংস্থান রয়েছে:
res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png
hdpi
কোয়ালিফায়ার নির্দেশ করে যে সেই ডিরেক্টরির সংস্থানগুলি উচ্চ-ঘনত্বের স্ক্রীন সহ ডিভাইসগুলির জন্য। এই অঙ্কনযোগ্য ডিরেক্টরিগুলির চিত্রগুলি নির্দিষ্ট স্ক্রিনের ঘনত্বের জন্য আকারযুক্ত, তবে ফাইলের নামগুলি ঠিক একই। এইভাবে, আপনি icon.png
বা background.png
ইমেজ রেফারেন্স করতে যে রিসোর্স আইডি ব্যবহার করেন তা সবসময় একই থাকে। Android প্রতিটি রিসোর্সের ভার্সন নির্বাচন করে যা বর্তমান ডিভাইসের সাথে সবচেয়ে ভালো মেলে ডিভাইস কনফিগারেশন তথ্যের সাথে রিসোর্স ডিরেক্টরি নামের কোয়ালিফায়ারের সাথে তুলনা করে।
সতর্কতা: একটি বিকল্প সংস্থান সংজ্ঞায়িত করার সময়, নিশ্চিত করুন যে আপনি একটি ডিফল্ট কনফিগারেশনে সংস্থানটিও সংজ্ঞায়িত করেছেন। অন্যথায়, ডিভাইসটি কনফিগারেশন পরিবর্তন করলে আপনার অ্যাপ রানটাইম ব্যতিক্রমের সম্মুখীন হতে পারে। উদাহরণ স্বরূপ, আপনি যদি শুধুমাত্র values-en
values
নয়, তবে ব্যবহারকারী যখন ডিফল্ট সিস্টেম ভাষা পরিবর্তন করে তখন আপনার অ্যাপটি একটি Resource Not Found
ব্যতিক্রমের সম্মুখীন হতে পারে।
সারণী 2 অগ্রাধিকারের ক্রমে বৈধ কনফিগারেশন যোগ্যতা তালিকাভুক্ত করে। প্রতিটি কোয়ালিফায়ারকে ড্যাশ দিয়ে আলাদা করে আপনি একটি ডিরেক্টরির নামে একাধিক কোয়ালিফায়ার যোগ করতে পারেন। আপনি যদি একটি রিসোর্স ডিরেক্টরির জন্য একাধিক কোয়ালিফায়ার ব্যবহার করেন, তাহলে আপনাকে অবশ্যই সেগুলিকে টেবিলে তালিকাভুক্ত ক্রমে ডিরেক্টরির নামের সাথে যুক্ত করতে হবে৷
সারণি 2. কনফিগারেশন কোয়ালিফায়ার নাম।
কনফিগারেশন | কোয়ালিফায়ার মান | বর্ণনা |
---|---|---|
MCC এবং MNC | উদাহরণ:mcc310
mcc208-mnc00 | মোবাইল কান্ট্রি কোড (MCC), ঐচ্ছিকভাবে ডিভাইসের সিম কার্ড থেকে মোবাইল নেটওয়ার্ক কোড (MNC) অনুসরণ করে। উদাহরণস্বরূপ, যে কোনো ক্যারিয়ারে যদি ডিভাইসটি একটি রেডিও সংযোগ ব্যবহার করে (অর্থাৎ এটি একটি GSM ফোন), MCC এবং MNC মানগুলি সিম কার্ড থেকে আসে৷ আপনি একা MCC ব্যবহার করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপে দেশ-নির্দিষ্ট আইনি সংস্থান অন্তর্ভুক্ত করতে। আপনি যদি শুধুমাত্র ভাষার উপর ভিত্তি করে নির্দিষ্ট করতে চান, তাহলে পরিবর্তে ভাষা, স্ক্রিপ্ট (ঐচ্ছিক), এবং অঞ্চল (ঐচ্ছিক) কোয়ালিফায়ার ব্যবহার করুন। আপনি যদি MCC এবং MNC কোয়ালিফায়ার ব্যবহার করেন, তা যত্ন সহকারে করুন এবং পরীক্ষা করুন যে এটি প্রত্যাশা অনুযায়ী কাজ করে। এছাড়াও কনফিগারেশন ক্ষেত্রগুলি দেখুন |
ভাষা, স্ক্রিপ্ট (ঐচ্ছিক), এবং অঞ্চল (ঐচ্ছিক) | উদাহরণ:en fr en-rUS fr-rFR fr-rCA b+en b+en+US b+es+419 b+zh+Hant b+sr+Latn+RS | ভাষাটিকে একটি দুই-অক্ষরের ISO 639-1 ভাষা কোড দ্বারা সংজ্ঞায়িত করা হয়, ঐচ্ছিকভাবে একটি দুই-অক্ষরের ISO 3166-1-আলফা-2 অঞ্চল কোড (ছোট হাতের কোডগুলি কেস-সংবেদনশীল নয় ৷ Android 7.0 (API স্তর 24) BCP 47 ভাষা ট্যাগগুলির জন্য সমর্থন চালু করেছে, যা আপনি ভাষা- এবং অঞ্চল-নির্দিষ্ট সংস্থানগুলির যোগ্যতা অর্জন করতে ব্যবহার করতে পারেন৷ একটি ভাষা ট্যাগ এক বা একাধিক সাবট্যাগের একটি ক্রম থেকে গঠিত, যার প্রতিটি সামগ্রিক ট্যাগ দ্বারা চিহ্নিত ভাষার পরিসরকে পরিমার্জিত বা সংকুচিত করে। ভাষা ট্যাগ সম্পর্কে আরও তথ্যের জন্য, ভাষা সনাক্তকরণের জন্য ট্যাগ দেখুন। একটি BCP 47 ভাষা ট্যাগ ব্যবহার করতে, ব্যবহারকারীরা সিস্টেম সেটিংসে তাদের ভাষা পরিবর্তন করলে আপনার অ্যাপের জীবনের সময় ভাষা ট্যাগ পরিবর্তন হতে পারে। রানটাইম চলাকালীন এটি কীভাবে আপনার অ্যাপকে প্রভাবিত করতে পারে সে সম্পর্কে তথ্যের জন্য, কনফিগারেশন পরিবর্তনগুলি পরিচালনা করুন দেখুন। অন্যান্য ভাষার জন্য আপনার অ্যাপ স্থানীয়করণের সম্পূর্ণ গাইডের জন্য, আপনার অ্যাপ স্থানীয়করণ দেখুন। এছাড়াও |
লেআউট দিক | ldrtl ldltr | আপনার অ্যাপের লেআউট দিক। এটি যেকোন সম্পদের ক্ষেত্রে প্রযোজ্য হতে পারে, যেমন লেআউট, অঙ্কনযোগ্য বা মান। উদাহরণস্বরূপ, আপনি যদি আরবি ভাষার জন্য একটি নির্দিষ্ট লেআউট এবং ফার্সি বা হিব্রু মত অন্য কোনো "ডান-থেকে-বাম" ভাষার জন্য একটি সাধারণ বিন্যাস প্রদান করতে চান, তাহলে আপনি নিম্নলিখিতগুলির মতো ডিরেক্টরি ব্যবহার করুন: দ্রষ্টব্য: আপনার অ্যাপের জন্য ডান-থেকে-বাম লেআউট বৈশিষ্ট্যগুলি সক্ষম করতে, আপনাকে অবশ্যই API স্তর 17 এ যোগ করা হয়েছে। |
সবচেয়ে ছোট প্রস্থ | sw<N>dp উদাহরণ: sw320dp sw600dp sw720dp ইত্যাদি | একটি অ্যাপে উপলব্ধ স্ক্রীন এলাকার সংক্ষিপ্ত মাত্রা। বিশেষ করে, অ্যাপ উইন্ডোর উদাহরণস্বরূপ, যদি আপনার লেআউটের প্রয়োজন হয় যে তার স্ক্রীন এলাকার ক্ষুদ্রতম মাত্রা সর্বদা কমপক্ষে 600 ডিপি হতে হবে, তাহলে আপনি একটি সাধারণ স্ক্রীনের আকার নির্ধারণ করতে সবচেয়ে ছোট প্রস্থ ব্যবহার করা দরকারী কারণ প্রস্থ প্রায়শই একটি লেআউট ডিজাইনের ড্রাইভিং ফ্যাক্টর। একটি UI প্রায়শই উল্লম্বভাবে স্ক্রোল করে, তবে অনুভূমিকভাবে ন্যূনতম স্থানের প্রয়োজনে মোটামুটি কঠিন সীমাবদ্ধতা রয়েছে। হ্যান্ডসেটের জন্য ওয়ান-পেন লেআউট বা ট্যাবলেটের জন্য মাল্টিপেন লেআউট ব্যবহার করা হবে কিনা তা নির্ধারণের জন্য উপলব্ধ প্রস্থও মূল বিষয়। সুতরাং, আপনি সম্ভবত প্রতিটি ডিভাইসে সবচেয়ে ছোট সম্ভাব্য প্রস্থের বিষয়ে সবচেয়ে বেশি যত্নশীল। একটি ডিভাইসের ক্ষুদ্রতম প্রস্থ স্ক্রীন সজ্জা এবং সিস্টেম UI বিবেচনা করে। উদাহরণস্বরূপ, যদি ডিভাইসটির স্ক্রিনে স্থায়ী UI উপাদান থাকে যা ক্ষুদ্রতম প্রস্থের অক্ষ বরাবর স্থানের জন্য হিসাব করে, সিস্টেমটি ক্ষুদ্রতম প্রস্থটিকে প্রকৃত স্ক্রীনের আকারের চেয়ে ছোট বলে ঘোষণা করে, কারণ সেগুলি আপনার UI এর জন্য স্ক্রীন পিক্সেল উপলব্ধ নয়। . সাধারণ পর্দার আকারের জন্য আপনি এখানে কিছু মান ব্যবহার করতে পারেন:
যখন আপনার অ্যাপ্লিকেশানটি API স্তর 13 এ যোগ করা হয়েছে। এছাড়াও এই কোয়ালিফায়ার ব্যবহার করে বিভিন্ন স্ক্রিনের জন্য ডিজাইন করার বিষয়ে আরও তথ্যের জন্য, দেখুন প্রতিক্রিয়াশীল/অভিযোজিত নকশা দেখুন । |
উপলব্ধ প্রস্থ এবং উচ্চতা | w<N>dp h<N>dp উদাহরণ: w720dp w1024dp h720dp h1024dp ইত্যাদি | ন্যূনতম উপলব্ধ স্ক্রিনের প্রস্থ বা উচ্চতা নির্দিষ্ট করে ( একটি মাল্টিপেন লেআউট ব্যবহার করবেন কিনা তা নির্ধারণের জন্য উপলব্ধ প্রস্থ এবং উচ্চতা প্রায়শই উপযোগী হয়, কারণ এমনকি একটি ট্যাবলেট ডিভাইসেও আপনি প্রায়শই পোর্ট্রেট ওরিয়েন্টেশনের জন্য একই মাল্টিপেন লেআউট চান না যেমনটি আপনি ল্যান্ডস্কেপের জন্য করেন। সুতরাং, আপনি স্ক্রীনের আকার এবং ওরিয়েন্টেশন কোয়ালিফায়ার উভয়ই একসাথে ব্যবহার করার পরিবর্তে লেআউটের জন্য প্রয়োজনীয় ন্যূনতম প্রস্থ এবং/অথবা উচ্চতা নির্দিষ্ট করতে এগুলি ব্যবহার করতে পারেন। যখন আপনার অ্যাপ এই কনফিগারেশনের জন্য বিভিন্ন মান সহ একাধিক রিসোর্স ডিরেক্টরি প্রদান করে, তখন সিস্টেমটি ডিভাইসের বর্তমান স্ক্রীন প্রস্থের (অতিরিক্ত ছাড়া) সবচেয়ে কাছের একটি ব্যবহার করে। 0 এর মান সহ অনির্দিষ্ট উচ্চতা এবং প্রস্থের প্রকৃত পর্দার উচ্চতা এবং নির্দিষ্ট উচ্চতার মধ্যে পার্থক্যের সাথে প্রকৃত স্ক্রীনের প্রস্থ এবং নির্দিষ্ট প্রস্থের পার্থক্য যোগ করে এর নিকটতম নির্ধারণ করা হয়। মানগুলি উইন্ডো ইনসেট দ্বারা দখলকৃত এলাকা বাদ দেয়, তাই যদি ডিভাইসটির ডিসপ্লের প্রান্তে অবিচ্ছিন্ন UI উপাদান থাকে, তাহলে প্রস্থ এবং উচ্চতার মান বাস্তব স্ক্রীনের মাত্রার চেয়ে ছোট হয়, এমনকি যখন অ্যাপটি কিছু উল্লম্ব স্ক্রিনের সাজসজ্জা যা স্থির নয় (যেমন একটি ফোন স্ট্যাটাস বার যা পূর্ণ স্ক্রীনে লুকিয়ে রাখা যায়) এখানে হিসাব করা হয় না , বা শিরোনাম বার বা অ্যাকশন বারের মতো উইন্ডো সজ্জাও নেই, তাই অ্যাপগুলিকে মোকাবেলা করার জন্য প্রস্তুত থাকতে হবে তারা নির্দিষ্ট করার চেয়ে কিছুটা ছোট স্থান। দ্রষ্টব্য: সিস্টেমটি প্রস্থ এবং উচ্চতা উভয় ক্ষেত্রেই মেলে এমন সংস্থান বেছে নেয়। তাই একটি সংস্থান যা উভয়কে নির্দিষ্ট করে একটির চেয়ে দৃঢ়ভাবে পছন্দ করা হয় যা শুধুমাত্র একটি বা অন্যটিকে নির্দিষ্ট করে। উদাহরণস্বরূপ, যদি প্রকৃত স্ক্রিনটি 720 dp চওড়া 1280 dp উচ্চ হয় এবং একটি সংস্থান w720dp এর সাথে যোগ্য হয় এবং অন্যটি w700dp-h1200dp হিসাবে যোগ্য হয়, তবে পরবর্তীটি বেছে নেওয়া হয় যদিও পূর্ববর্তীটি এটি যা নির্দিষ্ট করে তার সাথে সঠিক মিল। API স্তর 13 এ যোগ করা হয়েছে। এছাড়াও এই কোয়ালিফায়ার ব্যবহার করে বিভিন্ন স্ক্রিনের জন্য ডিজাইন করার বিষয়ে আরও তথ্যের জন্য, দেখুন প্রতিক্রিয়াশীল/অভিযোজিত নকশা দেখুন । |
পর্দার আকার | small normal large xlarge |
দ্রষ্টব্য: একটি মাপ কোয়ালিফায়ার ব্যবহার করা বোঝায় না যে সংস্থানগুলি শুধুমাত্র সেই আকারের পর্দার জন্য। আপনি যদি বর্তমান ডিভাইস কনফিগারেশনের সাথে ভালোভাবে মেলে এমন কোয়ালিফায়ারগুলির সাথে বিকল্প সংস্থানগুলি প্রদান না করেন, তাহলে সিস্টেমটি সর্বোত্তম মেলে যে কোনও সংস্থান ব্যবহার করতে পারে৷ সতর্কতা: যদি আপনার সমস্ত সংস্থান বর্তমান স্ক্রিনের থেকে বড় আকারের কোয়ালিফায়ার ব্যবহার করে, তবে সিস্টেম সেগুলি ব্যবহার করে না এবং রানটাইমে আপনার অ্যাপ ক্র্যাশ হয়ে যায়। এটি ঘটে, উদাহরণস্বরূপ, যদি সমস্ত লেআউট সংস্থান API স্তর 4 এ যোগ করা হয়েছে। এছাড়াও আরও তথ্যের জন্য, স্ক্রীন সামঞ্জস্য ওভারভিউ দেখুন। |
পর্দার দিক | long notlong |
API স্তর 4 এ যোগ করা হয়েছে। এটি সম্পূর্ণরূপে স্ক্রিনের আকৃতির অনুপাতের উপর ভিত্তি করে (একটি এছাড়াও |
গোলাকার পর্দা | round notround |
API স্তর 23 এ যোগ করা হয়েছে। এছাড়াও |
ওয়াইড কালার গামুট | widecg nowidecg |
API স্তর 26 এ যোগ করা হয়েছে। এছাড়াও |
হাই ডায়নামিক রেঞ্জ (HDR) | highdr lowdr |
API স্তর 26 এ যোগ করা হয়েছে। এছাড়াও |
স্ক্রীন অভিযোজন | port land |
ব্যবহারকারী যদি স্ক্রিন ঘোরায় তবে এটি আপনার অ্যাপের জীবনের সময় পরিবর্তিত হতে পারে। রানটাইম চলাকালীন এটি কীভাবে আপনার অ্যাপকে প্রভাবিত করে সে সম্পর্কে তথ্যের জন্য, কনফিগারেশন পরিবর্তনগুলি পরিচালনা করুন দেখুন। এছাড়াও |
UI মোড | car desk television appliance watch vrheadset |
API লেভেল 8 এ যোগ করা হয়েছে; API 13-এ টেলিভিশন যুক্ত করা হয়েছে; API 20 এ ঘড়ি যোগ করা হয়েছে। একটি ডকের মধ্যে ডিভাইস ঢোকানো বা সরানো হলে আপনার অ্যাপ কীভাবে প্রতিক্রিয়া জানাতে পারে সে সম্পর্কে তথ্যের জন্য, ডকিং অবস্থা নির্ধারণ এবং নিরীক্ষণ পড়ুন এবং টাইপ করুন ৷ ব্যবহারকারী ডিভাইসটিকে একটি ডকে রাখলে এটি আপনার অ্যাপের জীবনের সময় পরিবর্তিত হতে পারে। আপনি |
নাইট মোড | night notnight |
API স্তর 8 এ যোগ করা হয়েছে। নাইট মোড অটো মোডে (ডিফল্ট) রেখে দিলে আপনার অ্যাপের জীবনের সময় এটি পরিবর্তন হতে পারে, সেক্ষেত্রে দিনের সময়ের উপর ভিত্তি করে মোড পরিবর্তিত হয়। আপনি |
স্ক্রীন পিক্সেল ঘনত্ব (dpi) | ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi anydpi nnn dpi |
ছয়টি প্রাথমিক ঘনত্বের মধ্যে একটি 3:4:6:8:12:16 স্কেলিং অনুপাত রয়েছে (tvdpi ঘনত্ব উপেক্ষা করে)। সুতরাং, ldpi-এ একটি 9x9 বিটম্যাপ হল mdpi-এ 12x12, hdpi-এ 18x18, xhdpi-এ 24x24, ইত্যাদি। দ্রষ্টব্য: একটি ঘনত্ব কোয়ালিফায়ার ব্যবহার করা বোঝায় না যে সংস্থানগুলি শুধুমাত্র সেই ঘনত্বের পর্দার জন্য। আপনি যদি বর্তমান ডিভাইস কনফিগারেশনের সাথে আরও ভালোভাবে মেলে এমন কোয়ালিফায়ারগুলির সাথে বিকল্প সংস্থান প্রদান না করেন, তাহলে সিস্টেমটি সর্বোত্তম মেলে যেটি সম্পদ ব্যবহার করে৷ বিভিন্ন স্ক্রীনের ঘনত্ব কীভাবে পরিচালনা করবেন এবং বর্তমান ঘনত্বের সাথে মানানসই করার জন্য Android কীভাবে আপনার বিটম্যাপগুলিকে স্কেল করতে পারে সে সম্পর্কে আরও তথ্যের জন্য, স্ক্রীন সামঞ্জস্যের ওভারভিউ দেখুন। |
টাচস্ক্রিন প্রকার | notouch finger |
এছাড়াও |
কীবোর্ড প্রাপ্যতা | keysexposed keyshidden keyssoft |
আপনি যদি ব্যবহারকারী যদি একটি হার্ডওয়্যার কীবোর্ড খোলে তবে এটি আপনার অ্যাপের জীবনের সময় পরিবর্তিত হতে পারে। রানটাইম চলাকালীন এটি কীভাবে আপনার অ্যাপকে প্রভাবিত করে সে সম্পর্কে তথ্যের জন্য, কনফিগারেশন পরিবর্তনগুলি পরিচালনা করুন দেখুন। এছাড়াও কনফিগারেশন ক্ষেত্রগুলি দেখুন |
প্রাথমিক পাঠ্য ইনপুট পদ্ধতি | nokeys qwerty 12key |
এছাড়াও |
নেভিগেশন কী উপলব্ধতা | navexposed navhidden |
ব্যবহারকারী নেভিগেশন কীগুলি প্রকাশ করলে এটি আপনার অ্যাপের জীবনের সময় পরিবর্তন হতে পারে। রানটাইম চলাকালীন এটি কীভাবে আপনার অ্যাপকে প্রভাবিত করে সে সম্পর্কে তথ্যের জন্য, কনফিগারেশন পরিবর্তনগুলি পরিচালনা করুন দেখুন। এছাড়াও |
প্রাথমিক নন-টাচ নেভিগেশন পদ্ধতি | nonav dpad trackball wheel |
এছাড়াও |
প্ল্যাটফর্ম সংস্করণ (API স্তর) | উদাহরণ:v3 v4 v7 ইত্যাদি | ডিভাইস দ্বারা সমর্থিত API স্তর। উদাহরণস্বরূপ, API স্তর 1 এর জন্য |
দ্রষ্টব্য: অ্যান্ড্রয়েডের সব সংস্করণ সব কোয়ালিফায়ার সমর্থন করে না। একটি নতুন কোয়ালিফায়ার ব্যবহার করে প্ল্যাটফর্ম সংস্করণ কোয়ালিফায়ারকে অস্পষ্টভাবে যুক্ত করে যাতে পুরানো ডিভাইসগুলি এটি উপেক্ষা করতে পারে। উদাহরণস্বরূপ, একটি w600dp
কোয়ালিফায়ার ব্যবহার করলে স্বয়ংক্রিয়ভাবে v13
কোয়ালিফায়ার অন্তর্ভুক্ত হয়, কারণ উপলব্ধ-প্রস্থ কোয়ালিফায়ার API স্তর 13-এ নতুন ছিল। যেকোনো সমস্যা এড়াতে, সর্বদা ডিফল্ট সংস্থানগুলির একটি সেট অন্তর্ভুক্ত করুন ( কোনও যোগ্যতা নেই এমন সংস্থানগুলির একটি সেট)। আরও তথ্যের জন্য, সংস্থানগুলির সাথে সর্বোত্তম ডিভাইসের সামঞ্জস্য প্রদান সম্পর্কে বিভাগটি দেখুন৷
কোয়ালিফায়ার নামের নিয়ম
এখানে কনফিগারেশন কোয়ালিফায়ার নাম ব্যবহার সম্পর্কে কিছু নিয়ম আছে:
- আপনি ড্যাশ দ্বারা পৃথক করা সম্পদের একক সেটের জন্য একাধিক যোগ্যতা নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ, ল্যান্ডস্কেপ ওরিয়েন্টেশনে US-ইংরেজি ডিভাইসের ক্ষেত্রে
drawable-en-rUS-land
প্রযোজ্য। - যোগ্যতা সারণী 2 এ তালিকাভুক্ত ক্রমানুসারে হতে হবে।
- ভুল:
drawable-hdpi-port/
- সঠিক:
drawable-port-hdpi/
- ভুল:
- বিকল্প সম্পদ ডিরেক্টরি নেস্ট করা যাবে না। উদাহরণস্বরূপ, আপনার কাছে
res/drawable/drawable-en/
থাকতে পারে না। - মানগুলি কেস-সংবেদনশীল। কেস-সংবেদনশীল ফাইল সিস্টেমে সমস্যা এড়াতে রিসোর্স কম্পাইলার প্রক্রিয়াকরণের আগে ডিরেক্টরির নামগুলিকে ছোট হাতের অক্ষরে রূপান্তর করে। নামের কোনো ক্যাপিটালাইজেশন শুধুমাত্র পঠনযোগ্যতা সুবিধার জন্য.
- প্রতিটি কোয়ালিফায়ার টাইপের জন্য শুধুমাত্র একটি মান সমর্থিত। উদাহরণস্বরূপ, যদি আপনি স্পেন এবং ফ্রান্সের জন্য একই অঙ্কনযোগ্য ফাইলগুলি ব্যবহার করতে চান তবে আপনার কাছে
drawable-es-fr/
নামে একটি ডিরেক্টরি থাকতে পারে না । পরিবর্তে, আপনার দুটি রিসোর্স ডিরেক্টরি প্রয়োজন, যেমনdrawable-es/
এবংdrawable-fr/
, যাতে উপযুক্ত ফাইল থাকে। যাইহোক, আপনাকে আসলে উভয় অবস্থানে ফাইলগুলি নকল করতে হবে না। পরিবর্তে, আপনি একটি সম্পদের একটি উপনাম তৈরি করতে পারেন, যেমন উপনাম সম্পদ তৈরি করুন বিভাগে বর্ণিত হয়েছে।
আপনি এই কোয়ালিফায়ারগুলির সাথে নামযুক্ত ডিরেক্টরিগুলিতে বিকল্প সংস্থানগুলি সংরক্ষণ করার পরে, বর্তমান ডিভাইস কনফিগারেশনের উপর ভিত্তি করে Android স্বয়ংক্রিয়ভাবে আপনার অ্যাপে সংস্থানগুলি প্রয়োগ করে৷ প্রতিবার একটি রিসোর্স অনুরোধ করা হলে, Android বিকল্প রিসোর্স ডিরেক্টরিগুলির জন্য চেক করে যাতে অনুরোধ করা রিসোর্স ফাইল থাকে, তারপর সেরা-মেলা রিসোর্স খুঁজে পায় ।
যদি কোনও নির্দিষ্ট ডিভাইস কনফিগারেশনের সাথে মেলে এমন কোনও বিকল্প সংস্থান না থাকে, তবে Android সংশ্লিষ্ট ডিফল্ট সংস্থানগুলি ব্যবহার করে—একটি নির্দিষ্ট সংস্থান প্রকারের জন্য সংস্থানগুলির সেট যা কনফিগারেশন যোগ্যতা অন্তর্ভুক্ত করে না।
উপনাম সম্পদ তৈরি করুন
যখন আপনার কাছে এমন একটি সংস্থান থাকে যা আপনি একাধিক ডিভাইস কনফিগারেশনের জন্য ব্যবহার করতে চান কিন্তু আপনি এটি একটি ডিফল্ট সংস্থান হিসাবে সরবরাহ করতে চান না, তখন আপনাকে একই সংস্থান একাধিক বিকল্প সংস্থান ডিরেক্টরিতে রাখতে হবে না৷ পরিবর্তে, আপনি একটি বিকল্প রিসোর্স তৈরি করতে পারেন যা আপনার ডিফল্ট রিসোর্স ডিরেক্টরিতে সংরক্ষিত রিসোর্সের উপনাম হিসেবে কাজ করে।
দ্রষ্টব্য: সমস্ত সংস্থান এমন একটি পদ্ধতি অফার করে না যার মাধ্যমে আপনি অন্য সংস্থানের একটি উপনাম তৈরি করতে পারেন। বিশেষ করে, xml/
ডিরেক্টরিতে অ্যানিমেশন, মেনু, কাঁচা এবং অন্যান্য অনির্দিষ্ট সংস্থানগুলি এই বৈশিষ্ট্যটি অফার করে না।
উদাহরণস্বরূপ, কল্পনা করুন আপনার কাছে একটি অ্যাপ আইকন রয়েছে, icon.png
এবং বিভিন্ন লোকেলের জন্য এটির একটি অনন্য সংস্করণ প্রয়োজন৷ যাইহোক, দুটি লোকেল, ইংরেজি-কানাডিয়ান এবং ফ্রেঞ্চ-কানাডিয়ান, একই সংস্করণ ব্যবহার করতে হবে। আপনাকে ইংরেজি-কানাডিয়ান এবং ফ্রেঞ্চ-কানাডিয়ান উভয়ের জন্য রিসোর্স ডিরেক্টরিতে একই চিত্র অনুলিপি করতে হবে না। পরিবর্তে, আপনি icon.png
ছাড়া অন্য যেকোন নাম ব্যবহার করে উভয়ের জন্য ব্যবহৃত ইমেজটি সংরক্ষণ করতে পারেন, যেমন icon_ca.png
, এবং এটিকে ডিফল্ট res/drawable/
ডিরেক্টরিতে রাখতে পারেন। তারপর res/drawable-en-rCA/
এবং res/drawable-fr-rCA/
এ একটি icon.xml
ফাইল তৈরি করুন যা <bitmap>
উপাদান ব্যবহার করে icon_ca.png
রিসোর্সকে নির্দেশ করে। এটি আপনাকে PNG ফাইলের মাত্র একটি সংস্করণ এবং দুটি ছোট XML ফাইল সংরক্ষণ করতে দেয় যা এটি নির্দেশ করে। বিস্তারিত জানার জন্য নিম্নলিখিত বিভাগে উদাহরণ দেখুন.
অঙ্কনযোগ্য
একটি বিদ্যমান অঙ্কনযোগ্য একটি উপনাম তৈরি করতে, <drawable>
উপাদানটি ব্যবহার করুন:
<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="icon">@drawable/icon_ca</drawable> </resources>
আপনি যদি এই ফাইলটিকে একটি বিকল্প রিসোর্স ডিরেক্টরিতে icon.xml
হিসাবে সংরক্ষণ করেন, যেমন res/values-en-rCA/
, এটি একটি রিসোর্সে সংকলিত হয় যা আপনি R.drawable.icon
হিসাবে উল্লেখ করতে পারেন, কিন্তু আসলে এটির জন্য একটি উপনাম R.drawable.icon_ca
রিসোর্স, যা res/drawable/
এ সংরক্ষিত হয়।
লেআউট
একটি বিদ্যমান লেআউটের একটি উপনাম তৈরি করতে, একটি <merge>
এ মোড়ানো <include>
উপাদানটি ব্যবহার করুন:
<?xml version="1.0" encoding="utf-8"?> <merge> <include layout="@layout/main_ltr"/> </merge>
আপনি যদি এই ফাইলটিকে main.xml
হিসাবে সংরক্ষণ করেন, তাহলে এটি একটি সংস্থানে সংকলিত হয় যা আপনি R.layout.main
হিসাবে উল্লেখ করতে পারেন, কিন্তু আসলে এটি R.layout.main_ltr
সংস্থানের একটি উপনাম।
স্ট্রিং এবং অন্যান্য সাধারণ মান
একটি বিদ্যমান স্ট্রিংয়ের একটি উপনাম তৈরি করতে, নতুন স্ট্রিংয়ের মান হিসাবে পছন্দসই স্ট্রিংয়ের রিসোর্স আইডি ব্যবহার করুন:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello</string> <string name="hi">@string/hello</string> </resources>
R.string.hi
রিসোর্স এখন R.string.hello
এর একটি উপনাম।
অন্যান্য সাধারণ মান একইভাবে কাজ করে, যেমন রং:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="red">#f00</color> <color name="highlight">@color/red</color> </resources>
আপনার অ্যাপ সম্পদ অ্যাক্সেস করুন
একবার আপনি আপনার অ্যাপ্লিকেশনে একটি সংস্থান প্রদান করলে, আপনি এটির সংস্থান আইডি উল্লেখ করে এটি প্রয়োগ করতে পারেন। সমস্ত রিসোর্স আইডি আপনার প্রোজেক্টের R
ক্লাসে সংজ্ঞায়িত করা হয়েছে, যা aapt
টুল স্বয়ংক্রিয়ভাবে তৈরি করে।
আপনার অ্যাপ্লিকেশন কম্পাইল করা হলে, aapt
R
ক্লাস তৈরি করে, যেটিতে আপনার res/
ডিরেক্টরির সমস্ত সংস্থানের জন্য রিসোর্স আইডি রয়েছে। প্রতিটি ধরনের রিসোর্সের জন্য একটি R
সাবক্লাস আছে, যেমন R.drawable
সমস্ত অঙ্কনযোগ্য সম্পদের জন্য। এবং এই ধরণের প্রতিটি সংস্থানের জন্য, একটি স্ট্যাটিক পূর্ণসংখ্যা রয়েছে, উদাহরণস্বরূপ, R.drawable.icon
। এই পূর্ণসংখ্যা হল রিসোর্স আইডি যা আপনি আপনার রিসোর্স পুনরুদ্ধার করতে ব্যবহার করতে পারেন।
যদিও R
ক্লাস হল যেখানে রিসোর্স আইডি নির্দিষ্ট করা আছে, আপনাকে রিসোর্স আইডি আবিষ্কার করতে সেখানে দেখার দরকার নেই। একটি রিসোর্স আইডি সর্বদা নিম্নলিখিতগুলি দ্বারা গঠিত হয়:
- রিসোর্স টাইপ : প্রতিটি রিসোর্সকে একটি "টাইপ"-এ গোষ্ঠীভুক্ত করা হয়, যেমন
string
,drawable
এবংlayout
। বিভিন্ন ধরনের সম্পর্কে আরও তথ্যের জন্য, সম্পদের প্রকার ওভারভিউ দেখুন। - রিসোর্স নাম , যা হয় এক্সটেনশন বাদ দিয়ে ফাইলের নাম অথবা XML
android:name
অ্যাট্রিবিউটের মান, যদি রিসোর্সটি একটি সাধারণ মান হয়, যেমন একটি স্ট্রিং।
আপনি একটি সংস্থান অ্যাক্সেস করতে পারেন এমন দুটি উপায় রয়েছে:
- কোডে: আপনার
R
ক্লাসের একটি সাবক্লাস থেকে স্ট্যাটিক পূর্ণসংখ্যা ব্যবহার করা, যেমন:R.string.hello
string
হ'ল রিসোর্স টাইপ এবংhello
হ'ল রিসোর্সের নাম। অনেকগুলি অ্যান্ড্রয়েড এপিআই রয়েছে যা আপনি যখন এই ফর্ম্যাটে কোনও রিসোর্স আইডি সরবরাহ করেন তখন আপনার সংস্থানগুলি অ্যাক্সেস করতে পারে। আরও তথ্যের জন্য, কোড বিভাগে অ্যাক্সেস রিসোর্সগুলি দেখুন। - এক্সএমএলে: একটি বিশেষ এক্সএমএল সিনট্যাক্স ব্যবহার করে যা আপনার
R
শ্রেণিতে সংজ্ঞায়িত রিসোর্স আইডির সাথে সম্পর্কিত, যেমন:@string/hello
string
হ'ল রিসোর্স টাইপ এবংhello
হ'ল রিসোর্সের নাম। আপনি এই সিনট্যাক্সটি একটি এক্সএমএল রিসোর্সে যে কোনও জায়গায় ব্যবহার করতে পারেন যেখানে আপনি কোনও সংস্থান সরবরাহ করেন এমন কোনও মান আশা করা যায়। আরও তথ্যের জন্য, এক্সএমএল বিভাগ থেকে অ্যাক্সেস সংস্থানগুলি দেখুন।
কোডে সংস্থান অ্যাক্সেস করুন
আপনি পদ্ধতি প্যারামিটার হিসাবে রিসোর্স আইডি পাস করে কোডে একটি সংস্থান ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি setImageResource()
ব্যবহার করে res/drawable/myimage.png
সংস্থানটি ব্যবহার করতে একটি ImageView
সেট করতে পারেন:
কোটলিন
val imageView = findViewById(R.id.myimageview) as ImageView imageView.setImageResource(R.drawable.myimage)
জাভা
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
আপনি Resources
পদ্ধতিগুলি ব্যবহার করে পৃথক সংস্থানগুলিও পুনরুদ্ধার করতে পারেন, যা আপনি getResources()
এর সাথে একটি উদাহরণ পেতে পারেন।
সিনট্যাক্স
কোডে একটি সংস্থান উল্লেখ করার জন্য এখানে বাক্য গঠন:
[<package_name>.]R.<resource_type>.<resource_name>
-
<package_name>
সেই প্যাকেজের নাম যেখানে সংস্থানটি অবস্থিত (আপনার নিজের প্যাকেজ থেকে সংস্থানগুলি উল্লেখ করার সময় প্রয়োজন হয় না)। -
<resource_type>
> রিসোর্স ধরণের জন্যR
সাবক্লাস। -
<resource_name>
হয় এক্সটেনশন ছাড়াই রিসোর্স ফাইলের নাম বাandroid:name
বৈশিষ্ট্যযুক্ত মান।
প্রতিটি সংস্থান প্রকার এবং সেগুলি কীভাবে উল্লেখ করবেন সে সম্পর্কে আরও তথ্যের জন্য, রিসোর্স প্রকারগুলি ওভারভিউ দেখুন।
কেস ব্যবহার করুন
এমন অনেকগুলি পদ্ধতি রয়েছে যা একটি রিসোর্স আইডি প্যারামিটার গ্রহণ করে এবং আপনি Resources
পদ্ধতি ব্যবহার করে সংস্থানগুলি পুনরুদ্ধার করতে পারেন। আপনি Context.getResources()
ব্যবহার করে Resources
একটি উদাহরণ পেতে পারেন।
কোডে সংস্থানগুলি অ্যাক্সেস করার কয়েকটি উদাহরণ এখানে রয়েছে:
কোটলিন
// Load a background for the current screen from a drawable resource. window.setBackgroundDrawableResource(R.drawable.my_background_image) // Set the Activity title by getting a string from the Resources object, because // this method requires a CharSequence rather than a resource ID. window.setTitle(resources.getText(R.string.main_title)) // Load a custom layout for the current screen. setContentView(R.layout.main_screen) // Set a slide in animation by getting an Animation from the Resources object. flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)) // Set the text on a TextView object using a resource ID. val msgTextView = findViewById(R.id.msg) as TextView msgTextView.setText(R.string.hello_message)
জাভা
// Load a background for the current screen from a drawable resource. getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ; // Set the Activity title by getting a string from the Resources object, because // this method requires a CharSequence rather than a resource ID. getWindow().setTitle(getResources().getText(R.string.main_title)); // Load a custom layout for the current screen. setContentView(R.layout.main_screen); // Set a slide in animation by getting an Animation from the Resources object. flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)); // Set the text on a TextView object using a resource ID. TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello_message);
সতর্কতা: হাত দিয়ে R.java
ফাইলটি সংশোধন করবেন না। আপনার প্রকল্পটি সংকলিত হলে এটি aapt
সরঞ্জাম দ্বারা উত্পাদিত হয়। পরের বার আপনি সংকলন করার পরে কোনও পরিবর্তন ওভাররাইড করা হবে।
এক্সএমএল থেকে সংস্থান অ্যাক্সেস করুন
আপনি বিদ্যমান সংস্থার রেফারেন্স ব্যবহার করে কিছু এক্সএমএল বৈশিষ্ট্য এবং উপাদানগুলির জন্য মানগুলি সংজ্ঞায়িত করতে পারেন। আপনার উইজেটগুলির জন্য স্ট্রিং এবং চিত্র সরবরাহ করতে আপনি প্রায়শই লেআউট ফাইল তৈরি করার সময় এটি করেন।
উদাহরণস্বরূপ, আপনি যদি আপনার বিন্যাসে একটি Button
যুক্ত করেন তবে বোতামের পাঠ্যের জন্য একটি স্ট্রিং রিসোর্স ব্যবহার করুন:
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/submit" />
সিনট্যাক্স
একটি এক্সএমএল রিসোর্সে একটি সংস্থান উল্লেখ করার জন্য এখানে বাক্য গঠন:
@[<package_name>:]<resource_type>/<resource_name>
-
<package_name>
হ'ল প্যাকেজটির নাম যেখানে সংস্থানটি অবস্থিত (একই প্যাকেজ থেকে সংস্থানগুলি উল্লেখ করার সময় প্রয়োজন হয় না)। -
<resource_type>
> রিসোর্স ধরণের জন্যR
সাবক্লাস। -
<resource_name>
হয় এক্সটেনশন ছাড়াই রিসোর্স ফাইলের নাম বাandroid:name
বৈশিষ্ট্যযুক্ত মান।
প্রতিটি সংস্থান প্রকার এবং সেগুলি কীভাবে উল্লেখ করবেন সে সম্পর্কে আরও তথ্যের জন্য, রিসোর্স প্রকারগুলি ওভারভিউ দেখুন।
কেস ব্যবহার করুন
কিছু ক্ষেত্রে, আপনাকে অবশ্যই এক্সএমএল -এর একটি মানের জন্য একটি সংস্থান ব্যবহার করতে হবে, যেমন কোনও উইজেটে একটি অঙ্কনযোগ্য চিত্র প্রয়োগ করা, তবে আপনি এক্সএমএলে একটি সংস্থানও ব্যবহার করতে পারেন যে কোনও সাধারণ মান গ্রহণ করে। উদাহরণস্বরূপ, যদি আপনার কাছে নিম্নলিখিত রিসোর্স ফাইল থাকে যা একটি রঙিন সংস্থান এবং একটি স্ট্রিং রিসোর্স অন্তর্ভুক্ত করে:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
পাঠ্য রঙ এবং পাঠ্য স্ট্রিং সেট করতে আপনি নিম্নলিখিত লেআউট ফাইলে এই সংস্থানগুলি ব্যবহার করতে পারেন:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" />
এই ক্ষেত্রে, আপনাকে রিসোর্স রেফারেন্সে প্যাকেজের নাম নির্দিষ্ট করার দরকার নেই, কারণ সংস্থানগুলি আপনার নিজের প্যাকেজ থেকে। একটি সিস্টেম রিসোর্স উল্লেখ করতে, আপনাকে প্যাকেজের নামটি অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@android:color/secondary_text_dark" android:text="@string/hello" />
দ্রষ্টব্য: সর্বদা স্ট্রিং সংস্থান ব্যবহার করুন, যাতে আপনার অ্যাপ্লিকেশনটি অন্যান্য ভাষার জন্য স্থানীয়করণ করা যায়। বিকল্প সংস্থান তৈরি করার তথ্যের জন্য (যেমন স্থানীয় স্ট্রিং), বিকল্প সংস্থান সরবরাহ করুন দেখুন। অন্যান্য ভাষার জন্য আপনার অ্যাপ্লিকেশনটিকে স্থানীয়করণের সম্পূর্ণ গাইডের জন্য, আপনার অ্যাপ্লিকেশনটিকে স্থানীয়করণ দেখুন।
এমনকি আপনি এলিয়াস তৈরি করতে এক্সএমএলে সংস্থানগুলি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি একটি অঙ্কনযোগ্য সংস্থান তৈরি করতে পারেন যা অন্য অঙ্কনযোগ্য সংস্থার জন্য একটি উপনাম:
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/other_drawable" />
এটি অপ্রয়োজনীয় শোনায় তবে বিকল্প সংস্থান ব্যবহার করার সময় এটি খুব কার্যকর হতে পারে। আরও তথ্যের জন্য, ওরফে সংস্থান তৈরি করার বিভাগটি দেখুন।
রেফারেন্স স্টাইল বৈশিষ্ট্য
একটি স্টাইল অ্যাট্রিবিউট রিসোর্স আপনাকে বর্তমানে প্রয়োগিত থিমের একটি বৈশিষ্ট্যের মান উল্লেখ করতে দেয়। একটি স্টাইল বৈশিষ্ট্য উল্লেখ করা আপনাকে একটি হার্ডকোডড মান সরবরাহের পরিবর্তে বর্তমান থিম দ্বারা সরবরাহিত স্ট্যান্ডার্ড বৈচিত্রগুলি মেলে স্টাইলিংয়ের মাধ্যমে ইউআই উপাদানগুলির চেহারাটি কাস্টমাইজ করতে দেয়। শৈলীর বৈশিষ্ট্যটি উল্লেখ করে মূলত বলে, "বর্তমান থিমের এই বৈশিষ্ট্য দ্বারা সংজ্ঞায়িত স্টাইলটি ব্যবহার করুন" "
একটি স্টাইল বৈশিষ্ট্য উল্লেখ করতে, নাম সিনট্যাক্সটি প্রায় সাধারণ সংস্থান ফর্ম্যাটের সাথে প্রায় একই রকম, তবে "এটি" প্রতীক ( @
) এর পরিবর্তে একটি প্রশ্ন চিহ্ন ( ?
) ব্যবহার করুন। রিসোর্স টাইপ অংশটি al চ্ছিক। সুতরাং রেফারেন্স সিনট্যাক্সটি নিম্নরূপ:
?[<package_name>:][<resource_type>/]<resource_name>
উদাহরণস্বরূপ, আপনি সিস্টেম থিমের গৌণ পাঠ্য রঙের সাথে মেলে পাঠ্য রঙ সেট করতে আপনি কীভাবে একটি বৈশিষ্ট্য উল্লেখ করতে পারেন তা এখানে:
<EditText id="text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="?android:textColorSecondary" android:text="@string/hello_world" />
এখানে, android:textColor
বৈশিষ্ট্যটি বর্তমান থিমটিতে একটি স্টাইল বৈশিষ্ট্যের নাম নির্দিষ্ট করে। অ্যান্ড্রয়েড এখন android:textColorSecondary
স্টাইলের বৈশিষ্ট্য android:textColor
। যেহেতু সিস্টেম রিসোর্স সরঞ্জামটি জানে যে এই প্রসঙ্গে একটি অ্যাট্রিবিউট রিসোর্স প্রত্যাশিত, আপনাকে স্পষ্টভাবে প্রকারটি বর্ণনা করার দরকার নেই, যা ?android:attr/textColorSecondary
। আপনি attr
টাইপ বাদ দিতে পারেন।
মূল ফাইলগুলি অ্যাক্সেস করুন
অস্বাভাবিক থাকাকালীন, আপনার আপনার মূল ফাইল এবং ডিরেক্টরিগুলি অ্যাক্সেসের প্রয়োজন হতে পারে। যদি আপনি এটি করেন তবে আপনার ফাইলগুলি res/
সংরক্ষণ করা আপনার পক্ষে কাজ করবে না, কারণ res/
রিসোর্স আইডির সাথে রয়েছে। পরিবর্তে, আপনি assets/
ডিরেক্টরিতে আপনার সংস্থানগুলি সংরক্ষণ করতে পারেন।
assets/
ডিরেক্টরিতে সংরক্ষিত ফাইলগুলিকে কোনও রিসোর্স আইডি দেওয়া হয় না , সুতরাং আপনি সেগুলি R
ক্লাস বা এক্সএমএল সংস্থান থেকে উল্লেখ করতে পারবেন না। পরিবর্তে, আপনি একটি সাধারণ ফাইল সিস্টেমের মতো assets/
ডিরেক্টরিতে ফাইলগুলি অনুসন্ধান করতে পারেন এবং AssetManager
ব্যবহার করে কাঁচা ডেটা পড়তে পারেন।
তবে, যদি আপনার প্রয়োজন হয় তবে কাঁচা ডেটা (যেমন একটি ভিডিও বা অডিও ফাইল) পড়ার ক্ষমতা যদি হয় তবে ফাইলটি res/raw/
ডিরেক্টরিতে সংরক্ষণ করুন এবং openRawResource()
ব্যবহার করে বাইটের একটি স্ট্রিম পড়ুন।
প্ল্যাটফর্ম সংস্থান অ্যাক্সেস
অ্যান্ড্রয়েডে স্টাইল, থিম এবং লেআউটগুলির মতো বেশ কয়েকটি স্ট্যান্ডার্ড সংস্থান রয়েছে। এই সংস্থানগুলি অ্যাক্সেস করতে, android
প্যাকেজ নামের সাথে আপনার সংস্থান রেফারেন্সটি যোগ্য করে তুলুন। উদাহরণস্বরূপ, অ্যান্ড্রয়েড একটি ListAdapter
তালিকা আইটেমগুলির জন্য ব্যবহার করতে পারেন এমন একটি লেআউট সংস্থান সরবরাহ করে:
কোটলিন
listAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, myarray)
জাভা
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));
এই উদাহরণে, simple_list_item_1
একটি ListView
আইটেমগুলির জন্য প্ল্যাটফর্ম দ্বারা সংজ্ঞায়িত একটি লেআউট রিসোর্স। আপনি তালিকা আইটেমগুলির জন্য নিজের লেআউট তৈরি করার পরিবর্তে এটি ব্যবহার করতে পারেন।
সংস্থানগুলির সাথে সেরা ডিভাইসের সামঞ্জস্যতা সরবরাহ করুন
আপনার অ্যাপ্লিকেশন একাধিক ডিভাইস কনফিগারেশন সমর্থন করার জন্য, এটি আপনার অ্যাপ্লিকেশনটি ব্যবহার করে এমন প্রতিটি ধরণের সংস্থানগুলির জন্য সর্বদা ডিফল্ট সংস্থান সরবরাহ করা খুব গুরুত্বপূর্ণ।
উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশনটি বেশ কয়েকটি ভাষা সমর্থন করে তবে সর্বদা একটি values/
ডিরেক্টরি (যাতে আপনার স্ট্রিংগুলি সংরক্ষণ করা হয়) কোনও ভাষা এবং অঞ্চল বাছাইপর্ব ছাড়াই অন্তর্ভুক্ত করে। যদি আপনি তার পরিবর্তে আপনার সমস্ত স্ট্রিং ফাইলগুলি ডিরেক্টরিগুলিতে রাখেন যাতে একটি ভাষা এবং অঞ্চল বাছাইপর্ব রয়েছে, তবে আপনার অ্যাপ্লিকেশনটি এমন কোনও ডিভাইসে চালানোর সময় আপনার অ্যাপ্লিকেশন ক্র্যাশ হয়ে যায় যা আপনার স্ট্রিংগুলি সমর্থন করে না এমন ভাষায় সেট করে।
যতক্ষণ আপনি ডিফল্ট values/
সংস্থান সরবরাহ করেন, ততক্ষণ আপনার অ্যাপ্লিকেশনটি সঠিকভাবে চালিত হয়, এমনকি ব্যবহারকারী যে ভাষাটি উপস্থাপন করে তা বুঝতে না পারলেও। এটি ক্র্যাশ করার চেয়ে ভাল।
তেমনিভাবে, আপনি যদি স্ক্রিন ওরিয়েন্টেশনের উপর ভিত্তি করে বিভিন্ন লেআউট সংস্থান সরবরাহ করেন তবে আপনার ডিফল্ট হিসাবে একটি ওরিয়েন্টেশন বেছে নিন। উদাহরণস্বরূপ, layout-land/
ল্যান্ডস্কেপ এবং layout-port/
প্রতিকৃতির জন্য লেআউট সংস্থান সরবরাহের পরিবর্তে, একটি ডিফল্ট হিসাবে ছেড়ে দিন, যেমন layout/
ল্যান্ডস্কেপ এবং layout-port/
প্রতিকৃতির জন্য।
ডিফল্ট সংস্থান সরবরাহ করা কেবল গুরুত্বপূর্ণ কারণ আপনার অ্যাপ্লিকেশনটি এমন একটি কনফিগারেশনে চলতে পারে যা আপনি প্রত্যাশিত ছিলেন না, তবে অ্যান্ড্রয়েডের নতুন সংস্করণগুলি কখনও কখনও কনফিগারেশন কোয়ালিফায়ার যুক্ত করে যা পুরানো সংস্করণগুলি সমর্থন করে না। আপনি যদি একটি নতুন রিসোর্স কোয়ালিফায়ার ব্যবহার করেন তবে অ্যান্ড্রয়েডের পুরানো সংস্করণগুলির সাথে কোডের সামঞ্জস্যতা বজায় রাখুন, তবে যখন অ্যান্ড্রয়েডের একটি পুরানো সংস্করণ আপনার অ্যাপ্লিকেশনটি চালায়, আপনি যদি ডিফল্ট সংস্থান সরবরাহ না করেন তবে এটি ক্র্যাশ হয়ে যায়, কারণ এটি দিয়ে নামযুক্ত সংস্থানগুলি ব্যবহার করতে পারে না নতুন বাছাইপর্ব।
উদাহরণস্বরূপ, যদি আপনার minSdkVersion
4 টিতে সেট করা থাকে এবং আপনি নাইট মোড ( night
বা notnight
, যা এপিআই স্তর 8 এ যুক্ত করা হয়েছিল) ব্যবহার করে আপনার সমস্ত অঙ্কনযোগ্য সংস্থানকে যোগ্য করে তোলেন, তবে একটি এপিআই স্তর 4 ডিভাইস আপনার অঙ্কনযোগ্য সংস্থানগুলি অ্যাক্সেস করতে পারে না এবং ক্র্যাশ এই ক্ষেত্রে, আপনি সম্ভবত notnight
আপনার ডিফল্ট সংস্থান হতে চান না, তাই সেই যোগ্যতাটি বাদ দিন এবং আপনার অঙ্কনযোগ্য সংস্থানগুলি drawable/
অথবা drawable-night/
এ রাখুন।
সংক্ষেপে, সেরা ডিভাইসের সামঞ্জস্যতা সরবরাহ করতে, আপনার অ্যাপ্লিকেশনটিকে সঠিকভাবে সম্পাদন করার জন্য প্রয়োজনীয় সংস্থানগুলির জন্য সর্বদা ডিফল্ট সংস্থান সরবরাহ করে। তারপরে কনফিগারেশন কোয়ালিফায়ার ব্যবহার করে নির্দিষ্ট ডিভাইস কনফিগারেশনের জন্য বিকল্প সংস্থান তৈরি করুন।
এই নিয়মের একটি ব্যতিক্রম রয়েছে: যদি আপনার অ্যাপ্লিকেশনটির minSdkVersion
4 বা তার বেশি হয় তবে আপনি যখন স্ক্রিন ঘনত্বের বাছাইপর্বের সাথে বিকল্প অঙ্কনযোগ্য সংস্থান সরবরাহ করেন তখন আপনার ডিফল্ট অঙ্কনযোগ্য সংস্থানগুলির প্রয়োজন হয় না । এমনকি ডিফল্ট অঙ্কনযোগ্য সংস্থান ছাড়াই, অ্যান্ড্রয়েড বিকল্প পর্দার ঘনত্বের মধ্যে সেরা ম্যাচটি খুঁজে পেতে পারে এবং প্রয়োজনীয় হিসাবে বিটম্যাপগুলি স্কেল করতে পারে। তবে, সমস্ত ধরণের ডিভাইসে সেরা অভিজ্ঞতার জন্য, তিনটি ধরণের ঘনত্বের জন্য বিকল্প অঙ্কন সরবরাহ করুন।
অ্যান্ড্রয়েড কীভাবে সেরা ম্যাচিং রিসোর্সটি খুঁজে পায়
আপনি যখন এমন কোনও সংস্থার জন্য অনুরোধ করেন যার জন্য আপনি বিকল্প সরবরাহ করেন, অ্যান্ড্রয়েড বর্তমান ডিভাইস কনফিগারেশনের উপর নির্ভর করে রানটাইমে কোন বিকল্প সংস্থান ব্যবহার করতে হবে তা নির্বাচন করে। অ্যান্ড্রয়েড কীভাবে একটি বিকল্প সংস্থান নির্বাচন করে তা প্রদর্শনের জন্য, নিম্নলিখিত অঙ্কনযোগ্য ডিরেক্টরিগুলিতে প্রতিটি একই চিত্রের বিভিন্ন সংস্করণ রয়েছে বলে ধরে নিন:
drawable/ drawable-en/ drawable-fr-rCA/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
এবং ধরে নিন নিম্নলিখিতটি ডিভাইস কনফিগারেশন:
লোকেল = en-GB
স্ক্রিন ওরিয়েন্টেশন = port
স্ক্রিন পিক্সেল ঘনত্ব = hdpi
টাচস্ক্রিন টাইপ = notouch
প্রাথমিক পাঠ্য ইনপুট পদ্ধতি = 12key
ডিভাইস কনফিগারেশনটিকে উপলভ্য বিকল্প সংস্থানগুলির সাথে তুলনা করে, অ্যান্ড্রয়েড drawable-en-port
থেকে অঙ্কনযোগ্য নির্বাচন করে।
নিম্নলিখিত যুক্তিগুলির সাথে কোন সংস্থানগুলি ব্যবহার করতে হবে তার সিদ্ধান্তে সিস্টেমটি আসে:
![](https://developer.android.com/static/images/resources/res-selection-flowchart.png?authuser=4&hl=bn)
চিত্র 2. অ্যান্ড্রয়েড কীভাবে সেরা ম্যাচিং রিসোর্সটি খুঁজে পায় তার ফ্লোচার্ট।
- ডিভাইস কনফিগারেশনের বিরোধিতা করে এমন রিসোর্স ফাইলগুলি নির্মূল করুন।
drawable-fr-rCA/
ডিরেক্টরিটি মুছে ফেলা হয়েছে, কারণ এটিen-GB
লোকেলের বিরোধিতা করে।drawable/ drawable-en/
drawable-fr-rCA/drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/ব্যতিক্রম: স্ক্রিন পিক্সেল ঘনত্ব হ'ল এক যোগ্যতা যা কোনও দ্বন্দ্বের কারণে মুছে ফেলা হয় না। যদিও ডিভাইসের স্ক্রিন ঘনত্ব এইচডিপিআই,
drawable-port-ldpi/
নির্মূল করা হয় না কারণ প্রতিটি স্ক্রিনের ঘনত্বকে এই মুহুর্তে একটি ম্যাচ হিসাবে বিবেচনা করা হয়। তথ্যের জন্য, স্ক্রিনের সামঞ্জস্যতা ওভারভিউ দেখুন। - তালিকায় পরবর্তী সর্বোচ্চ-পূর্ব-পূর্বের বাছাইপর্বটি সন্ধান করুন ( সারণী 2 )। (এমসিসি দিয়ে শুরু করুন।)
- রিসোর্স ডিরেক্টরিগুলির মধ্যে কি এই বাছাইপর্বকে অন্তর্ভুক্ত করে?
- যদি না হয় তবে দ্বিতীয় ধাপে ফিরে আসুন এবং পরবর্তী বাছাইপর্বটি দেখুন। এই উদাহরণে, ভাষার যোগ্যতা অর্জন না করা পর্যন্ত উত্তরটি "না" হয়।
- যদি হ্যাঁ, চার ধাপে চালিয়ে যান।
- এই বাছাইপর্বকে অন্তর্ভুক্ত করে না এমন রিসোর্স ডিরেক্টরিগুলি নির্মূল করুন। এই উদাহরণে, পরবর্তী সিস্টেমটি সমস্ত ডিরেক্টরিগুলি সরিয়ে দেয় যা কোনও ভাষা বাছাইপর্বকে অন্তর্ভুক্ত করে না:
drawable/drawable-en/ drawable-en-port/ drawable-en-notouch-12key/drawable-port-ldpi/drawable-port-notouch-12key/ব্যতিক্রম: যদি প্রশ্নে বাছাইপর্বটি স্ক্রিন পিক্সেল ঘনত্ব হয় তবে অ্যান্ড্রয়েড বিকল্পটি নির্বাচন করে যা ডিভাইসের স্ক্রিনের ঘনত্বের সাথে সবচেয়ে ঘনিষ্ঠভাবে মেলে। সাধারণভাবে, অ্যান্ড্রয়েড একটি ছোট মূল চিত্রটি স্কেলিংয়ের জন্য একটি বৃহত্তর মূল চিত্রটি স্কেলিং করতে পছন্দ করে। আরও তথ্যের জন্য, স্ক্রিনের সামঞ্জস্যতা ওভারভিউ দেখুন।
- কেবল একটি ডিরেক্টরি না হওয়া পর্যন্ত দুই, তিন এবং চারটি পদক্ষেপ পুনরাবৃত্তি করুন। এই উদাহরণে, স্ক্রিন ওরিয়েন্টেশন হ'ল পরবর্তী বাছাইপর্ব যার জন্য কোনও মিল রয়েছে। সুতরাং, যে সংস্থানগুলি কোনও স্ক্রিন ওরিয়েন্টেশন নির্দিষ্ট করে না সেগুলি মুছে ফেলা হয়:
drawable-en/drawable-en-port/drawable-en-notouch-12key/অবশিষ্ট ডিরেক্টরিটি
drawable-en-port
।
যদিও এই পদ্ধতিটি অনুরোধ করা প্রতিটি সংস্থার জন্য কার্যকর করা হয়, সিস্টেমটি এর কিছু দিক অনুকূল করে। এরকম একটি অপ্টিমাইজেশন হ'ল একবার ডিভাইস কনফিগারেশনটি পরিচিত হয়ে গেলে এটি বিকল্প সংস্থানগুলি দূর করতে পারে যা কখনই মেলে না। উদাহরণস্বরূপ, যদি কনফিগারেশন ভাষাটি ইংরেজি হয়, তবে ইংরেজি ব্যতীত অন্য কোনও কিছুতে সেট করা কোনও রিসোর্স ডিরেক্টরি যা চেক করা সংস্থানগুলির পুলে কখনও অন্তর্ভুক্ত থাকে না (যদিও ভাষা বাছাইপর্ব ছাড়াই একটি রিসোর্স ডিরেক্টরি এখনও অন্তর্ভুক্ত রয়েছে)।
স্ক্রিনের আকারের বাছাইপর্বের উপর ভিত্তি করে সংস্থানগুলি নির্বাচন করার সময়, সিস্টেমটি আরও ভাল মেলে এমন কোনও সংস্থান না থাকলে বর্তমান পর্দার চেয়ে ছোট স্ক্রিনের জন্য ডিজাইন করা সংস্থানগুলি ব্যবহার করে। উদাহরণস্বরূপ, একটি বৃহত আকারের স্ক্রিনটি প্রয়োজনে স্বাভাবিক আকারের স্ক্রিন সংস্থান ব্যবহার করে।
তবে, যদি কেবলমাত্র উপলভ্য সংস্থানগুলি বর্তমান স্ক্রিনের চেয়ে বড় হয় তবে অন্য কোনও সংস্থান ডিভাইস কনফিগারেশনের সাথে মেলে না যদি সিস্টেমগুলি সেগুলি ব্যবহার করে না এবং আপনার অ্যাপ্লিকেশন ক্র্যাশ হয় না। এটি ঘটে, উদাহরণস্বরূপ, যদি সমস্ত লেআউট সংস্থানগুলি xlarge
বাছাইপর্বের সাথে ট্যাগ করা হয় তবে ডিভাইসটি একটি সাধারণ আকারের স্ক্রিন।
দ্রষ্টব্য: কোয়ালিফায়ারের অগ্রাধিকার ( টেবিল 2 এ) ডিভাইসটির সাথে ঠিক মেলে এমন বাছাইপর্বের সংখ্যার চেয়ে বেশি গুরুত্বপূর্ণ। পূর্ববর্তী উদাহরণে, চতুর্থ ধাপে তালিকার শেষ পছন্দটিতে তিনটি কোয়ালিফায়ার অন্তর্ভুক্ত রয়েছে যা ডিভাইসের সাথে হুবহু মেলে (ওরিয়েন্টেশন, টাচস্ক্রিন টাইপ এবং ইনপুট পদ্ধতি), যখন drawable-en
একটি মাত্র প্যারামিটার রয়েছে যা মেলে (ভাষা)। যাইহোক, এই অন্যান্য বাছাইপর্বের তুলনায় ভাষার উচ্চতর অগ্রাধিকার রয়েছে, সুতরাং drawable-port-notouch-12key
মুছে ফেলা হয়েছে।