向imageView
显示图片的最佳做法是什么?我们有两种类型的图片,一种是bitmap
,另一种是URI
。如果我使用位图,
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
图像有点模糊。
如果我使用URI
,有时会出现内存问题。
URI imageUri = data.getData();
imageView.setImageURI(imageURI);
两者有什么区别?
答案 0 :(得分:2)
ImageView有4个API来指定图像。
这里setImageDrawable
是其他API所依赖的原始函数。其他3个只是帮助方法,使您编写更少的代码。
setImageURI
,setImageBitmap
都在UI线程上运行。我会说setImageBitmap
比第一个快一点。 setImageURI
确实取决于Uri资源的来源(例如,uri可能指向甚至没有存储在手机上的远程文件)。
setImageURI
()在UI线程上用作读取和解码不是更好,这可能会导致延迟打嗝。
最好使用以下内容: -
setImageDrawable(android.graphics.drawable.Drawable)
或setImageBitmap(android.graphics.Bitmap)
和BitmapFactory
代替。
您也可以从bitmap
返回uri
并在imageview
Uri imageUri = intent.getData();
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri);
Imageview my_img_view = (Imageview ) findViewById (R.id.my_img_view);
my_img_view.setImageBitmap(bitmap);
有时在imageview上加载大位图会导致内存不足异常......所以你应该有效地加载位图..
public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
mImageView.setImageBitmap(
decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 100));
请查看这些链接..以便更好地理解
答案 1 :(得分:1)
#!/bin/bash
function callsign() {
echo -e "Insert your call sign"
while true; do
read input
case $input in
[Aa,Kk,Nn,Ww][0-9][a-zA-Z][a-zA-Z] ) break;;
[Aa,Kk,Nn,Ww][a-zA-Z][0-9][a-zA-Z] ) break;;
[Aa,Kk,Nn,Ww][a-zA-Z][0-9][a-zA-Z][a-zA-Z] ) break;;
[Aa,Kk,Nn,Ww][0-9][a-zA-Z][a-zA-Z][a-zA-Z] ) break;;
[Aa,Kk,Nn,Ww][0-9][a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z] ) break ;;
* ) echo "please insert valid call sign.";;
esac
done
clear
}
callsign
是一张现成的图片(Bitmap
),而set of bytes with color data
是一条通向某事的路径。 URI
可以是URI
,也可以是http://google.com等等。