您的位置:首页 > 其它

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

2013-04-20 10:54 295 查看
从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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐