0

単一のスクロール グリッド ビューでいくつかの壁紙を表示しようとすると、いくつかの問題が発生しました。私のグリッド ビューには、ユーザーがスクロールできるようにする 6 つの画像があります。

私が抱えている問題は、画像をロードするときに特定のデバイスで「java.lang.OutOfMemoryError」クラッシュが発生することです。アプリは自分の電話 (Sony Xperia T、800x1280) ではクラッシュしませんが、友人の電話 (Samsung GS2、800 x 480) ではクラッシュします。読み込もうとしている画像の解像度は 1280x800 です (サイズは 200 ~ 350kb です)。私はこの問題を解決する方法を知っていると思いますが、それを達成する方法の解決策について助けが必要です.

ユーザーがメモリを節約するために使用しているデバイスの対応する解像度に画像を縮小する方法はありますか?

これが私が使用しているコードです。うまくいけば、誰かが私にガイダンスを与えることができます。

AdapterView クラス:

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;
}

}
4

1 に答える 1