0

だから、私はこのコードを使用しました

   public void loadLevel(float x, float y)
   {
      if(PopUpsGone == true)
      {
          if(x > 106 && x < 243 && y > 375 && y < 465)
           {
               Toast.makeText(getApplicationContext(), "1",
                        Toast.LENGTH_LONG).show();
           }
           if(x > 7 && x < 215 && y > 83 && y < 245)
           {
               Toast.makeText(getApplicationContext(), "2",
                        Toast.LENGTH_LONG).show();
           }
           if(x > 306 && x < 458 && y > 66 && y < 212)
           {
               Toast.makeText(getApplicationContext(), "3",
                        Toast.LENGTH_LONG).show();
           }
           if(x > 461 && x < 620 && y > 9 && y < 127)
           {
               Toast.makeText(getApplicationContext(), "4",
                        Toast.LENGTH_LONG).show();
           }
      }



   }

特定の領域をタップするには、エミュレータで実行したときは完璧に機能しましたが、別の電話で実行したときは機能しないか、何度もタップする必要がありました.

さまざまな画面で特定の領域をタップする最良の方法は何ですか

4

1 に答える 1

0

画面密度を考慮していることを確認してください。あるデバイスでタップした場所は、別のデバイスでは画面密度が異なる (1 平方インチあたりのピクセル数が多い) ため、座標がまったく異なる場合があります。

デバイス密度を取得します。

float density = getResources().getDisplayMetrics().density;

次に、チェックしている座標に密度を掛けてみます。

public void loadLevel(float x, float y)
{
    float density = getResources().getDisplayMetrics().density;
    x*=density;
    y*=density;
    ...
}

これにより、デバイス間でのタップの一貫性が向上します。

于 2012-10-31T14:41:34.800 に答える