android批量获取res文件中的drawable图片

###工具类


import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;

import com.example.administrator.oujiademo.R;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * 批量获取指定的drawable图片文件
 */
public class DrawableUtil {
    private Context context;

    public DrawableUtil(Context context) {
        this.context = context;
    }

    /**
     * 批量获取指定图片 imageResourceId
     *
     * @param imgName 图片名字的部分或全部
     * @return 图片名字中包含有imgName的所有图片 imageResourceId
     * <p>
     * 使用示例: 如有5张图片: image_0 ,image_1 ,image_2 , image_3 ,image_4 ;
     * 调用方法 getImageResourId("image_")  ,则会得到上面的5张图片的imageResourceId
     * 如果传入的imgName为全名则返回的就是一张图片
     */
    public List<Integer> getImageResourId(String imgName) {
        List<Integer> imgList = new ArrayList<>();
        Resources resources = context.getResources();
        Field[] fields = R.drawable.class.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            fields[i].setAccessible(true);
            String name = fields[i].getName();
            if (name.contains(imgName)) {
                int resId = resources.getIdentifier(name, "drawable", context.getPackageName());
                imgList.add(resId);
            }
        }
        return imgList;
    }

    /**
     * 批量获取指定图片 drawable对象
     *
     * @param imgName 图片名字的部分或全部
     * @return 图片名字中包含有imgName的所有图片 drawable对象
     *   <p>
     * 使用示例: 如有5张图片: image_0 ,image_1 ,image_2 , image_3 ,image_4 ;
     * 调用方法 getImageResourId("image_")  ,则会得到上面的5张图片的drawable
     * 如果传入的imgName为全名则返回的就是一张图片
     */
    public List<Drawable> getDrawable(String imgName) {
        List<Drawable> imgList = new ArrayList<>();
        Resources resources = context.getResources();
        Field[] fields = R.drawable.class.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            fields[i].setAccessible(true);
            String name = fields[i].getName();
            if (name.contains(imgName)) {
                int resId = resources.getIdentifier(name, "drawable", context.getPackageName());
                Drawable drawable = resources.getDrawable(resId);
                imgList.add(drawable);
            }
        }
        return imgList;
    }
}
AndroidDrawable是一种可绘制的图像对象,可以用于绘制各种形状的图像,如位图、矢量图等。下面是使用Drawable图片的教程: 1. 创建Drawable资源文件Android Studio,可在res/drawable目录下创建Drawable资源文件,支持的文件格式包括PNG、JPG、GIF等。例如,创建一个名为ic_launcher的PNG图片文件,可在drawable目录下创建ic_launcher.png文件。 2. 在布局文件引用Drawable资源 在布局文件,可通过ImageView控件引用Drawable资源,例如: ``` <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/> ``` 其,@drawable/ic_launcher表示引用名为ic_launcher的Drawable资源。 3. 在代码引用Drawable资源 在代码,可通过Context的getDrawable()方法获取Drawable资源,例如: ``` Drawable drawable = context.getDrawable(R.drawable.ic_launcher); ``` 其,R.drawable.ic_launcher表示引用名为ic_launcher的Drawable资源的ID。 4. 设置Drawable图片的属性 Drawable图片可以设置不同的属性,例如透明度、边框、大小等。可通过代码方式设置Drawable图片的属性,例如: ``` Drawable drawable = context.getDrawable(R.drawable.ic_launcher); // 设置透明度为50% drawable.setAlpha(128); // 设置边框为红色,宽度为2dp drawable.setStroke(2, Color.RED); // 设置大小为50dp * 50dp drawable.setBounds(0, 0, 50, 50); ``` 以上是使用Drawable图片的教程,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值