2013-04-04 1 views
2

У меня есть объект Rect, который я рисую с помощью drawRect (Rect, Paint). У меня есть OnTouchEvent, который проверяет, находится ли позиция касания внутри Rect. Если касание находится внутри Rect, то что-то на моем экране меняется. Проблема, с которой я столкнулась, заключается в следующем: где мне нужно прикоснуться, чтобы выполнить инструкции касания на расстоянии около 50 пикселей выше объекта Rect.OnTouchEvent не уверен, где drawRect is

Вот соответствующие части моего кода:

public class MainActivity extends Activity { 
    DrawView drawView; 
    RelativeLayout fLY; 
    static Rect newGame = new Rect(LEFT, 165 + 35, 320, 200 + 35); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     fLY = new RelativeLayout(this); 
     drawView = new DrawView(this); 
     fLY.addView(drawView); 
     setContentView(fLY); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     int touchX = (int)event.getX(); 
     int touchY = (int)event.getY(); 
     switch(event.getAction()){ 
      case MotionEvent.ACTION_DOWN: 
      if(newGame.contains(touchX, touchY))reset(); 
     } 
    } 

И мой DrawView класс:

public class DrawView extends View{ 
    Paint paint = new Paint(); 
    int COLORS[] = Constants.COLORS; 
    int left = 250; 
    int size = 35; 

    public DrawView(Context context) { 
     super(context); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     canvas.drawRect(MainActivity.newGame, paint); 
    } 
} 

ответ

0

Это, вероятно, от точно на высоте панели состояния. Вы можете получить высоту строки состояния через этот ответ: Height of statusbar?

Затем добавьте это в ваш getY, и он должен работать.

+0

Проблема с высотой строки состояния и/или заголовка. Но когда я запустил код в вашей ссылке, он сказал, что высота строки состояния и заголовка равна нулю, поэтому я не смог исправить свою проблему, компенсируя прикосновение yPos. Я поместил код в конец моего метода onCreate. Я временно исправил свою проблему, полностью удалив заголовок и строку состояния. –

Смежные вопросы