2

私のアプリでは、キャンバスを作成し、それにいくつかのビットマップを追加します。問題は、オブジェクトが画面に触れる理由を追加していることです。したがって、ある画面では同じ画面でも中央に表示されますが、ピクセル単位の位置は異なります。

つまり、タブレットとスマートフォンを手に入れたということです。1つに触れると、オブジェクトは両方のデバイス(マルチプレイヤー)に表示されますが、xとyで位置を渡すため、同じ場所にはありません。

誰かが私の言いたいことを理解したら、私を助けてくれませんか? おそらく、比率を数えるということと何か共通点があるに違いない。

4

2 に答える 2

2

あなたが抱えている問題は、画面の解像度が異なり、ピクセルデータを渡していることだと思います。dp 値を使用し、送信する前に dp をピクセル値に変換する必要があります。受信側のデバイスでは、送り返されるピクセル値を特定のデバイスの dp に変換する必要があります。変換には以下の方法を使用してください。

DP をピクセルに変換するには:

    final float scale = getResources().getDisplayMetrics().density;
    int pixelValue = (int) (DESIRED_DP_VALUE * scale + 0.5f);

ピクセルを DP に変換するには:

    final float scale = getResources().getDisplayMetrics().density;
    int dpValue = (int) ((DESIRED_PIXEL_VALUE) - 0.5f / scale);

getDisplayMetrics().density の呼び出しにより、現在のデバイスに基づいてスケール値が得られます。dp 値は、密度に依存しないことを意味します。

于 2012-04-23T14:34:20.257 に答える
0

指標をどのように定義しますか? ピクセルを使用している場合は、密度に依存しないソリューションを使用してください。

public int GetDipsFromPixel(float pixels)
{
   // Get the screen's density scale
   final float scale = getResources().getDisplayMetrics().density;
   // Convert the dps to pixels, based on density scale
   return (int) (pixels * scale + 0.5f);
} 

クラスでは次のように使用します。

 textView.setHeight(GetDipsFromPixel(50));

このようにして、解像度が異なっていても、テキストビューの高さは両方のデバイスで同じ dps になります。

于 2012-04-23T14:29:20.237 に答える