在手机中显示图片时可能图片是比较大的但是手机的内存是比较小的这时候手机就会失去响应。
这时候在手机上要显示图片的时候就应该对图片进行相应的 解决的思路就是:
一:首先拿到手机屏幕的大小
二:拿到图片的大小
三: 进行比较
四:根据比较的结果对图片进行缩放。显示。
代码例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_show = (ImageView) findViewById(R.id.iv_show);
//得到手机屏幕的宽高
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
windowHeight = wm.getDefaultDisplay().getHeight();
windowWidth = wm.getDefaultDisplay().getWidth();
}
public void load(View view){
//图片解析的配置
Options opts = new Options();
//不去真的解析图片 只是获取图片的头部信息 宽和高
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile("sdcard/a.jpg", opts);
int imageHeight = opts.outHeight;
int imageWidth = opts.outWidth;
//获得缩放比
int scalx = imageHeight/windowHeight;
int scaly = imageWidth/windowWidth;
int scale = 1;
if(scalx>=scaly & scaly>=1){
scale = scalx;
}
if(scaly>scalx & scalx>=1){
scale = scaly;
}
//真的解析图片
opts.inJustDecodeBounds = false;
opts.inSampleSize = scale;
Bitmap bitmap = BitmapFactory.decodeFile("sdcard/a.jpg", opts);
iv_show.setImageBitmap(bitmap);
}