Android显示从网络下载图片偏小的问题

在从网络上下载图片时发现图片偏小,原来以为是BitmapFactory.decodeStream时BitmapFactory.Options的选择问题,但是试过了很多方法,达不到理想效果,后来发现是BitmapDrawable的使用问题,使用了BitmapDrawable(Bitmap bitmap)的构造方法,其实应该使用的是BitmapDrawable(Resources res, Bitmap bitmap),看注释应该明白:

    /**
     * Create drawable from a bitmap, setting initial target density based on
     * the display metrics of the resources.
     */

BitmapDrawable(Bitmap bitmap)本身是个Deprecated的方法,它没有制定resources,就不知道屏幕的分辨率,那么mTargetDensity就用默认值DisplayMetrics.DENSITY_DEFAULT = 160,就会导致图片解码不合适。
用BitmapDrawable(Resources res, Bitmap bitmap)就可以了。
下面附上网络下载图片的两种方法:

try {
    String url = params[0];
    InputStream inputStream = new URL(url).openStream();
    BitmapFactory.Options decodeOptions = new BitmapFactory.Options();
    decodeOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
    decodeOptions.inDensity = 0;
    Bitmap bitmap = BitmapFactory.decodeStream(inputStream,null, decodeOptions);
    return new BitmapDrawable(getResources(), bitmap);
} catch (Exception e) {
    e.printStackTrace();
}
return null;
try {
    URL url = new URL(params[0]);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setConnectTimeout(5 * 1000);
    conn.setRequestMethod("GET");
    if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
        InputStream inStream = conn.getInputStream();
        BitmapFactory.Options decodeOptions = new BitmapFactory.Options();
        decodeOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
        decodeOptions.inDensity = 0;
        Bitmap bitmap = BitmapFactory.decodeStream(inStream,null, decodeOptions);
        return new BitmapDrawable(getResources(), bitmap);
    }
} catch (Exception e) {
    e.printStackTrace();
}
return null;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒江蓑笠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值