23

私のアプリで使用する必要のあるアイコンごとに4種類のサイズがあります。問題はMy Nexus 7(1280 x 800)とgalaxy s2(800 x 480)がdrawable-hdpiのリソースを使用しているようです。どのようにしてNexusにdrawable-xhdpiのリソースを使用させ、次に10インチのタブを使ってdrawable-xxhdpiを使用させるのですか?異なる解像度で使用する描画可能フォルダを設定する

私は私のマニフェストファイルでこれを持ってnexus 7のようなデバイスに依存

<supports-screens android:resizeable="true" 
       android:smallScreens="true" 
       android:normalScreens="true" 
       android:largeScreens="true" 
       android:xlargeScreens="true" 
       android:anyDensity="true" /> 
+2

が指摘されている以下のドロウアブルを置くことです選択はアンドロイドで正しく動作します。公式の文書を読むことを強くお勧めします。 – Teovald

+0

私のアプリは適切な密度(hdpiが利用可能なmdpiを使用していました)を使用していませんでした。あなたのコードスニペットは私の問題を解決する助けとなり、他人を助けるかもしれないので、私はあなたの質問を保存の名にあげてアップしました。 – 1owk3y

+0

著者は、最新のデバイスと新しいAndroid appの回答を更新する必要があると思います。 –

答えて

99

どのように描画可能xxhdpiを使用するために10インチのタブを描画可能xhdpi内のリソースを使用するようにネクサスを強制し、その後 のですか?

できません。

修飾子hdpi,xhdpi,xxhdpiは、画面のサイズではなく、デバイスの画面密度を表します。 official doc

画面密度

画面の物理的領域内の画素の量から 。通常 と呼ばれ、dpi(dots per inch)と呼ばれます。例えば、「低」濃度の スクリーンは、「通常」または「高」濃度スクリーンの と比べて、特定の物理エリア内のピクセル数が少なくなります。簡単にするため、Androidは全て の実際の画面密度を低、中、 の4つの一般化された濃度にグループ分けしています。

また、タブレットをサポートしたい場合は、large, xlarge修飾子を使用してください。 Nexus 7はlarge-hdpiタブレットです(技術的にはtvdpiですが、画像はhdpi)。だから、Nexus 7の画像を置くには、drawable-large-hdpiという名前のフォルダを作成し、そこに画像を置いてください。

:ネクサス7は7インチのタブレットであっても、それは1280 * 800の解像度を持っているので、これはネクサス7のための特別なケースです。したがって、デバイスはhdpiです。しかし、通常の7インチデバイスの解像度は、1024 * 600と低くなります。だから彼らはmdpiデバイスです。したがって、描画可能な修飾子は変更できます。 (自分の経験から、最初に7インチのデバイス用にフォルダdrawable-large-mdpiを置き、Nexus 7でそれを確認してください。画像に問題がなければ、別のフォルダを置く必要はありません。特定のフォルダが存在しない場合、Androidは今、10インチのタブレットケースについて)

をできるだけ近いフォルダをチェックして、デバイスの画面のためにそれを最適化しますので、それらはxlargeデバイスであり、その密度はmdpiからxhdpiに変更することができます(Nexus 10)しかし多くは1280 * 800の解像度を持っていて、それらはmdpiのデバイスです。

より良い練習は、あなたがどのようにリソースを理解するためにしかし、問題は、あなたがそれを好きな方法を実行するには、Androidを強制する方法はない他のよう

// for Phones 
drawable-ldpi 
drawable-mdpi 
drawable-hdpi 

//for 7 inch tablets 
drawable-large-mdpi 
drawable-large-hdpi(for Nexus 7) 

// for 10 inch tablets 
drawable-xlarge-mdpi 
+0

非常に良い説明、AndroidVogueは最初に正しい答えを得ましたが、私と他の誰かが同様の問題をより良く説明するのに役立つと思います。大きな努力 – Amanni

+0

あなたの説明のために1つの賛成投票。 –

+0

+1は私の一日を節約するために、Googleの開発者のサイトよりも説明が優れています。 –

1
The problem is My Nexus 7 (1280 x 800) and galaxy s2 (800 x 480) seem to use the resources in drawable-hdpi 

あなたはsamsungで同じことをテストする場合、それは、このようhdpiから描画可能なリソースがかかりますhdpiデバイスがある240dpiを持っていますtab 2mdpiと同じドロアブルを使用しますので、そのmdpiデバイス

+0

基本的には、mdpiの場合は480x320、hdpiの場合は800x480、xhdpiの場合は1280x800が必要です – Amanni

+0

彼らはhdpiからmdpiではありません – Amanni

+0

私は自分の答えを編集してください。 –

1

Configuration qualifiersリソース。これがベストプラクティスです。 res/drawable-normal-hdpi-port/icon.pngのように。

参考リンク:Configuration qualifiers

感謝。

+0

私はmdpi、hdpi、xhdpiを普通にして、次に3つを大きくしてxを大きくすることができますか? – Amanni

+0

@Amanni不要です。必要に応じてフォルダを作成します。あなたがどのような種類のデバイスをターゲットにしているのかを意味します。 Nexus 7では 'res/drawable-large-hdpi'フォルダを作成することができます。そのフォルダの画像を使用します。今度は 'Hdpi' Drawableフォルダが2つあります.1つは' 480x800 - > drawable-hdpi'、もう一つは 'Nexus 7 - > drawable-large-hdpi'タブレットです。 –

関連する問題