点击蓝字关注我们
前阵子因为项目原因,也一直在更新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-
Vaccae的往期经典
OpenCV
《OpenCV4Android NDK方式进行Canny边缘检测》
《OpenCV4Android NDK方式TesserartOCR实时进行识别》
《OpenCV4Android NDK级联方式实时进行人脸检测》
《OpenCV4Android NDK背景消除建模(新Demo附源码)》
Android
《Android利用SurfaceView结合科大讯飞修改语音实别UI》
《Android关于语音识别的功能实现分析(一)---结构化思维》
《Android关于语音识别的功能实现分析(二)---语义解析》
《Android中RecyclerView嵌套RecyclerView》
.Net C#
《C#开源跨平台机器学习框架ML.NET----二元分类情绪分析》
《C#开源跨平台机器学习框架ML.NET----结合SqlSugar进行多类分类》
数据库及其它
《SQL Server中With As的介绍与应用(三)--递归的实战应用》
《Oracle利用row_number()over()方式解决插入数据时重复键的问题》
请扫码
给个关注
微卡智享