2011-07-13 7 views
1

私はアンドロイドのプログラミングには新しく、最近いくつかのアプリケーションを開発することを学んでいます。画像を扱うまではそれほど大きな問題はありませんでした。私は、Drawableフォルダに保存されている画像(JPEG/PNG)を表示するeBookのような単純なアプリケーションを開発しようとしています。onCreateでビットマップを読み込むとアクティビティが遅くなります

私の最初のアプローチはギャラリーウィジェットを使用することでしたが、適切なズームを実装できませんでした。だから私は今、単純なImageviewを使用して一度に単一のビットマップを表示し、タッチイベントのビットマップを変更またはズームします。これを行うために、アクティビティの起動時にビットマップ配列にすべてのビットマップをデコードして、いつでも使用できるようにしなければなりませんでした。

私のアプリケーションはギャラクシータブで正常に起動しますが、それ以外のすべての電話は起動に約3〜5秒かかります。私は、開始時にビットマップをロードする簡単な方法があるかどうかを知りたかっただけです。私の質問が既に尋ねられたら私を許してください、しかし私は多くのstackoverflowを検索し、私の質問に特定の答えを見つけることができませんでした。ここに私のコードです。誰もが助けることを望む。

package .... 

    imports .... 

    public class ImageViewFlipper extends Activity { 

    private ViewFlipper viewFlipper; 
    private Bitmap[] bMap= new Bitmap[15]; 
    private TextView currentpage; 
    private ImageViewZoom iv; 
    private imagenum=3; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 
    bMap[0] =BitmapFactory.decodeResource(getResources(), R.drawable.page); 
    bMap[1] =BitmapFactory.decodeResource(getResources(), R.drawable.page1); 
    bMap[2] =BitmapFactory.decodeResource(getResources(), R.drawable.page10); 
    bMap[3] =BitmapFactory.decodeResource(getResources(), R.drawable.page11); 
    bMap[4] =BitmapFactory.decodeResource(getResources(), R.drawable.page12); 
    bMap[5] =BitmapFactory.decodeResource(getResources(), R.drawable.page13); 
    bMap[6] =BitmapFactory.decodeResource(getResources(), R.drawable.page14); 
    bMap[7] =BitmapFactory.decodeResource(getResources(), R.drawable.page2); 
    bMap[8] =BitmapFactory.decodeResource(getResources(), R.drawable.page3); 
    bMap[9] =BitmapFactory.decodeResource(getResources(), R.drawable.page4); 
    bMap[10] =BitmapFactory.decodeResource(getResources(), R.drawable.page5); 
    bMap[11] =BitmapFactory.decodeResource(getResources(), R.drawable.page6); 
    bMap[12] =BitmapFactory.decodeResource(getResources(), R.drawable.page7); 
    bMap[13] =BitmapFactory.decodeResource(getResources(), R.drawable.page8); 
    bMap[14] =BitmapFactory.decodeResource(getResources(), R.drawable.page9); 

    currentpage=(TextView)findViewById(R.id.textview); 
    iv = (ImageViewZoom) findViewById(R.id.zero); 
    iv.setImageBitmapReset(bMap[imagenum], 0, true); 
    viewFlipper = (ViewFlipper) findViewById(R.id.flipper); 
    ...... 

imagenumの値はonFlingメソッドによって変更されます。ImageViewZoomはカスタムImageViewクラスです。私はこの多くの情報が十分であることを望みます。

答えて

2

ビットマップの読み込みをすべてAsyncTaskに移動し、onCreate内で開始することをお勧めします。すべての画像がロードされる前に、賢明なものを表示するように活動をデザインします。 AsyncTaskは、すべてのイメージをロードしてonPostExecuteで配信するか、またはロードされたときにそれぞれonProgressUpdateを使用して配信することができます。

1

最初に2枚または3枚の画像をロードしてから、後で他の画像をバックグラウンドで読み込むのはなぜですか?

関連する問題