public class MainActivity extends Activity {
private ImageView iv;
private int width;
private int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv = (ImageView)findViewById(R.id.iv);
//得到手机屏幕的宽高
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
width = wm.getDefaultDisplay().getWidth();
height = wm.getDefaultDisplay().getHeight();
//Call requires API level 13 (current min is 8)
//Point outSize = new Point();
//wm.getDefaultDisplay().getSize(outSize);//
//int width = outSize.x;
//int height = outSize.y;
}
public void click(View view){
//图片加载后大小小于堆内存(16M)用此方法可显示
//Bitmap bm = BitmapFactory.decodeFile("/sdcard/d.jpg");
//iv.setImageBitmap(bm);
//图片解析的配置
BitmapFactory.Options opts = new Options();
//不去真的解析图片,只是获取图片的头部信息,宽高。
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile("/sdcard/d.jpg", opts);
int imageWidth = opts.outWidth;
int imageHeight = opts.outHeight;
//计算缩放比例
int scaleX = imageWidth/width;
int scaleY = imageHeight/height;
int scale = 1;
if(scaleX>scaleY && scaleY>=1){
scale = scaleX;
}
if(scaleY>scaleX && scaleX>=1){
scale = scaleY;
}
//真的解析图片
opts.inJustDecodeBounds = false;
//采样率
opts.inSampleSize = scale;
Bitmap bm = BitmapFactory.decodeFile("/sdcard/d.jpg", opts);
iv.setImageBitmap(bm);
}
}