Android动态批量加载Drawable中的图片

点击蓝字关注我们

前阵子因为项目原因,也一直在更新C#相关的东西,现在项目先告一段落,我们再回到Andriod这块,先说一下,最近的几篇更新最终都会围绕一个小程序来进行的知识点分解 。

目标

动态加载Drawable图片进行查看

还是按照惯例,我们先上实现效果

动态获取Drawable核心代码

public static List getImageResourable(Context context, String imgName) {List 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的集合,和一个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() {@Overridepublic void onClick(View view) {currentimgid=0;ShowImg(currentimgid);}});//上一张按钮btnprev=findViewById(R.id.btnprev);btnprev.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (currentimgid > 0) {currentimgid--;}ShowImg(currentimgid);}});//下一张按钮btnnext=findViewById(R.id.btnnext);btnnext.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (currentimgid < mImageables.size() - 1) {currentimgid++;}ShowImg(currentimgid);}});//最后一张btnend=findViewById(R.id.btnend);btnend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {currentimgid=mImageables.size() - 1;ShowImg(currentimgid);}});}

这样我们的动态加载Drawable图片就已经完成了。

-END-

Vaccae的往期经典

OpenCV

《C++ OpenCV案例实战---卡号获取》

《C++ OpenCV案例实战---卡片截取(附代码)》

《C++ OpenCV透视变换---切换手机正面图片》

《C++ OpenCV实战---获取数量》

《C++ OpenCV实战---利用颜色分割获取数量》

《OpenCV4Android NDK方式进行Canny边缘检测》

《OpenCV4Android NDK方式TesserartOCR实时进行识别》

《OpenCV4Android NDK级联方式实时进行人脸检测》

《OpenCV4Android NDK稠密光流调用》

《OpenCV4Android NDK背景消除建模(新Demo附源码)》

Android

《Android利用SurfaceView结合科大讯飞修改语音实别UI》

《Android关于语音识别的功能实现分析(一)---结构化思维》

《Android关于语音识别的功能实现分析(二)---语义解析》

《Android根据类生成签名字符串》

《Android碎片化布局fragment的实战应用》

《Android中RecyclerView嵌套RecyclerView》

《Android里用AsyncTask后的接口回调》

.Net C#

《C#自定义特性(Attribute)讲解与实际应用》

《C#根据类生成签名字符串(附DEMO下载地址)》

《C++创建动态库C#调用》

《C#与三菱PLC(型号FX2N)串口通讯类》

《C#开源跨平台机器学习框架ML.NET----二元分类情绪分析》

《C#开源跨平台机器学习框架ML.NET----结合SqlSugar进行多类分类》

数据库及其它

《Oracel存储过程写报表实战》

《Delphi轮播视频和图片程序(用于双屏显示程序)》

《SQL随机增加销售数据的脚本编写(附脚本下载地址)》

《SQL Server中With As的介绍与应用(三)--递归的实战应用》

《Oracle通过ODBC连接SQL Server数据库》

《Oracle利用row_number()over()方式解决插入数据时重复键的问题》

 

请扫码

给个关注

微卡智享


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部