转自:http://blog.csdn.net/x605940745/article/details/32325793 用于备忘
第一种方法:在ImageView的t同事设置两个属性
Android:adjustViewBounds="true"
android:scaleType="fitXY"
第二中方法:用IamgeView的 android:scaleType 设置属性的时候 填充屏幕出现的各种问题
/**
* 将图片等比例缩放 setAdjustViewBounds setMaxWidth setMaxWidth必须同时设置才有效
*
* @param context
* @param view
* 父容器
* @param image
* 图片控件
* @param source
* 图片资源
*/
public static void setImageViewMathParent(Activity context, LinearLayout view,
ImageView image, int source) {
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),
source);
DisplayMetrics displayMetrics = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay()
.getMetrics(displayMetrics);
float scalew = (float) displayMetrics.widthPixels
/ (float) bitmap.getWidth();
image.setScaleType(ScaleType.MATRIX);
Matrix matrix = new Matrix();
image.setAdjustViewBounds(true);
if (displayMetrics.widthPixels < bitmap.getWidth()) {
matrix.postScale(scalew, scalew);
} else {
matrix.postScale(1 / scalew, 1 / scalew);
}
image.setMaxWidth(displayMetrics.widthPixels);
float ss = displayMetrics.heightPixels > bitmap.getHeight() ? displayMetrics.heightPixels
: bitmap.getHeight();
image.setMaxWidth((int) ss);
view.addView(image);
if (bitmap != null && bitmap.isRecycled()) {
bitmap.recycle();
}
}