首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

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

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

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来加载图处。最后解决问题。


热点排行