これは、さまざまな密度管理の一般的なエラーであるため、これらが質問に対する回答です。
1.-いいえ、アセットの保存方法ではありますが、はい、「アセットが現在の密度の下位階層にある場合のみ」たとえば、ドローアブル(デフォルトの非特定密度)とドローアブル-ldpiにアセットがある場合AND中密度デバイスでアプリを実行すると、OS はイメージのサイズを -ldpi から密度に変更しようとします (イメージで dps を使用している場合はメモリが消費されます)。OS がアセットを処理する方法は次のとおりです。
あなたが持っているとしましょう:
res-
-drawable
-icon.png
-drawable-ldpi
-icon.png
-drawable-mdpi
-icon.png
高密度デバイスでアプリを実行している場合、OS は最初に drawable-hdpi でアセットを見つけようとしますが、アセットが存在しないため、見つかるまで階層を下っていきます。この場合はdrawable-hdpi では見つけられませんが、drawable-mdpi で見つけられ、それを使用して入力されます。すべて問題ありませんが、アセットの密度の違いがメモリにかかります。
OSがアセットフォルダー階層を下って最後まで進み、たとえば何も見つからない場合、正確なエラーが発生します。
あなたが持っているとしましょう:
res-
-drawable-hdpi
-icon.png
このアプリを HIGH Desnity Device で実行すると、最初の試行でアセットが検出され、階層を下ることがないため、完全に実行されます。Extra High Density Device の場合も同様です。階層を下って drawable-hdpi に移動すると、次のステップでそれが見つかり、問題なく動作しますが、MEDIUM Density の場合、そこにないため、最初に drawable-mdpi で見つけようとします。 drawable-ldpi でそれを見つけるのも運が悪いので、「デフォルト (drawable)」に移動します。これは、OS がアセットが見つからないか、BOOOMリソースが見つかりません。例外があります。このメカニズムは、Androidのほぼすべてのリソースに適用されます
2.-はい、見栄えを良くするために、アセットをldpiで作成し、drawable-ldpiまたはdrawable(デフォルト-密度なし)に保存する必要があります。
この情報はすべて本から抜粋したものです。まだ疑問がある場合は、Eclipse で空の Android プロジェクトを作成し、SDK が特定のサイズで各密度に 1 つの icon_launcher.png img を作成して、この問題を正確に処理する方法に注目してください。私の経験上の推奨事項として、常にすべての密度を処理することが有用であることがわかりましたが、すべてのアセットをデフォルト フォルダーに平均的な密度/品質で保持して、実行中に 1 つの密度を忘れた場合に備えて、この正確な問題を回避することがより重要です。開発は、クラッシュよりもぼやけたアセットの方が適しています。
お役に立てれば。
よろしく!