在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))大小需要手动调。

如果你提供了完整的各种分辨率下的图片的话,两种方法都应该不会有混乱。


更多相关文章

  1. 同时兼容高低版本的setBackground跟setTextColor方法
  2. Android 屏幕分辨率
  3. 四极管:I2CTools编译方法
  4. 检查ArrayList是否只包含null值的方法。
  5. 不同Android版本设备正确获取屏幕分辨率的通用方法
  6. studio更新时候,不小心点了ignore,无法更新的解决方法
  7. android之发送短信的方法研究
  8. SQLite的Android光标在方法调用时崩溃
  9. android 2D 游戏的开发的方法

随机推荐

  1. android技巧:把自己的app变成手机系统自
  2. Android获取明天日期
  3. ViewPager的循环滑动
  4. android中fragment和activity之间相互通
  5. Android UI之弹出对话框
  6. 如何在Android上使用OpenGL ES 2.0绘制点
  7. android编程铁定会碰到的问题 adb 出错 F
  8. Android 时间日期选择器的用法
  9. listview 通过筛选全部城市显示出搜索的
  10. Android 自动编译、打包生成apk文件 1 -