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

确保将屏幕密度考虑在内。您在一台设备上点击的位置可能与另一台设备上的坐标完全不同,因为它们具有不同的屏幕密度(每平方英寸有更多像素)。

获取设备密度:

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 回答