আমি R.drawable.*
একটি এক্সএমএল মান ফাইল ব্যবহার করে অ্যারের ভিতরে আকারের মতো অঙ্কনযোগ্য সংস্থানগুলির আইডি সঞ্চয় করতে এবং তারপরে আমার ক্রিয়াকলাপে অ্যারেটি পুনরুদ্ধার করতে চাই।
এটিকে কীভাবে অর্জন করা যায় তার কোনও ধারণা?
আমি R.drawable.*
একটি এক্সএমএল মান ফাইল ব্যবহার করে অ্যারের ভিতরে আকারের মতো অঙ্কনযোগ্য সংস্থানগুলির আইডি সঞ্চয় করতে এবং তারপরে আমার ক্রিয়াকলাপে অ্যারেটি পুনরুদ্ধার করতে চাই।
এটিকে কীভাবে অর্জন করা যায় তার কোনও ধারণা?
উত্তর:
আপনি আপনার ফোল্ডারের মধ্যে ফাইলের মধ্যে টাইপ করা অ্যারে ব্যবহার করেন যা দেখতে এইরকম দেখাচ্ছে:arrays.xml
/res/values
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="random_imgs">
<item>@drawable/car_01</item>
<item>@drawable/balloon_random_02</item>
<item>@drawable/dog_03</item>
</integer-array>
</resources>
তারপরে আপনার ক্রিয়াকলাপে এগুলি এর মতো অ্যাক্সেস করুন:
TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);
// get resource ID by index
imgs.getResourceId(i, -1)
// or set you ImageView's resource to the id
mImgView1.setImageResource(imgs.getResourceId(i, -1));
// recycle the array
imgs.recycle();
ইন value
ফোল্ডার তৈরি xml
ফাইলের নাম এটা arrays.xml
এই ভাবে এটি তথ্য যোগ
<integer-array name="your_array_name">
<item>@drawable/1</item>
<item>@drawable/2</item>
<item>@drawable/3</item>
<item>@drawable/4</item>
</integer-array>
তারপরে এটি আপনার কোডটিতে এভাবে পান
private TypedArray img;
img = getResources().obtainTypedArray(R.array.your_array_name);
তারপর একটি ব্যবহার করতে Drawable
মধ্যে এগুলোর img
TypedArray
একটি যেমন উদাহরণস্বরূপ ImageView
background
ব্যবহার নিম্নলিখিত কোড
ImageView.setBackgroundResource(img.getResourceId(index, defaultValue));
যেখানে index
হয় Drawable
সূচক।
defaultValue
এটির কোনও মূল্য নেই যদি এতে কোনও আইটেম না থাকেindex
আরও তথ্যের জন্য সম্পর্কে TypedArray
এই লিঙ্কটি দেখুন
http://developer.android.com/reference/android/content/res/TypedArray.html
আপনি এটি ব্যবহার করতে পারেন যেমন অঙ্কনযোগ্য হিসাবে অন্য সংস্থানগুলির একটি অ্যারে তৈরি করতে। নোট করুন যে অ্যারেটি সমজাতীয় হওয়ার দরকার নেই, তাই আপনি মিশ্র সংস্থানীয় ধরণের একটি অ্যারে তৈরি করতে পারেন তবে ডেটা টাইপগুলি কী এবং কোথায় রয়েছে সে সম্পর্কে আপনাকে অবশ্যই সচেতন হতে হবে।
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/home</item>
<item>@drawable/settings</item>
<item>@drawable/logout</item>
</array>
<array name="colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
</resources>
এবং আপনার ক্রিয়াকলাপে এর মতো সংস্থানগুলি পান
Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);
TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);
উপভোগ করুন !!!!!
কোটলিন উপায় এটি হতে পারে:
fun Int.resDrawableArray(context: Context, index: Int, block: (drawableResId: Int) -> Unit) {
val array = context.resources.obtainTypedArray(this)
block(array.getResourceId(index, -1))
array.recycle()
}
R.array.random_imgs.resDrawableArray(context, 0) {
mImgView1.setImageResource(it)
}
কোটলিনে আপনি এটি করতে পারেন:
<integer-array name="drawer_icons">
<item>@drawable/drawer_home</item>
</integer-array>
আপনি উত্স থেকে ইমেজের অ্যারে পাবেন TypedArray
val imageArray = resources.obtainTypedArray(R.array.drawer_icons)
সূচক দ্বারা সংস্থান আইডি পান
imageArray.getResourceId(imageArray.getIndex(0),-1)
অথবা আপনি আইডিতে ইমেজভিউয়ের সংস্থান সেট করতে পারেন
imageView.setImageResource(imageArray.getResourceId(imageArray.getIndex(0),-1))
এবং সর্বশেষে অ্যারে পুনর্ব্যবহার করুন
imageArray.recycle()
আমার জানা মতে আপনি আর.ড্রেবলে আরে সংরক্ষণ করতে পারবেন না।
কি আপনি কি করতে পারেন config.xml বা strings.xml মধ্যে একটি অ্যারের যে ব্যবহার করে একটি অঙ্কনযোগ্য সম্পদ একটি পাথ মানচিত্র তৈরি করুন নেই ওরফে রিসোর্স ।
এটি কাজ করে কিনা দেখুন এবং আপনার কোনও অতিরিক্ত সহায়তার দরকার হলে দয়া করে আমাকে জানান।