iv.setMaxHeight(dm.heightPixels/2);
iv.setMaxWidth(dm.widthPixels/2);
我用上面的代码把imageview的大小都限制到了屏幕的一半,大部分图片都能自动缩放。
但是只要是长图,如果运行的模拟设备屏幕太小都会强退,如果设备屏幕够大的就会自动缩小。
比如,一张长图,在平板电脑的设备里可以显示,但是放到手机屏幕上就会强退,为什么会这样啊?该怎么解决呢?

解决方案 »

  1.   

    和ImageView的大小有关系?貌似只和图片的大小有关吧?解图片的时候设置一下inSampleSize试试
      

  2.   

    OOM 百度一下 你就有答案了
      

  3.   

    确实是和图片大小有关,可是没法解决,所以才来问原因的。
    我用的不是bitmap,我是直接用imageview.setresource来加载图片。
      

  4.   

    setResource只不过是系统帮你解成bitmap而已
      

  5.   

     BitmapFactory.Options bitOptions=new Options();
            //设置读进来的比例,以原来的1/10来读取
          bitOptions.inSampleSize=10;
     Bitmap bitmap= BitmapFactory.decodeFile("/sdcard/a.jpg",bitOptions);
    iView.setImageBitmap(bitmap)
    能够实现大小变为原来的十分之一
      

  6.   


    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
      

  7.   

    bitOptions.inSampleSize=10;  不是表示 原来的1/10 
      

  8.   


    这个确实能缩小图片,也能让超出屏幕长度的图片能正常打开,可以有一两张图片并没有缩小,这个我就不明白了。
    因为我的图片是用id打开的,所以我没有用decodeFile,我用decodeResource同样达到了用bitmap解码的效果。
      

  9.   

    先计算长度再decode出来就可以了