尝试在单个滚动网格视图中显示一些壁纸时遇到了一些问题。在我的网格视图中,我希望用户能够滚动浏览 6 张图像。
我遇到的问题是加载图像时在特定设备上出现“java.lang.OutOfMemoryError”崩溃。该应用程序不会在我自己的手机(Sony Xperia T,800x1280)上崩溃,但在我朋友的手机(Samsung GS2,800 x 480)上崩溃。我尝试加载的图像的分辨率为 1280x800(大小从 200-350kb 不等)。我想我知道如何解决这个问题,但需要帮助解决如何完成它。
有没有办法将图像缩小到用户用来节省内存的设备的相应分辨率?
这是我正在使用的代码,希望有人能给我一些指导。
适配器视图类:
package com.question;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class AdapterViewADV extends BaseAdapter {
private Context mContext;
public Integer[] mThumbIds = {
R.drawable.Image1,
R.drawable.Image2,
R.drawable.Image3,
R.drawable.Image4,
R.drawable.Image5,
R.drawable.Image6
};
public AdapterViewADV(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(NO_SELECTION, NO_SELECTION));
return imageView;
}
}