1

カードのデッキを使用するアプリケーションを開発しているため、アプリケーションに多くの PNG 画像があります。ファイルをより管理しやすくするために、アセット ディレクトリのサブ ディレクトリに配置しました。画像をres/drawableに入れるのではなく、これがパフォーマンスの問題になるかどうか疑問に思っています。R ファイルからアクセスできないことはわかっていますが、これはコーディングの便宜上のものでしょうか、それともパフォーマンスが低下するのでしょうか?

パフォーマンスの問題が発生する場合、多くの画像ファイルを含むアプリケーションは一般的にどのように編成されていますか? すべての画像ファイルが res/drawable ディレクトリに置かれているだけですか (サブディレクトリはサポートされていません)?

ご協力いただきありがとうございます!

4

2 に答える 2

0

唯一のパフォーマンスの問題は、SD カードからの画像の処理が常に遅くなることです (「常に」という言葉は強すぎるかもしれませんが、現在は確かにそうです)。

于 2011-06-04T15:33:19.060 に答える
0

このメソッドは、画像をアセット フォルダーから SD カードにコピーします。ここで、Jaydeep のフォルダーは、SD カード上の私のフォルダーの名前です。その場所でフォルダー名を使用できます。

public void copyImagesInSdcard()
{
    assetManager = mycontext.getAssets();
    assetManager1 = mycontext.getAssets();
    System.out.println("In copyImagesInSdcard");
    try 
    {
        str1=assetManager.list("");
        ss=assetManager1.list(str1[1]);
        InputStream is;
        //System.out.println(ss[0]);
        File file=new File(Environment.getExternalStorageDirectory().getPath() + "/Jaydeep's Folder");
        if(file.exists()!=true)
        {
        file.mkdir();
        }
        else
        {
            if(file.length()==0)
            {
                file.mkdir();
            }
            System.out.println("Length:"+file.length());
        }

            for(int i=0;i<ss.length;i++)
            {
            is=assetManager1.open(str1[1] + "/" + ss[i]);


            file=new File(Environment.getExternalStorageDirectory().getPath() + "/Jaydeep's Folder/" + ss[i] );

            FileOutputStream out=new FileOutputStream(file);
            //Bitmap bi = BitmapDrawable.createFromStream(is,ss[0]);


            byte b[] =new byte[4096];
            while (is.read(b) != -1) {

                out.write(b);
                }
                out.close();        
            }

    } 
    catch (IOException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
于 2011-06-04T05:17:59.443 に答える