0

わずかに異なる解像度 (480x854) と (480x800) を表す AVD がいくつかあります。メソッドを使用して Canvas のサイズ (getWidth()/getHeight()) を取得すると、480x854 であることが正しく報告されます。

問題は、画像の下のコードを実行すると、画面から外れることです:

SweepGradient sweepGrad = new SweepGradient(350, 350, 
new int[] { Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA }, null);
circlePaint.setShader(sweepGrad);
canvas.drawCircle(350, 350, 50, circlePaint);

最後の行の 350、350、50 の値は、円の x 座標、y 座標、および半径を意味します。また、半径 50 の円を完全に表示するための最大 'x' 値は 270 であることもわかりました (キャンバスの x 寸法が 320 であることを意味します)。

4

1 に答える 1

0

間違った質問をしたのではないかと心配しています。同じ解像度の実際のデバイスでアプリをテストしましたが、それも間違っています。

これに対する解決策は、次の行を追加することでした。

<supports-screens android:anyDensity="true"/> 

あなたのAndroidManifest.xml

最後の質問になります。なぜこの行が必要なのですか?私の場合、キャンバスの 1 ピクセルは実際のデバイスの 1.5 ピクセルに等しいようです。また、指定された行を追加すると大きな結果が生じるため、問題の正しい解決策ではないと思います (私のアプリが密度を実際にサポートしていないのに、正確な座標に画像を配置したい場合はどうなりますか?)。

答えは次のとおりです。 http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations

于 2012-09-11T15:47:25.037 に答える