2012-05-03 4 views
0

私は現在、さまざまな画面サイズのビットマップを再取り付けで働くこのようなコードを使用します。Bitmap ResizingでPersistentBitmapを使用するには?

A.back = GPATools.ResizeTransparentBitmap(A.back, 150, 37, 
        Bitmap.FILTER_LANCZOS, Bitmap.SCALE_TO_FIT); 

はしかし、私はアプリをロードするたびに、それは再びそれをリサイズするのに時間がかかるので、私は言われてきましたこのコードを使用してください:

class PersistableBitmap implements Persistable { 

    int width; 
    int height; 
    int[] argbData; 

    public PersistableBitmap(Bitmap image){ 
     width = image.getWidth(); 
     height = image.getHeight(); 
     argbData =new int[width * height]; 
     image.getARGB(argbData,0, width,0,0, width, height); 
    } 

    public Bitmap getBitmapImage(){ 
     Bitmap image =new Bitmap(width, height); 
     image.setARGB(argbData,0, width,0,0, width, height); 
     return image; 
    } 

私の問題は、私は2つを一緒に実装する方法はありません!みんな/ガール助けてください、ありがとう!

+0

は、少なくともスニペットにいくつかの空白を追加します! –

+0

あなたのビットマップが本当に大きいと仮定して、リサイズが永続性からロードするよりも時間がかかることを証明するための適切なテストを行ったとします。そうでない場合は、事前にスケーリングされたイメージをプロジェクトリソースに含めるか、ランタイムストアにビットマップをキャッシュすることをお勧めします。 –

+0

空白?とにかく、私はたくさんのイメージを持っています、彼らは大きくはありませんが、ちょうど大量です。誰かが、それがメインUIをブロックして別のスレッドに入れるかもしれないと示唆しましたが、私はそのことをどうやって行うのか正確には分かりません。 –

答えて

1
+0

私はすでに永続的なデータストアのための永続的なストアを使用する方法を知っている、そのビットマップを格納することは私の現在の問題です。とにかく、ありがとう。 –

+3

「ビットマップ」のインスタンスは、「規則的なデータ」すなわちプリミティブデータ型の単なる組み合わせである。あなたは、永続的なストアを通常のデータのために使う方法をすでに知っていると言いました、そして、 'PersistableBitmap'クラスの問題は何ですか? 'PersistableBitmap'クラスの' width'、 'height'、' argbData'だけを格納するだけです。また、そのオブジェクトを永続ストアから読み終えたら、 'getBitmapImage()'を使って 'Bitmap'を取得することができます。混乱がある場合は、上記のいずれかのリンクを参考にしてください。 – Rupak