2012-04-01 6 views
-1

ここでは、AndroidのAssetManagerからリソースのスタックを作成する方法について読んだthe threadです。アセットやresフォルダからAndroidにリソースのスタックを作成するにはどうすればいいですか?

「AssetManagerからリソースのスタックを作成する」とはどういう意味ですか?私は使用する必要があります:

Stack stack = new Stack(); 
stack.push(this.getAssets()); 

または何か?誰かがヒントを与えることができれば、私はそれを感謝します。質問が具体的でない場合は、それに関するコメントに投稿してください。質問を改善します。前もって感謝します。

答えて

2

Aスタックは

スタックを使用することの利点は、あなたは、単にスタックにでpush(Object o)オブジェクトはに追加することができるということです単にオブジェクトのコレクションなどの配列、ArrayListを、コレクションと同じですコレクション、およびpop()オブジェクトをスタックから取り除きたいときに使用します。スタックはどのサイズにも拡張できます。あなたは、おそらくこのような何かをする必要があるだろう

...

Stack stack = new Stack(); 
AssetManager assets = this.getAssets(); 
String[] assetLocations = assets.list(); 

for (int i=0;i<assetLocations.length;i++){ 
    byte[] asset = loadAssetFromStream(assetLocations[i]); // you need to write this 
    stack.push(asset); 
} 

AssetManagerは、資産を読み取るためopen()方法を持っている - あなたはおそらくbyte[]アレイ等のメモリに各資産を(読む必要があります実際にはObject)、各オブジェクトをスタックに押し込みます。

私はバイト配列に入力ストリームからファイルをロードする場合、それはまた、ロードされたファイルのサイズは、バイト配列の8倍の大きさであることを意味するのでしょうか?詳しく

+0

いいえ、私はビットとバイトが混ざっていると思います。何らかの理由でファイルが圧縮されていない限り(かなり特定のアセットは個別に圧縮されていない)、 'byte []'配列は元のファイルと同じサイズになります(ファイルは通常バイト単位で測定されます)。 'AssetManager'で' openFd(String) 'メソッドを使用して' AssetFileDescriptor'を取得することができます。このメソッドは 'getLength()'を呼び出してファイルのサイズを取得することができます。 – wattostudios

+0

ああ!ありがとうございました!それに伴い、より有益なヒントをいただき、ありがとうございます。私は今までファイルの合計サイズを取得する方法を知りませんでした。 AssetFileDescriptor.getLength()は私のニーズに合っています。 –

関連する問題