13

アプリ内に表示したい 2 つの画像があります。

最初の画像は全画面表示になります (アプリの背景として)。developers.android.comの「Supporting Multiple Screens」の記事を何度も読みましたが、各 dpi カテゴリの画像のサイズについてはまだ迷っています。正しいと思われるサイズを試してみましたが、大きな画面 (つまり 1280x800@mdpi) でアプリを表示すると、背景がピクセル化されて表示されます。私のmpdiの画像は320x480pxなので、これは理解できます。どうすればこれを修正できますか? どのサイズの画像を使用すればよいですか?

2枚目の画像はボタンです。現在、私は非常に高解像度の画像を持っていますが、アプリはこれを縮小して見栄えを良くします。とはいえ、アプリがリリースされたときはそうであってほしくありません。この画像の場合、画像のピクセル単位のサイズを知る必要があります。現在、60dp x 50dpアプリ内にあります。これはピクセル単位で何に変換されますか? 式を使用することは知っていますが、この場合のdpipx = dp * (dpi / 160)はどうなるでしょうか? この画像には NinePatch PNG を使用できません。

Android デバイスで画像が正しく表示されるようにするには、どのサイズ (ピクセル単位) で開始すればよいかわかりません。mdpi デバイスを使用している場合、dp = px ですか?

アップデート:

何時間も頭をぶつけた後、次のことを思いつきました。

drawable-xlarge-xhdpi   2560x1920px
drawable-large-xhdpi    1920x1440px
drawable-normal-xhdpi   1280x960px

drawable-xlarge-hdpi    1920x1440px
drawable-large-hdpi     1440x1080px
drawable-normal-hdpi    960x720px

drawable-xlarge-mdpi    1280x960px
drawable-large-mdpi     960x720px
drawable-normal-mdpi    640x480px

drawable-xlarge-ldpi    960x720px
drawable-large-ldpi     720x540px
drawable-normal-ldpi    480x360px

これらは、描画可能なディレクトリと、それぞれに期待する最大解像度になります (小さな画面をサポートしないことにしました)。したがって、私の画像はこれらのサイズになります。

それは私の電話で素晴らしく見えます。アーティファクトはありません。また、1280x800@mpdi の画面のエミュレーターでも動作するように見えるので、すべてのデバイスで動作することを願っています...

誰かがこのようにすることに問題があると思いますか? これを行うより良い方法はありますか?私の計算は正しいですか?

4

2 に答える 2

2

ほら、私はここでそれを手に入れました、私はただそれを渡しています

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
Generalised Dpi values for screens:

ldpi Resources for low-density (ldpi) screens (~120dpi)
mdpi Resources for medium-density (mdpi) screens (~160dpi). (This is the baseline density.)
hdpi Resources for high-density (hdpi) screens (~240dpi).
xhdpi Resources for extra high-density (xhdpi) screens (~320dpi).
Therefore generalised size of your resources (assuming they are full screen):

ldpi
Vertical = 426 * 120 / 160 = 319.5px
Horizontal = 320 * 120 / 160 = 240px
mdpi
Vertical = 470 * 160 / 160 = 470px
Horizontal = 320 * 160 / 160 = 320px
hdpi
Vertical = 640 * 240 / 160 = 960px
Horizontal = 480 * 240 / 160 = 720px
xhdpi
Vertical = 960 * 320 / 160 = 1920px
Horizontal = 720 * 320 / 160 = 1440px

px = dp*dpi/160
于 2013-03-13T00:42:40.823 に答える
0

JRowan の回答でメソッドを使用すると、次のように「特別な」画面に必要な画像を res フォルダーに追加できます。

res/drawable-xlarge-mdpi/background.png

また

res/drawable-sw600dp-mdpi/background.png
...
于 2013-03-13T00:58:15.360 に答える