//当加载一张大图片的时候,会报内存溢出,所以我们必须把图片进行缩放
public class MainActivity extends Activity {
private ImageView imageView;
private int width;
private int height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
// 获取手机屏幕的分辨率 宽高
Display display = getWindowManager().getDefaultDisplay();
// 得到屏幕的宽和高
width = display.getWidth();
height = display.getHeight();
System.out.println("窗体的高度:" + height);
System.out.println("窗体的宽度:" + width);
Options options = new Options();
// 设置解析器,不会真正的解析这个位图 而是解析这个图片的out输出信息(宽度,高度)
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile("/sdcard/mm.jpg", options);
int picHeight = options.outHeight;
int picWidth = options.outWidth;
System.out.println("图片的高度:" + picHeight);
System.out.println("图片的高宽度:" + picWidth);
int scaleX = picWidth / width;
int scaleY = picHeight / height;
System.out.println("水平缩放的比例:" + scaleX);
System.out.println("垂直缩放的比例:" + scaleY);
int scale = 1;
// 判断水平缩放还是垂直缩放
if (scaleX > scaleY && scaleY > 1) {
// 水平缩放
scale = scaleX;
}
if (scaleY > scaleX && scaleX > 1) {
// 垂直缩放
scale = scaleY;
}
// 在这里去真正解析这个问题
options.inJustDecodeBounds = false;
// 缩放的比例
options.inSampleSize = scale;
Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/mm.jpg", options);
imageView.setImageBitmap(bitmap);
;
}
}
Android 加载大图片
最新推荐文章于 2014-05-25 22:22:34 发布