iv.setMaxHeight(dm.heightPixels/2);
iv.setMaxWidth(dm.widthPixels/2);
我用上面的代码把imageview的大小都限制到了屏幕的一半,大部分图片都能自动缩放。
但是只要是长图,如果运行的模拟设备屏幕太小都会强退,如果设备屏幕够大的就会自动缩小。
比如,一张长图,在平板电脑的设备里可以显示,但是放到手机屏幕上就会强退,为什么会这样啊?该怎么解决呢?
iv.setMaxWidth(dm.widthPixels/2);
我用上面的代码把imageview的大小都限制到了屏幕的一半,大部分图片都能自动缩放。
但是只要是长图,如果运行的模拟设备屏幕太小都会强退,如果设备屏幕够大的就会自动缩小。
比如,一张长图,在平板电脑的设备里可以显示,但是放到手机屏幕上就会强退,为什么会这样啊?该怎么解决呢?
我用的不是bitmap,我是直接用imageview.setresource来加载图片。
//设置读进来的比例,以原来的1/10来读取
bitOptions.inSampleSize=10;
Bitmap bitmap= BitmapFactory.decodeFile("/sdcard/a.jpg",bitOptions);
iView.setImageBitmap(bitmap)
能够实现大小变为原来的十分之一
Bitmap bt;
int intnt = 2;
while ( true ) {
Options op = new Options();
op.inJustDecodeBounds = true;
bt = BitmapFactory.decodeFile(mImagePath, op);
op.inSampleSize = intnt;
op.inJustDecodeBounds = false;
bt = BitmapFactory.decodeFile(mImagePath, op);
if ( bt != null ){
intnt = intnt+1;
if ( bt.getWidth() < 240 || bt.getHeight() < 240 ) { break;
}
}
}
bt就是等比缩放后的bitmap
这个确实能缩小图片,也能让超出屏幕长度的图片能正常打开,可以有一两张图片并没有缩小,这个我就不明白了。
因为我的图片是用id打开的,所以我没有用decodeFile,我用decodeResource同样达到了用bitmap解码的效果。