Android如何将各种资源定义在一维数组和二维数组中(以图片为例)

首先在values文件夹下找到--arrays.xml 文件。(如果,没有就新建一个)

一维数组:
格式如下(图片1,图片2等为,你图片文件夹下的图片名称)
 <integer-array name="image_array">
        <item>@drawable/图片1</item>
        <item>@drawable/图片2</item>
        <item>@drawable/图片3</item>
        <item>@drawable/图片4</item>
    </integer-array>

如何在代码里面取图片。

  
   int  imageId;
     TypedArray     mTypedArray=getResources().obtainTypedArray(R.array.image_array);
     //参数含义,第一个参数为 :所取图片在数组中的索引,第二个参数为:未找到时,返回的默认值。
     imageId= mTypedArray  .getResourceId(0, 1);
    //释放资源
     mTypedArray.recycle();


    此方法得到的是:图片1的id.

二位数组:

格式如下:
<integer-array name="image_arrays">
        <item>@array/image_array_one</item>
        <item>@array/image_array_one</item>
    </integer-array>

<integer-array name="image_array_one">
        <item>@drawable/图片1</item>
        <item>@drawable/图片2</item>
        <item>@drawable/图片3</item>
        <item>@drawable/图片4</item>
    </integer-array>

<integer-array name="image_array_two">
        <item>@drawable/图片5</item>
        <item>@drawable/图片6</item>
        <item>@drawable/图片7</item>
        <item>@drawable/图片8</item>
    </integer-array>




如何在代码里面取:

   
   int  imageId;

     TypedArray     mTypedArray=getResources().obtainTypedArray(R.array.image_arrays);
   
     //参数含义,第一个参数为 :图片数组索引,第二个参数为:未找到时,返回的默认值。
     TypedArray     arrays= getResources().obtainTypedArray(mTypedArray.getResourceId(1, 1));

     //参数含义,第一个参数为 :所取图片在数组中的索引,第二个参数为:未找到时,返回的默认值。
     imageId= arrays.getResourceId(0, 1);
    //释放资源
     mTypedArray.recycle();
      arrays.recycle();



   此方法,得到的是:图片5的id.

有的时候,需要得到一个图片数组。那么可以封装一下。

/**
*context       上下文
*
*arraysIndex   所需要的图片一维数组索引
*
resId     二维数组的资源Id
*/
public    int[]   getResIdArray(Context context, int arraysIndex,  int resId) { 
  TypedArray mTypedArray  = context.getResources().obtainTypedArray(resId);

  TypedArray arrays= context.getResources().obtainTypedArray(
    mTypedArray  .getResourceId(arraysIndex, 1));
  int len = arrays.length();
  int[] resIdArray = new int[len];
  for (int i = 0; i < len; i++) {
   resIdArray[i] = arrays.getResourceId(i, -1);
  }
  return resIdArray;
 }

PS: 如果是图片,还有另外一种类似数组定义方法。(个人心得,不一定很好。)

首先找打res 文件夹 并 建立drawable 文件夹

然后,建立一个xml 文件。名字自定义,内容格式为:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
     <item
        android:drawable="@drawable/图片0"
        android:maxLevel="0"/>
    <item
        android:drawable="@drawable/图片1"
        android:maxLevel="1"/>
    <item
        android:drawable="@drawable/图片2"
        android:maxLevel="2"/>
</level-list>

代码使用:

  // imagid    为定义的drawable .xml文件的资源id.
 //  position  为图片设置的maxLevel的数值。
  imageView.setImageResource(imagId);
  imageView.setImageLevel(position); 

这个就可以把多张图片,集合到一个drawable中来。
配合一维数组取图片方法,也可以做到和二维数组一样的效果。

看具体情况去使用吧。

  

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值