我有一个我要在画布上显示的位图,我希望它的大小(宽度和高度)相对于屏幕大小,所以如果我有一个大屏幕,位图会很大,如果我有一个小屏幕位图会很小。)
我有两个选择:
创建位图的多个版本,每个版本的大小不同,并将它们放在适当的可绘制目录中。
只使用一个位图大小,只需相对于画布大小动态缩放它,然后根据需要绘制它。
Google似乎更喜欢第一种方式,但我不知道为什么。有人能告诉我什么是首选方式吗?
答案 0 :(得分:0)
尝试此解码位图:
其中imagefilepath是图像的路径名,它将在String中隐藏,使用
转换为File文件照片=新文件(imageFilePath);
照片是图片的文件名,现在您可以根据自己的要求设置高度和宽度。
Bitmap bitmap = decodeFile(photo);
bitmap = Bitmap.createScaledBitmap(bitmap,150, 150, true);
imageView.setImageBitmap(bitmap);
private Bitmap decodeFile(File f){
try {
//decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f),null,o);
//Find the correct scale value. It should be the power of 2.
final int REQUIRED_SIZE=70;
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}
//decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {}
return null;
}
答案 1 :(得分:0)
如果您只需要知道这两个选项中最好的选项,那么我就说选项1.对于无法处理大位图的小型手机,选项2将会出现问题。