8

私はアプリケーションに取り組んでおり、ldpi から xhdpi までのすべてのリソースを提供しましたが、一部のタブレットは hdpi (テストしている nexus 7 の場合は tvdpi) を使用するため、タブレットでアプリを開くとすべてが小さいので、強制的に xhdpi リソースを使用させたいのですが、どうすればよいですか?

タブレット用に別のファイルを作成したくない、またはアプリのサイズが大きくなり、xhdpi リソースが正常に動作する

ここに画像の説明を入力

携帯電話ではすべてが適切に表示されますが、タブレットでは問題が発生します。これは、大きな画面に対して小さな解像度のアセットを使用するためです。したがって、実際のインチ単位のサイズ (4cm、定規で測定) は正しいですが、実際には全体的なデザインが小さく見えます。正しくない

4

1 に答える 1

5

通常、(アップスケーリングではなく) ダウンスケーリングが最適なオプションです。縮小しても画像の品質が低下したり、情報が失われたりしない場合は、画像の 2 倍バージョンをres/ drawable-xhdpiフォルダーに入れます。Android は、密度の低いデバイスではこれらの画像を適切に縮小します。

たとえば、64x64 ピクセルの jpg/png をres/drawable-xhdpiに配置すると、Android はそれを mdpi デバイスでは 32x32 ピクセルとして、hdpi デバイスでは 48x48 ピクセルの画像として、xhdpi デバイスでは 64x64 ピクセルの画像として表示します。

画像を縮小すると画像が劣化する場合 (たとえば、画像に 1 ピクセルの線があり、縮小すると消える場合)、唯一のオプションは、drawable-mdpi、drawable-hdpi などに画像のバリエーションを追加することです。ディレクトリ。

コメント後の更新:

(より高密度の画面ではなく)大きな画面で画像を大きく表示したい場合があります。画像を drawable-xhdpi フォルダーのみに配置することでこれを行うことができますが、次のようにします。

たとえば、画像の 1 つを表示する ImageView を使用して、このレイアウトを res/layout に配置します。

res/drawable-xhdpi/one_of_my_images.png

res/layout/somelayout.xml

....
<ImageView 
    android:layout_height="@dimen/image_height"
    android:layout_width="@dimen/image_width"
    android:src="@drawable/one_of_my_images"
    android:scaleType="fitCenter"
    ....
    />

res/values/dimens.xml

....
<dimen name="image_height">100dip</dimen>
<dimen name="image_width">150dip</dimen>
....

res/values-large/dimens.xml

....
<dimen name="image_height">150dip</dimen>
<dimen name="image_width">225dip</dimen>
....

res/values-xlarge/dimens.xml

....
<dimen name="image_height">200dip</dimen>
<dimen name="image_width">300dip</dimen>
....

ご覧のとおり、画面が大きいほど、画像が大きくなります (ディップで、したがってインチで)。res/values-xlarge-hdpi、res/values-xlarge-xhdpi などの dimens.xml で image_height と image_width のさまざまな値を試して、何が最適かを確認できます。

コメントの後の更新 2: 適切なリソースをロードする独自の「カスタム」スキームが必要な場合は、それらを id res/drawable-nodpi に入力します
。 drawable-nodpi/one_of_my_images_xlarge.png

次に、適切なドローアブル ディレクトリ (res/drawable/、res/drawable-large、/res/drawable-sw360dp/ など、思いつくものは何でも) に、nodpi ディレクトリから正しいリソースを間接的に参照する xml ファイルを配置します。例えば

res/drawable-xlarge-mdpi/my_images.xml

<resources>
    ....
    <item type="drawable" name="one_of_my_images">@drawable/one_of_my_images_large</item>
    ....
</resources>

これは、特大の mdpi 画面の場合、Android が drawable-nodpi ディレクトリから「one_of_my_image_large.png」をロードすることを意味します。

于 2013-02-25T20:16:44.050 に答える