0

1920x1200 であるため、drawable-xhdpi フォルダーから画像を取得する新しい Nexus 7 を入手しました。Nexus 10 も drawable-xhdpi フォルダーからプルします。その結果、Nexus 7 では同じ画像が大きすぎます (正確には 150% 大きすぎます)。特定のデバイスに使用するリソース (描画可能) フォルダーを指定する方法はありますか?

非常に多くの画面サイズがあり、さらに多くのデバイスをサポートしようとすると妨げになる可能性があるため、デフォルトのドローアブル バケットをオーバーライドしようとするべきではないようです。それでは、この問題を処理する最善の方法は何ですか? 以下の画像は、私の問題を正確に示しています。再生ボタンは Nexus 10 から新しい Nexus 7 に縮小され、ひげを生やした男は拡大され、両方のデバイスで同じ物理サイズのままになります。私の画像は現在、ひげを生やした男の画像が行っていることを行っていますが、新しい Nexus 7 では縮小されている再生/接続ボタンと同じようにしたいと考えています。 (上の画像 = 新しい Nexus 7 下の画像 = Nexus 10)

新しいネクサス 7

ネクサス10

4

3 に答える 3

2

ドローアブル リソース フォルダーを引き続き使用するには、Nexus 7 2013 と Nexus 10 を区別するために次の手順を実行する必要がありました。どちらもデフォルトで xhdpi フォルダーを使用するためです。

Nexus 7の場合、最終的に使用しました:drawable-sw600dp-xhdpi

Nexus 10の場合、最終的に使用しました:drawable-sw720dp-xhdpi

各フォルダーで異なるサイズのアセットを 2 セット用意しました。

于 2013-08-05T18:29:47.500 に答える
1

特定のデバイス用にドローアブル フォルダーを設定することはできません。また、あまりにも多くのデバイスが存在するため、実用的ではありません (たとえば、こちらを参照)。

ただし、android が各デバイス構成に使用するファイルのバケットを選択する方法に不満がある場合は、独自のアルゴリズムを使用できます。この場合、ファイルを配置する場所には 2 つのオプションがあります。

  1. 画像ファイルを res/drawable-nodpi (または res/raw) に配置します。各イメージにサフィックス/プレフィックスを追加して、どの構成に使用されているかを示します。

  2. 画像ファイルを assets に入れます。サブフォルダーや任意のファイル名を作成することもできるため、これはより柔軟な方法です。

どちらの方法でも、独自のルールに応じて、独自の画像サンプリング方法も使用する必要があります。

于 2013-08-02T23:42:30.920 に答える
0

次のコードを使用してサイズを取得し、ディスプレイのサイズに基づいて必要なサイズに画像をスケーリングできます。

    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int height = display.getHeight();

    DisplayMetrics metrics = new DisplayMetrics();    
    getWindowManager().getDefaultDisplay().getMetrics(metrics);    
    int screenDensity = metrics.densityDpi; 
于 2013-08-02T20:31:22.003 に答える