0

私はAndroidの修飾子について本当に混乱しました。

のカスタムデザインを作成したいRatingBar。そこでrating_bar.xml、ファイルを作成してフォルダに入れましたdrawable。ソースは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background" android:drawable="@drawable/star_off"/>
    <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/star_on"/>
    <item android:id="@android:id/progress" android:drawable="@drawable/star_on"/>
</layer-list>

xhdpiディスプレイ専用のスターデザインがあります。star_onとstar_offの画像をdrawable-xhdpiフォルダーに配置すると、すべての異なる密度(mdpiとhdpi)に合わせてすべてが自動的にサイズ変更されると思いました。はい、サイズは変更されましたが、hdpiとmdpiのアーティファクトがいくつかありました。ここと同じ:AndroidカスタムRatingBar画像アーティファクト そこで説明されているソリューションを試しましたが、何も役に立ちませんでした。xhdpiデバイスにはアーティファクトはありませんが、mdpiおよびhdpiデバイスにはアーティファクトがあります。

次に、star_onとstar_offの画像をdrawable-nodpiフォルダーに配置することにしました。そのため、xhdpiおよびhdpi画面ではアーティファクトなしで良好な結果が得られましたが、mdpi画面の画像は大きすぎました。

次に、star_onとstar_offの画像をdrawable-mdpiフォルダーにコピーし、画像のサイズを小さくすることにしました。それも役に立たなかった。

次に、大きな星の画像をxhdpiフォルダーとhdpiフォルダーに配置し、小さな星の画像をmdpiフォルダーに配置します。アプリをmdpiデバイスで実行すると、drawable-mdpiの画像が選択されると思いました。しかし、Androidはhdpiまたはxhdpiフォルダーから画像を選択し、アーティファクトが再びあるため、mdpi画面用に自動的に拡大縮小するようです。また、小さな画像を描画可能なフォルダに入れてみました。それも役に立たなかった。

では、Androidはどのようにリソースを選択するのでしょうか?Androidよりもdrawable、drawable-mdpi、drawable-hdpi、drawable-xhdpiのリソースがある場合は、デバイスと同じ密度でフォルダー内のリソースを検索しようと思いました。そして、ドローアブルフォルダから取得するよりもそのようなリソースがない場合。

4

2 に答える 2

4

この開発者ガイドの部分では、正確に必要なものについて説明しています。例を示します。

Android が代替リソースを選択する方法を示すために、次のドローアブル ディレクトリにそれぞれ同じ画像の異なるバージョンが含まれているとします。

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

デバイス構成は次のとおりです。

Locale = en-GB 
Screen orientation = port 
Screen pixel density = hdpi 
Touchscreen type = notouch 
Primary text input method = 12key

デバイス構成を利用可能な代替リソースと比較することにより、Android は以下からドローアブルを選択します。

drawable-en-port

Android が修飾子を選択する方法を説明する選択図もあります。

于 2013-05-30T10:12:05.043 に答える
2

Androidはdpiに従ってドローアブルフォルダーからリソースを選択します

4つの画面密度があります

  1. ldpi
  2. mdpi
  3. hdpi
  4. xhdpi

4 つの画面サイズ

layout-small
layout-nomal
layout-large
layout-xlarge

小さな画面サイズ = 2.2" - 2.7" (約)

通常の画面サイズ = 3.0" - 4.7" (約)

大画面サイズ = 5" - 7" (約)

特大画面サイズ = 7"> (約)

ldpi = 120dpi

mdpi = 160dpi

hdpi 240dpi

xhdpi = 320dpi

これらの密度と画面サイズに従って avd を作成し、結果を確認します

于 2013-02-23T11:34:15.227 に答える