温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

同一张图片从res和Sd卡中读取显示大小不一样

发布时间:2020-07-25 19:29:57 来源:网络 阅读:1001 作者:zhichengAndroid 栏目:开发技术

 从res中显示的图片,系统会把它的密度默认为机器的密度,而从sd卡中读出的图片则默认为160dpi。因此在屏幕上显示的大小可能会不一样。解决办法:

1.根据手机的屏幕密度更改图片的大小。如手机屏幕密度为240dpi(hdpi),则可将图片的大小改变为240/160*原图大小,此时放在sd卡中再取出显示就和原来的图片放在res中取出显示一样。

2.应用中从sd卡中获取的图片,一般都是从网络上下载下来的,因此,获取资源时可将图片的宽、高一并获得,然后在程序中设置ImageView的宽高。

3.网上看到的,还没试,先保存下来。

1、得到资源目录下的drawable

BitmapDrawable drawable = (BitmapDrawable) getResources().getDrawable(R.drawable.test);

2、得到这个drawable的宽高

int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();

3、得到sdcard下目录的bitmap 

Bitmap bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(testUrl), w, h, true);

// Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter) 这个方法就是核心方法  设置createScaledBitmap filter 为true 即可变位图

4、将bitmap转换成drawable

BitmapDrawable drawable =new BitmapDrawable(getResources() , bitmap);

5、将drawable的密度设置为本机密度 即:
drawable.setTargetDensity(getResources().getDisplayMetrics());

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI