一、drawable 与 mipmap
mipmap 的特殊性:Android 系统会为不同分辨率设备选择最合适的图标
ic_launcher.png → mipmap-hdpi/
ic_launcher_round.png → mipmap-hdpi/
drawable 的标准行为:遵循正常的资源匹配机制,根据密度优先匹配,找不到则向上或向下缩放
btn_submit.png → drawable-hdpi/
ic_back.png → drawable-hdpi/
ImageView 的 setImageResource 方法完全支持 res/drawable 和 res/mipmap 目录下的图片资源
无论是 drawable 还是 mipmap,系统都会为它们生成相同的 R.drawable.xxx 或 R.mipmap.xxx 资源 ID
二、ImageView scaleType 属性
| fitCenter | 等比例缩放图片,直到长边与 ImageView 对齐缩放后,图片会居中显示(这是默认值) |
| center | 按原图大小居中显示如果图片大于 ImageView,则截取中间部分;如果图片小于 ImageView,则直接居中显示 |
| centerCrop | 等比例缩放图片,直到短边与 ImageView 对齐,长边会被裁剪缩放后,图片会居中显示 |
| centerInside | 等比例缩小图片,直到长边与 ImageView 对齐缩小后,图片会居中显示如果图片小于 ImageView,则直接居中显示 |
| fitStart | 等比例缩放图片,直到长边与 ImageView 对齐缩放后,图片会放在 ImageView 的左上角 |
| fitEnd | 等比例缩放图片,直到长边与 ImageView 对齐缩放后,图片会放在 ImageView 的右下角 |
| fitXY | 不按比例拉伸图片,使其完全填满整个 ImageView |
| matrix | 不缩放,从 ImageView 的左上角开始绘制,超出 ImageView 范围的部分会被裁剪 |
- 最推荐使用的缩放类型是 fitCenter 和 centerCrop
三、background 属性注意事项
background 属性的默认行为是图片会被拉伸以填满整个 View
background 属性没有类似 scaleType 这样的属性设置缩放类型
四、ImageView 设置图片方式
1、setImageResource
imageView.setImageResource(R.drawable.ic_launcher_background);
imageView.setImageResource(R.mipmap.test);
2、setBackgroundResource
imageView.setBackgroundResource(R.drawable.ic_launcher_background);
3、setImageBitmap
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test);
imageView.setImageBitmap(bitmap);
4、setImageDrawable
Drawable drawable = ContextCompat.getDrawable(this, R.drawable.ic_launcher_background);
imageView.setImageDrawable(drawable);
Drawable drawable = VectorDrawableCompat.create(getResources(), R.drawable.ic_launcher_background, null);
imageView.setImageDrawable(drawable);
Drawable drawable = new ColorDrawable(Color.BLUE);
imageView.setImageDrawable(drawable);
5、setImageURI
File file = new File(getFilesDir(), "test.png");
Uri uri = Uri.fromFile(file);
imageView.setImageURI(uri);




