8

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResourcesを理解しようとしていますが、drawable と drawable-ldpi の両方を持つポイントがあるのだろうか? 私が尋ねる理由は、さまざまな例からいくつかのドローアブルをコピーしたためです。drawable-mdpi、drawable-hdpi、drawable-xhdpi に Holo テーマのアイコンがありますが、ランチャー アイコンは drawable-ldpi にも存在します (ただし、drawable-ldpi には他のファイルはありません)。また、ドローアブル ディレクトリにのみ存在するカスタム ドローアブルもいくつかあります。

次に例を示します。

res/drawable/x.png
res/drawable-ldpi/ic_launcher.png
res/drawable-mdpi/ic_launcher.png
res/drawable-mdpi/ic_download.png
res/drawable-hdpi/ic_launcher.png
res/drawable-hdpi/ic_download.png
res/drawable-xhdpi/ic_launcher.png
res/drawable-xhdpi/ic_download.png
res/drawable-xxhdpi/ic_launcher.png

私のアプリがたまたま ldpi デバイスで実行された場合、ic_download ドローアブルがないためにクラッシュするため、これは不適切な構成であることを正しく理解していますか? では、正しい解決策は何ですか?すべてのドローアブルのサイズを ldpi に変更する必要がありますか? または、安全のために、各ドローアブルの既存の最小バージョンをドローアブルに追加する必要がありますか?

4

5 に答える 5

1

ldpi デバイスでは、drawable-ldpi フォルダーに適切なドローアブルが見つからない場合、アプリはドローアブル フォルダーからドローアブルを取得しますが、ドローアブルが大きすぎると OutOfMemoryError が発生する可能性があります。これが、適切にサイズ変更されたドローアブルで drawable-ldpi フォルダーを使用する必要がある理由です。

于 2013-06-06T17:17:31.097 に答える
1

フォルダーの階層が正確にどのように機能するか、および適切な画像を適切なフォルダーに設定することが重要である理由を説明しましょう。

Android がファイルを選択する方法は、アプリのピクセル密度を実行しているデバイスに基づいており、その密度 (hdpi など) で開始されます。リソースが見つからない場合は、「デフォルト」まで階層全体を下ります。さまざまな密度のフォルダーにリソースが見つからない可能性があり、OS は文句を言いませんが、リソースがデフォルトのフォルダーに見つからない場合、OS は問題があることを知らせます。見つけにくいバグがいくつかあります。この問題について、例を挙げましょう。drawable-hdpi フォルダーのみにリソースがあるとします。指定した ID を持つリソースがあり、hdpi デバイスでアプリを実行する場合、コンパイラーは文句を言いません。問題はありませんが、アプリが ldpi デバイスで実行されている場合は、OSがldpiフォルダーでそれを見つけようとし、デフォルトでアプリがクラッシュし、クラッシュの原因となるリソースが含まれていないため、ほとんどの人はその部分をスキップしてすべてを「描画可能」(デフォルトフォルダー)に設定します。作業している密度に関係なく、OS は常にそこにあることを認識しますが、ここで考慮すべき重要な点は、ピクセルの適切な密度のための適切なリソースがない場合、OS 自体がそれを試みます。計算のためだけに大量のメモリを消費していることが判明した唯一のリソースの「サイズ変更」を行います。私が取り組んだプロジェクトの 1 つで、適切なピクセル密度に適切なリソースがなかったため、OS がすべてのサイズを変更していたため、OutOfMemoryError が発生していました。他のアクションのためのスペースがほとんどないアセット...

よろしく!

于 2013-06-06T17:32:22.257 に答える
1

Eclipse がランチャー アイコンを作成するとき、mdpi、hdpi、xhdpi、および xxhdpi に対してのみ作成します。それに基づいて、ldpiアイコンを作成する必要はなく、mdpiは自動的に縮小されると思います

于 2013-06-06T17:19:17.370 に答える
0

KitKat の AOSP ソースを見ると、一部の組み込みアプリには LDPI リソースがありません。そのため、私は言いたいのですが、それらはもう必要ありません。

于 2014-03-28T18:08:05.653 に答える