1

すべての画面サイズと dpi 用のアプリを開発しています。

問題は、通常よりも大きい/小さい画面の場合、UI がスケーリングされていることです。つまり、画面互換モードが有効になっていると思います。

これが私の目標です。高さ 90 ピクセルの画像ボタンがあるので、通常の mdpi デバイスでは 90 dp だと思います。大小の画面サイズで 90 dp のままにしたいです。ですから、見た目のサイズは変わりません。

私が抱えている問題は、通常の mdpi デバイスでは見栄えが良い (90 dp) ことですが、大きな mdpi デバイスではサイズが大きくなり、スケーリング アーティファクトが発生します。

私は 2.3.3 の最小限の Android OS をターゲットにしているため、次のマニフェストがあります。

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="16" />

<!--
    If not set explictly, screen compatibility mode would be enabled for
    large screen, which is scaling of normal
-->
<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

Android のドキュメントによると、10 以下を対象とする場合は、supports-screens を指定する必要があります。そうしないと、デフォルトで互換モードが有効になります。問題は、それを指定していることですが、まだ互換モードが有効になっています。

何か案は?私の理解が間違っている場合はお知らせください。

ありがとう

4

2 に答える 2

1

わかりました、丸一日のデバッグの後に回答を投稿すると思います。

私にとって、問題はエミュレーターにあるようです。ADV を起動するときは、実際の画面デバイス サイズを計算し、起動オプションで設定できるようにモニターの dpi を知る必要があります。これを行うと、レイアウトで「x dp」と指定し、PNG で「x ピクセル」を指定した画像ボタンは、すべての画面サイズと密度で同じサイズ (インチ) に見えます。

Android のスケーリングによるアーティファクトを取り除きたい場合は、対応するスケーリングが既に適用されている ldpi、hdpi、xhdpi フォルダーに独自の画像を提供できます。

デバイスの画面サイズを計算するには、起動オプション ダイアログで提供される解像度と密度を使用し、次の式で計算します:ルーラーでは x になります) 画面サイズ = sqrt ( (w はピクセル/dpi)^2 + (h はピクセル/dpi)^2) w、h は解像度 (ピクセル)

モニターの dpi を計算するために、コンピューターの種類をググってみました。15.4 インチの mac book pro の場合は 128 で、27 インチの Apple Cinema Display の場合は 109 です。

于 2012-09-12T23:35:05.010 に答える
0

すべての画像を同じサイズに保つために使用した方法は、通常のディスプレイの getWidth メソッドと getHeight メソッドを使用して変数を設定することです。次に、Bitmap.createScaledBitmap を使用して画像を画面サイズの % に設定しました。dpiに関係なく、同じように見えます。240 dpi の画面、つまり 16:9 で同じ画像を 480 dpi 16:9 の画面に表示するには、dpi が 2 倍になります。

これらの画像をキャンバスに使用していますが、似ていると思います。また、アニメーションなどを行う際にも、GL 以外では重要です。現在のゲームをやり直さなければなりませんでした。より低い dpi でプレイすると、稲妻のように速く動いたからです。180 対 240 で 10 ピクセル移動すると、目を見張るものがありました。

于 2012-09-13T01:38:53.640 に答える