您的位置:首页 > 移动开发 > Android开发

Android ImgaView背景图片不失真处理

2015-07-19 14:13 465 查看
需求:app的欢迎界面采用一个简单的ImageView'显示一张图片的形式,但是图片总是会失真、扭曲。由于本人强迫症严重。所以就考虑了所有的思路后,在参考了网友的建议后,采用动态进行适配。

解决方案:

1.计算出最佳的长宽比;

2.将图片按最佳长宽比进行整体放大、缩小;

3.将处理后的图片添加到ImageView中。

package com.horse.util;

import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.widget.ImageView;

/**
* 该应用程序的公共方法的集合类
* 作者:vaecer on 2015/7/19 12:03
* 邮箱:wuxm1011@163.com.
*/
public class SysUtil {

public void SysUtil() {

}
public static void setImageBackground(Bitmap bitmap, ImageView imageView, int width,
int height) {
//计算最佳缩放倍数,以填充宽高为目标
float scaleX = (float) width / bitmap.getWidth();
float scaleY = (float) height / bitmap.getHeight();
float bestScale = scaleX > scaleY ? scaleX : scaleY;
//以填充高度的前提下,计算最佳缩放倍数
float subX = (width - bitmap.getWidth() * bestScale) / 2;
float subY = (height - bitmap.getHeight() * bestScale) / 2;

Matrix imgMatrix = new Matrix();
imageView.setScaleType(ImageView.ScaleType.MATRIX);
//缩放最佳大小
imgMatrix.postScale(bestScale, bestScale);
//移动到居中位置显示
imgMatrix.postTranslate(subX, subY);
//设置矩阵
imageView.setImageMatrix(imgMatrix);
imageView.setImageBitmap(bitmap);
}
}

DisplayMetrics disMetrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(disMetrics);
int width = disMetrics.widthPixels;
int height = disMetrics.heightPixels;
ImageView welcomeBackground = (ImageView) findViewById(R.id.welcome_bg);
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.cover);//link the drable image
SysUtil.setImageBackground(bitmap,welcomeBackground,width,height);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: