同一张图片从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());
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());
相关文章推荐
- 读取网络图片下载到SD卡并显示在ImageView中
- Android从SD卡读取图片并显示
- android:读取SD卡中的图片显示出来(缩略图),SD卡工具类(13)
- android读取Assets图片资源保存到SD卡然后显示到ImageView里 实例
- Android中读取SD卡中的图片,并显示到ListView
- android TV端如何读取微信网页版二维码显示生成一张图片
- linux下从spi中读取一张logo图片并显示
- Android之---ImagView显示图片(将一张图片按原图大小合理显示在imageView上,避免OOM)
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- OpenCV入门二:OpenCV读取一张图片显示,并将其重写为灰度图
- 最简单的openCV语言,读取和显示一张图片
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码
- android屏幕单位----真机与模拟器获取同一图片显示大小不一样
- 制作电子相册(sd卡读取bmp图片显示在tft彩屏上)读取fat32的步骤非常简单的方法
- UNO R3从SD卡读取图片并显示到2.2寸液晶屏上(220x176)
- 单片机读取SD卡中BMP图片文件并送往TFT彩屏上显示(测试成功)(一)
- contentMode与clipsToBounds合用实现显示图片的内容与实际图片大小不一样的特殊情况
- android 根据SD卡中图片路径读取并显示SD中的图片——源代码