如何在Android Studio中用Kotlin动态修改ImageView显示的图片
Kotlin 实现Android运行时动态修改ImageView图片方案
前置准备
将需要用到的图片资源放入项目res/drawable目录,资源命名仅可使用小写字母、数字、下划线,不可用数字开头。
基础实现方式
1. 加载项目内置drawable资源
首先在布局文件中声明ImageView:
<ImageView android:id="@+id/displayIv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/default_image" />
在需要切换图片的Kotlin逻辑中直接调用即可:
// 通用方案,直接传入资源ID displayIv.setImageResource(R.drawable.target_image) // 需对Drawable做额外处理时使用该方案 val targetDrawable = resources.getDrawable(R.drawable.target_image, theme) displayIv.setImageDrawable(targetDrawable)
注意:Android 6.0(API 23)及以上版本推荐使用带theme参数的getDrawable方法,避免主题适配异常。
2. 加载本地存储图片
如果需要加载手机本地存储中的图片(如相册选择的图片),使用如下代码:
// uri为本地图片对应的资源地址 displayIv.setImageURI(uri)
注意:直接调用setImageURI加载大图容易触发OOM,建议先对图片做压缩处理再设置。
3. 常见触发场景示例(点击按钮切换图片)
// 假设布局内存在id为switchBtn的按钮控件 switchBtn.setOnClickListener { displayIv.setImageResource(R.drawable.new_image) }
常见问题排查
- 图片设置后不显示:优先检查资源ID是否正确,排查是否存在同名不同后缀的资源冲突
- 触发资源找不到崩溃:确认drawable资源是否仅存放在特定dpi的drawable目录,未在默认
drawable目录存放通用版本 - 需要切换过渡效果:可搭配
ImageView的startAnimation方法,引入动画资源实现淡入淡出等切换效果
内容的提问来源于stack exchange,提问作者MCH170
相关产品推荐
相关产品推荐

