3

HTC Tattoo と Sony Ericsson Xperia X10 の 2 つのデバイスがあります。1 つは 145 DPI、もう 1 つは 245 DPI です。

TextView のフォント サイズをポイント単位で指定すると、次のようになります。

textView.setTextSize(TypedValue.COMPLEX_UNIT_PT, 6.5f);

これら 2 つのデバイスでテキストの物理サイズが異なります。245 DPI では、テキストはほとんど読めません。

現在、「pt」サイズは物理的なものになっています。つまり、私のテストでは、両方のテキスト ブロックに同じ物理的な高さの文字が含まれている必要があります。そうではありません。

ここで何が問題なのですか?

助けてくれてありがとう、ユリ。

4

2 に答える 2

6

単位はポイントであり、pt密度に応じてスケーリングされません。密度に依存しないピクセルである非テキストの場合dip(または)。dpこれらは密度に応じてスケーリングされます。テキストの場合、sp密度だけでなく、ユーザーの好みのフォントサイズにも応じて拡大縮小するが必要です。

ここには少し情報があり、Androidドキュメントの他の場所にも散在しています。

http://developer.android.com/guide/practices/screens_support.html#screen-independence

更新:ここに各寸法単位の説明があります。これは、Yuriが正しく指摘しているようptに、物理画面では常に1/72インチである必要があることを示唆しています。それはそのように機能していないように見えます、そして答えはただ使用することです-dpそしてspあなたがあなたのユーザーにポイントのようなものを公開したいなら、ちょうどいくつかの数学をしてください(dp160dpi画面で1px、すなわち1と仮定することができます/ 160分の1インチ)。

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

于 2010-08-03T11:35:24.613 に答える
5

実際には、基盤となるデバイスが正しい表示メトリックを提供するときはいつでも、ポイントは常に機能します。

たとえば、次の 5 つのデバイスをテストしました。

NAME      OS    metrics.ydpi  REAL_DPI  DDPI  SD
XPERIA    1.6   159.49677     325       240   1.5
Liquid    1.6   263.8958      285       240   1.5
Tattoo    1.6   145.14067     match     120   0.75
Hero      1.5   179.29352     match     -     1.0
Galaxy    1.6   160.41878     180       160   1.0

ご覧のとおり、HTC Tattoo と HTC Hero だけが適切な表示情報を Android API に提供します。

これが、デバイスごとにポイントの物理サイズが異なる理由です (ただし、すべてではありません)。

フォント/画像を大まかにスケーリングする唯一の方法は、すべてが 160 DPI であると想定し、DisplayMetrics#scaledDensity を使用することです。これは間違っていますが、他の方法はありません。

于 2010-08-05T11:28:20.047 に答える