首先设置布局中的imageView如下
<ImageView
android:id="@+id/imge2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="测试2" />
image2.setBackground(getResources().getDrawable(R.drawable.blackk));//变形
image2.setBackgroundResource(R.drawable.blackk);//变形
image2.setBackgroundDrawable(getResources().getDrawable(R.drawable.blackk));变形
说明上面3种方法实现同样的功能及效果
image2.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); //不会变形
String path=Environment.getExternalStorageDirectory()+File.separator+"test1.jpg";
Bitmap bm = BitmapFactory.decodeFile(path);
image2.setImageBitmap(bm);//不会变形
image2.setImageResource(R.drawable.blackk);//不会变形
说明以上3种方法实现同样的功能及效果
总结凡是做背景的,容易图片变形
setBackground,setBackgroundResource,setBackgroundDrawable对应属性background,会根据ImageView组件给定的长宽进行拉伸。
setImageBitmap,setImageResource对应属性src,存放的是原图的大小,不会进行拉伸。如果想改变src的大小,应该使用属性scaleType。
ScaleType:CENTER 居中,不执行缩放
CENTER_CROP 按原始比例缩放, 裁剪中间部
CENTER_INSIDE 按原始比例缩放, 居中,不裁剪
FIT_CENTER 居中缩放
FIT_START 上对齐缩放
FIT_END 下对齐缩放
FIT_XY 不按比例拉伸缩放
MATRIX 用矩阵来绘制