前阵子因为项目原因,也一直在更新C#相关的东西,现在项目先告一段落,我们再回到Andriod这块,先说一下,最近的几篇更新最终都会围绕一个小程序来进行的知识点分解 。
目标
动态加载Drawable图片进行查看
还是按照惯例,我们先上实现效果
动态获取Drawable核心代码
public static List<Drawable> getImageResourable(Context context, String imgName) {
List<Drawable> imgList = new ArrayList<>();
Resources resources = context.getResources();
String packagename= context.getPackageName();
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", packagename);
Drawable drawable = resources.getDrawable(resId);
imgList.add(drawable);
}
}
return imgList;
}
代码实现
01
创建项目
我们新建一个项目RecyclerViewImage的项目,然后布局在activity_main.xml布局文件中加入一个ImageView和4个Button
02
创建imgdeal的类
创建一个imgdeal的类,把我们的核心代码加进去,getImageResourable方法第二个参数名称这块要注意,这里就是检查含有我们输入名称的文件进行加载
03
在Drawable中添加图片
将我们准备好的图片一张张的复制进Drawable中,重命名为img开头的,如下图
04
MainActivity的实现
定义参数
把布局文件中的imageview和4个按钮定义好,然后添加一个List<Drawable>的集合,和一个int类型的设置当前集合中的序号。
onCreate事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加载drawable中的img开头的图片资源
mImageables=imgdeal.getImageResourable(this, "img");
currentimgid=0;
//在imageview中显示第一张资源图片
imgv=findViewById(R.id.imgsrc);
ShowImg(currentimgid);
//第一张图片
btnfirst=findViewById(R.id.btnfirst);
btnfirst.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
currentimgid=0;
ShowImg(currentimgid);
}
});
//上一张按钮
btnprev=findViewById(R.id.btnprev);
btnprev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (currentimgid > 0) {
currentimgid--;
}
ShowImg(currentimgid);
}
});
//下一张按钮
btnnext=findViewById(R.id.btnnext);
btnnext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (currentimgid < mImageables.size() - 1) {
currentimgid++;
}
ShowImg(currentimgid);
}
});
//最后一张
btnend=findViewById(R.id.btnend);
btnend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
currentimgid=mImageables.size() - 1;
ShowImg(currentimgid);
}
});
}
这样我们的动态加载Drawable图片就已经完成了。
-END-