2016-08-03 2 views
1

Я новичок в андроиде, и я хочу знать, как определить вид наведения при перемещении пальца на разные виды. Например, если моя активность имеет 5 LinearLayouts A, B, C, D, E, и если я перехожу от C к B, то к E, я хочу это идентифицировать. Пожалуйста, если кто-то знает, как реализовать это, вы можете привести мне пример.Как идентифицировать вид наведения при перемещении пальца на представления?

код, который я пытался до сих пор ..

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER) { 
      switch (v.getId()) { 
       case R.id.linearLayoutA: 
        Log.d(getClass().getSimpleName(), "entered A"); 
        break; 

       case R.id.linearLayoutB: 
        Log.d(getClass().getSimpleName(), "entered B"); 
        break; 

       case R.id.linearLayoutC: 
        Log.d(getClass().getSimpleName(), "entered c"); 
        break; 

       case R.id.linearLayoutD: 
        Log.d(getClass().getSimpleName(), "entered d"); 
        break; 

       case R.id.linearLayoutE: 
        Log.d(getClass().getSimpleName(), "entered e"); 
        break; 
      } 
     } 
     return true; 
    } 

Спасибо.

+0

Пожалуйста, если кто-то знает, что вы могли бы сказать, мне способ реализации? – Hansi

ответ

0

Реализовать View.OnTouchListener в вашей деятельности

получить площадь прямоугольника элемента прикосновения затем, если точки касания находятся внутри эту область прямоугольника, то сделать что-то ...

@Override 
     public void onWindowFocusChanged(boolean hasFocus) { 
      super.onWindowFocusChanged(hasFocus); 
      rect1 = new Rect(linearLayout1.getLeft(), linearLayout1.getTop(), 
        linearLayout1.getRight(), linearLayout1.getBottom()); 

      rect2= new Rect(linearLayout2.getLeft(), linearLayout2.getTop(), 
        linearLayout2.getRight(), linearLayout2.getBottom()); 
     } 

///////////////////////////// 

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getActionMasked() == (MotionEvent.ACTION_DOWN|MotionEvent.ACTION_MOVE)) { 
      if (rect1.contains((int) event.getX(), (int) event.getY())) { 
       //do something when touch or moving on linearlayout1 area 
      } else if (rect2.contains((int) event.getX(), (int) event.getY())) { 
       //do something when touch or moving on linearlayout2 area 
      } 
     } 
     return true; 
    }