1

現在、デバイスのDPIを測定し、DPIに基づいて特定のピクセル数で線を引きます(DPIが320の場合、320ピクセルごとに線を表示します)。

私はそれをいくつかのデバイスで動作させていますが、他のデバイスはかなり離れているため、非常に混乱しています...

私が間違っていることについて何か提案はありますか?

これが私がデバイスのDPIを取得するために使用したコードです(他のさまざまなものの中で)

    metrics = context.getResources().getDisplayMetrics();
    width = metrics.widthPixels;
    height = metrics.heightPixels;
    xdpi = metrics.xdpi;
    ydpi = metrics.ydpi;
    densityDpi = metrics.densityDpi;

次に、画面の上部に線を引く方法を説明します。

    x = 0;
    while (x <= width) {
        canvas.drawLine(x, 0, x, lineHeight, paint);
        x = x + xdpi;
    }

最初は可変のdensityDpiを使用して線を描画していましたが、それは推定DPIにすぎないことがわかりました。そこで、コードをxdpiに変更しました。これは、画面の実際のピクセルに基づいているはずですが、一部のデバイスではまだ正確ではありません。

4

1 に答える 1

3

私も同じ問題を抱えていました。実際のコインを正確なサイズで描く必要がありました。各デバイスは適切なDPIを報告する必要がありますが、一部の(少数の)デバイスは間違ったデータを提供するだけです。最終的に、ユーザーが画像のサイズを手動で変更できるようになりました。

于 2013-01-07T19:58:55.113 に答える