4

私は小さなゲームを開発し、私の友人/同僚が Motorola Xoom タブレットでそれを試してみましたが、レンダリングがすべてめちゃくちゃであることがわかりました! 何が問題なのかを確認するためにすべてを単純化しようとして、すべてを削除しました。Motorola Xoom は、描画に関してはバグがあるだけだと思います。両方でまったく同じ APK が使用され、まったく同じ描画コードが使用されていました。次のように、現在黒い四角形を描画しているカスタム ビューがあります。

@Override
public void draw(Canvas canvas) {
    super.draw(canvas);

    canvas.save();
    canvas.scale(16.0f, 16.0f);
    float lineWidth = 20 / 16.0f;

    paint.setAntiAlias(false);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(lineWidth);
    paint.setColor(boardColor); // boardColor is just black
    canvas.drawRect(100 / 16.0f,
                    100 / 16.0f,
                    200 / 16.0f,
                    200 / 16.0f,
                    paint);

    canvas.restore();
}

私のSprint Galaxy SII、Android 4.0.4では、次のようになります(Galaxy SIIIデバイスでもこれを取得します): Galaxy SIIのスクリーンショット

友人の Motorola Xoom、Android 4.1.2 では、次のようになります。 Motorola Xoom のスクリーンショット

私が欲しいのは、正しいサイズの、アンチエイリアスされていない長方形だけです。私は何を間違っていますか?それともXoomですか?

4

2 に答える 2

0

スケーリングで奇妙なことが起こっています。canvas.scale() を取り出して、rect 内の " / 16.0f" をすべて削除すると、rect は問題なく表示されます。これらで、私の xoom があなたの友人の xoom の奇妙な長方形を示していることを確認できます。

そのため、形状をスケーリングするには別の方法を考え出す必要があります。

mPixelsInOneDp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
            res.getDisplayMetrics());

その「mPixelsInOneDp」を使用して、すべての測定値と、異なるデバイスの DP で最終的に同じではないものを確認します。スケーリングに問題はなかったので、最終的には数値を微調整する必要があると考えています。それはxoomでうまく見えます。

于 2012-11-26T20:36:51.943 に答える