1

私は多くの調査を行ってきましたが、さまざまな画面サイズをサポートする方法のシステム全体を完全には理解していないと感じています.

そのため、設計者は、私がサポートしたい画面サイズと、最初に構築する解像度を知りたがっています。

そこで、次のことをサポートしたいと提案しました。

画面サイズ 通常
mdpi - はい hdpi - はい xhdpi - はい

これまでのところ、次のことを想定しています。

通常画面 mdpi - 320x480 - 160ppi 通常画面 hdpi - 480x800 - 240ppi 通常画面 xhdpi - 640x960 - 320ppi

問題は、画面のリソースをどのように定義するかです。720x1280 ? 640x960 用に定義されたリソースを使用しますか?

S3みたいなやつ

4

4 に答える 4

6

I already stated here application-skeleton-to-support-multiple-screen with designer perspective.

It is listed the percentage difference of device screen

Ldpi- 75%
Mdpi- 100%
Hdpi- 150%
XHdpi- 200%

But as we know now most of device coming with 480X800 so I'm consider this as based device, so our new calculation will like this

Ldpi- 50%
Mdpi- 66.67%
Hdpi- 100%
XHdpi- 133.33%

You can take XHdpi as based because when we enlarge smaller image then image gets blurred so start making artwork for bigger size and then to smaller.

Now about the devices which coming with High resolution 720x1280 i.e S3

you have qualifier with Smallest width concept(SW) introduced with Android V3.0 Honeycomb

drawable-sw???dp

Devices are categorized into screen width, so if we creating a folder named drawable-sw360dp then the devices with 720dp(either width or height) will use resource from this folder.

for example to find the Samsung Galaxy S3 dp to suffix drawable-sw?dp With reference of DP Calculation, If you want to support your layout or drawable to S3 then the calculation says

px= Device's width = 720
dpi= Device's density= 320

formula given

px = dp * (dpi / 160)

interchanging formula because we have px's value

dp = px / (dpi / 160)

now putting value,

 dp= 720 / (320/160);
 dp=360. 

so drawable-sw360dp will do the job for S3

Get you Device configuration from GsmArena, Same-way you can also create folder for different devices(awkward/latest ones)

You can also suffix the same value to your layout folder too layout-sw360dp

于 2012-12-15T05:57:06.563 に答える
2

また、Android 開発者の Web サイトに複数の画面をサポートするリンクを投稿した他の人々にも同意します。これは、画面のクラス (小、標準、大) と異なる画面密度の違いを理解するための優れたリソースであるためです。 (ldpi、mdip、hdpi)。

Metrics and Gridsに関する非常に興味深い記事もあり、とても役に立ちました。

また、頭の後ろにくぼむピクセルのスケールを維持する必要があります。

ldpi: 1dp = 0.75pxmdpi: 1dp = 1pxhdpi: 1dp = 1.5pxおよびxhdpi: 1dp = 2px

個人的には、ldpi を約 240x320 の解像度に、mdpi を 320x480 に、hdpi を 480x800 に、xhdpi を SGS3 などのより大きな解像度に関連付けるのが好きです。

たとえば、 Metrics and Gridsへのリンクには、ボタンは少なくとも 48 dp にする必要があると記載されています。これは、サイズが のボタンを作成したい場合は、とのグラフィックも指定する必要があることを意味し48x48ます。48x48 px for mdpi96x96 px for xhdpi72x72 px for hdpi36x36 px for ldpi

また、あなたとあなたのデザイナーが9 パッチ画像を見て、これに合わせて UI を微調整することをお勧めします。これにより、開発者としてのあなたの生活はずっと楽になります。この理由は、アプリ全体で非常に適切にスケーリングできる小さなサイズの画像を作成できるためです。

当然のことながら、可能な限り最高の解像度 (xhdpi など) でグラフィックを作成してから、hdpi、mdpi、ldpi にダウンスケールする必要があります。

私が遭遇したもう1つのヒントは、もうソースを持っていませんが、Androidでリソースフォルダーを使用することです。これは、大きな画像のみを提供する場合と比較して、パフォーマンスが大幅に向上し、OSがそれをダウンスケールできるようにするためです。外出。(しかし、このSOの投稿には、回答にいくつかの有効な議論があります

于 2012-12-10T15:47:12.350 に答える
0

ベクターグラフィックス用のライブラリを使用できSVG、マルチ解像度画面をサポートするのに非常に便利です ソースコードはこちら

于 2012-12-07T13:29:36.447 に答える
0

次のようなことを試してください:displayPixelsからPixelsへの変換用

(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());

ピクセルから screenPixels へ

(pixels / context.getResources().getDisplayMetrics().scaledDensity);
于 2012-12-15T06:42:03.470 に答える