赵雅智_setImageResource和setImageBitmap
16lz
2021-01-22
在4.0.4 r1.2中查看android.widget.ImageView源代码可以发现,setImageBitmap()方法其实是调用了setImageDrawable()方法进行重绘。
Sets a Bitmap as the content of this ImageView.
Parameters:
bm The bitmap to set
@android.view.RemotableViewMethod
public void setImageBitmap(Bitmap bm) {
// if this is used frequently, may handle bitmaps explicitly
// to reduce the intermediate drawable object
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
Sets a drawable as the content of this ImageView.
Parameters:
drawable The drawable to set
public void setImageDrawable(Drawable drawable) {
if (mDrawable != drawable) {
mResource = 0;
mUri = null;
int oldWidth = mDrawableWidth;
int oldHeight = mDrawableHeight;
updateDrawable(drawable);
if (oldWidth != mDrawableWidth || oldHeight != mDrawableHeigh{
requestLayout();
}
invalidate();
}
}
同样的布局文件,小分辨率手机:
1、使用setImageBitmap设置时,出现如下现象:
2、使用setImageResource时,图片显示正常
原因:
setImageResource(id)会根据设备分辨率进行图片大小缩放适配
setImageBitmap(BitmapFactory.decodeResource(res,id))大小需要手动调。
如果你提供了完整的各种分辨率下的图片的话,两种方法都应该不会有混乱。
更多相关文章
- 同时兼容高低版本的setBackground跟setTextColor方法
- Android 屏幕分辨率
- 四极管:I2CTools编译方法
- 检查ArrayList是否只包含null值的方法。
- 不同Android版本设备正确获取屏幕分辨率的通用方法
- studio更新时候,不小心点了ignore,无法更新的解决方法
- android之发送短信的方法研究
- SQLite的Android光标在方法调用时崩溃
- android 2D 游戏的开发的方法