0

画像とグリッドビューを表示したいギャラリーアイテムをクリックしたときに、Androidアプリケーションにギャラリーがあります。ギャラリーに画像が3つしかない場合に実行し、クリックすると正しく表示されます。しかし、現在、ギャラリーには7つの画像があり、各ギャラリーアイテムには、ギャラリーを表示する4つの画像があります。これでは、drwawable画像の配列のみを使用しています。今回は、Java.lang.OutOfMemoryとして例外が発生しました
。以下のコードを使用します。

   public ImageThemeAdapter(Context c, Integer[] mImageIds) {
     imagesId=mImageIds;
     bitmap=new Bitmap[imagesId.length];
     mContext = c;
     TypedArray ta=obtainStyledAttributes(R.styleable.Gallery1);
        imageBackground=ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
        ta.recycle();
        for (int i = 0; i <imagesId.length; i++) {
           bitmap[i]=BitmapFactory.decodeResource(mContext.getResources(),imagesId[i]);
        }
    }

    public int getCount() {
        return bitmap.length;
    }

    public Object getItem(int position) {
        return bitmap[position];  
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {   

        ImageView i = new ImageView(mContext);

        i.setImageBitmap(bitmap[position]);
        i.setScaleType(ImageView.ScaleType.FIT_XY);
        i.setLayoutParams(new Gallery.LayoutParams(130, 120));
       // i.setLayoutParams(new Gallery.LayoutParams((ScreenWidth*80)/100, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
        i.setBackgroundResource(imageBackground);
        return i;   
    }

提案があれば教えてください。前もって感謝します。私はこのような要件があります ギャラリーとグリッドビュー

4

1 に答える 1

0

Allocation Tracker (Windows -> Shows View -> Other -> Android -> Allocation Tracker) を使用して手順を繰り返し、さまざまなオブジェクトへのメモリ割り当てを確認してください。

主な理由は、GridView を作成しているときにカスタム ビューのレイアウトが原因である可能性があり、実行時にギャラリーの画像のサムネイルを作成することになります。一度に利用できる画像の最小数でグリッドビューを作成する必要がある場合があります。

于 2012-07-23T12:58:40.820 に答える