Imageview在部分机器上oppo find 5等系列高分辨率机器上缩小的Bug解决

                  Imageview在部分机器上oppo find 5等系列高分辨率机器上缩小的Bug解决

  今天出现了个Bug,布局中的Imageview在某些高分辨率机器上出现莫名其妙缩小情况。
比如分辨率为 1920×1080像素上出现缩小。图片非常小。不知道为什么。首先我的解决方法是不断的更改
Imageview的参数感觉是不是参数出的问题呢?发现怎么改都不不管用。
尝试使用判断分辨率的方法。直接设置高低,这样导致失真拉伸严重,被同组其他人不赞成这种使用方法。
于是开始做实验,将图片下载到R.drawalble文件里显示正常,是什么原因导致不正常的呢?
最后发现问题了。类《BitmapManager有Bug》里面有个方法
     
  private   void  getFromSDCard(Context context, String url, ImageView imageView,  int  width,  int  height)   
 {
        String fileName  = getFileName(url);
        File file  =  new File(ImageUtil.ImageCachePath, fileName);
        FileInputStream fis;
         try
        {
            fis  =  new FileInputStream(file);
             // Drawable d = Drawable.createFromStream(fis, "pic");
            TypedValue value  =  new TypedValue();
            Options options  =  new Options();
            options.inTargetDensity  = value.density;
            options.inDensity  = value.density;
            options.inSampleSize  =  1;
            options.inScaled  = false;
            Drawable d  = Drawable.createFromResourceStream(context.getResources(), value, fis,  "src", options);
            putBitmapToCache(url, d);
            imageView.setImageDrawable(d);
            System.out.println( "set imager Resuouts  success ...lixiaodaoaaa...");
        }  catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
    }

我们在开发过程中经常要将sd卡或网络图片加载为Drawable来使用。有很多人为了方便使用

Drawable.createFromStream(stream, "src")。

 

    但是使用这个方法有一个问题:相同的图片,一个使用drawable id来配置的,另一个通过createFromStream(stream, "src")来加载显示的图片变小。这是因为createFromStream(stream, "src")加载图片的drawable,会默认当然mdpi的手机来处理。而drawable id加载图片时,会根据当前手机的dpi来加载图片。drawable id的图片放在hdpi时,显示的图片大小就不同了。但是,可以使用另外一个函数。

Drawable.createFromResourceStream(context.getResources(), null, stream, "src", null),它可以根据当前手机dpi来加载图处。最后解决问题。


你可能感兴趣的:(imageview,失真,高分辨率缩小)