3

私のアプリでは、ユーザーがクリックしたときに実行時に画像を交換したいと思います。

ユーザーが最初の画像をクリックしてから2番目の画像をクリックすると同時に、2つの画像ビューがあります。最初の画像ビューの画像のビットマップを取得し、このために2番目の画像ビューに割り当てます。次のコードを使用しました。

public Bitmap createBitmap(ImageView imageview) {
    imageview.setDrawingCacheEnabled(true);
    imageview.buildDrawingCache(false);

    if(imageview.getDrawingCache() != null) {
        Bitmap  bitmap = Bitmap.createBitmap(imageview.getDrawingCache());
        imageview.setDrawingCacheEnabled(false);
        return bitmap;
    } else {
        return null;
    }
}

コードは正常に機能していますが、キャッシュが毎回クリアされるわけではなく、以前のキャッシュでビットマップが作成されたので、ビットマップキャッシュをクリアするにはどうすればよいですか?

4

2 に答える 2

2

これはサンプルです。たとえば、私が使用する場所Free the native object associated with this bitmapです。

Bitmap  bitmap;

public Bitmap createBitmap(ImageView imageview) {
    if (bitmap != null) {
        bitmap.recycle();
        bitmap = null;
    }
    bitmap = Bitmap.createBitmap(imageview.getDrawingCache());
    // Your Code of bitmap Follows here
}

ビットマップを使用する前に、オブジェクトを解放してください。

于 2012-05-29T05:18:55.437 に答える
1

bitmap.recycle();ビットマップを評価する前に使用して、キャッシュを再作成する前にキャッシュをクリアします。

于 2012-05-29T04:56:13.783 に答える