画廊显示强制关闭错误
问题描述:
我创建了一个应用程序,其中我创建了画廊和下面的画廊我在缩放视图中显示所选图像...当我有超过2个图像,然后我的画廊显示强制关闭错误,当我点击从图像。我需要帮助的这个..画廊显示强制关闭错误
我的应用程序的代码是:
img = (ImageView) findViewById(R.id.GalleryView);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Gallery g = (Gallery) findViewById(R.id.gallery);
// set gallery to left side
MarginLayoutParams mlp = (MarginLayoutParams) g.getLayoutParams();
mlp.setMargins((int)-(metrics.widthPixels/2 + 35), mlp.topMargin,mlp.rightMargin, mlp.bottomMargin);
imageAdapter = new ImageAdapter(this,imgarr);
g.setAdapter(imageAdapter);
if(imgarr.length > 1)
{
img.setImageURI(Uri.parse(imgarr[0]));
}
g.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
dialog = ProgressDialog.show(ImageGallery.this,
"Loading Image", "Please wait...", true);
img.setImageURI(Uri.parse(imgarr[position]));
dialog.dismiss();
}
});
ImageAdapter class:
public class ImageAdapter extends BaseAdapter {
int mGalleryItemBackground;
private Context mContext;
String[] imgArray;
public ImageAdapter(Context c,String[] imgArray) {
mContext = c;
TypedArray attr = mContext
.obtainStyledAttributes(R.styleable.ImageGallery);
mGalleryItemBackground = attr.getResourceId(
R.styleable.ImageGallery_android_galleryItemBackground, 0);
this.imgArray = imgArray;
attr.recycle();
}
public int getCount() {
return imgArray.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(mContext);
//Toast.makeText(getApplicationContext(), "Image path from gallery : " + imgArray[position],
//Toast.LENGTH_SHORT).show();
//Bitmap bitmap = BitmapFactory.decodeFile(imgArray[position]);
Log.d("cursor lengh :", "" +imgArray[position]);
//i.setImageBitmap(bitmap);
i.setImageURI(Uri.parse(imgArray[position]));
i.setLayoutParams(new Gallery.LayoutParams(80, 70));
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setBackgroundResource(mGalleryItemBackground);
return i;
}
}
我有这些错误:
答
我觉得你在这行越来越错误。
img.setImageURI(Uri.parse(imgarr[position]));
错误虚拟机预算表明图像是高分辨率,并且尺寸太大,无法容纳。
Sol:你需要缩小图像的大小。
您可以使用inSampleSize
或createScaledBitmap
或this link
也明白如何使用视图,并释放其内存为efficiancy。
快乐编码:)
+0
我使用inSampleSize,同时我在onActivityResult方法中将图像保存到SD卡...我也尝试了链接的代码,你已经发送给我..但没有改变!仍然这个错误来了...我的代码是: BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 3; bitmap = BitmapFactory.decodeFile(path,options); – 2012-03-22 05:10:21
而不是在这里粘贴logcat图片,你可以改为粘贴logcat日志本身?这将非常有帮助。可见性问题。我只能看到'OutOfMemoryError:位图大小超过虚拟机预算',这意味着你的位图是巨大的。 – Ghost 2012-03-21 12:11:33