在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))大小需要手动调。
如果你提供了完整的各种分辨率下的图片的话,两种方法都应该不会有混乱。
本文转自:http://blog.csdn.net/zhaoyazhi2129/article/details/32080827