R.drawable.*
XML değerleri dosyası kullanarak bir dizi içinde çekilebilir kaynakların kimliğini depolamak ve ardından diziyi etkinliğimden almak istiyorum.
Bunu nasıl başaracağınıza dair bir fikriniz var mı?
R.drawable.*
XML değerleri dosyası kullanarak bir dizi içinde çekilebilir kaynakların kimliğini depolamak ve ardından diziyi etkinliğimden almak istiyorum.
Bunu nasıl başaracağınıza dair bir fikriniz var mı?
Yanıtlar:
Bir kullanmak yazılan dizi içinde arrays.xml
sizin içinde dosyanın /res/values
klasöründe o böyle görünüyor:
<?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>
Ardından aktivitenizde onlara şu şekilde erişin:
TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs);
// get resource ID by index, use 0 as default to set null resource
imgs.getResourceId(i, 0)
// or set you ImageView's resource to the id
mImgView1.setImageResource(imgs.getResourceId(i, 0));
// recycle the array
imgs.recycle();
Gelen value
klasörüne oluşturmak xml
dosya adını arrays.xml
bu şekilde kendisine veri eklemek
<integer-array name="your_array_name">
<item>@drawable/1</item>
<item>@drawable/2</item>
<item>@drawable/3</item>
<item>@drawable/4</item>
</integer-array>
Ardından bu şekilde kodunuza alın
private TypedArray img;
img = getResources().obtainTypedArray(R.array.your_array_name);
Daha sonra, örneğin aşağıdaki kodu kullanmak için Drawable
bunlardan birini kullanmakimg
TypedArray
ImageView
background
ImageView.setBackgroundResource(img.getResourceId(index, defaultValue));
nerede index
olduğunu Drawable
endeksi.
defaultValue
bunda öğe yoksa verdiğiniz bir değerdirindex
Hakkında daha fazla bilgi için TypedArray
bu bağlantıyı ziyaret edin
http://developer.android.com/reference/android/content/res/TypedArray.html
Bunu, çekilebilir öğeler gibi diğer kaynaklardan oluşan bir dizi oluşturmak için kullanabilirsiniz. Dizinin homojen olması gerekmediğine dikkat edin, bu nedenle bir dizi karma kaynak türü oluşturabilirsiniz, ancak dizide ne ve nerede veri türlerinin bulunduğunu bilmeniz gerekir.
<?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>
Ve faaliyetinizdeki kaynakları bunun gibi elde edin
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);
Zevk almak!!!!!
kotlin yolu şu olabilir:
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)
}
Kotlin'de şunları yapabilirsiniz: -
<integer-array name="drawer_icons">
<item>@drawable/drawer_home</item>
</integer-array>
Kaynaktan Görüntü dizisi alacaksınız. TypedArray
val imageArray = resources.obtainTypedArray(R.array.drawer_icons)
endekse göre kaynak kimliğini al
imageArray.getResourceId(imageArray.getIndex(0),-1)
VEYA imageView kaynağını id olarak ayarlayabilirsiniz
imageView.setImageResource(imageArray.getResourceId(imageArray.getIndex(0),-1))
ve son olarak diziyi geri dönüştür
imageArray.recycle()