2016-08-03 12 views
1

Ich bin neu bei Android und ich möchte wissen, wie Sie die Hover-Ansicht identifizieren, wenn Sie den Finger auf verschiedene Ansichten bewegen. Als ein Beispiel, wenn meine Aktivität 5 LinearLayouts A, B, C, D, E hat und wenn ich mich von C nach B und dann nach E bewege, möchte ich das identifizieren. Bitte, wenn jemand weiß, wie man das umsetzt, kannst du mir ein Beispiel geben.Wie erkenne ich Hover-View, wenn man den Finger auf Ansichten bewegt?

Code, ich habe bisher versucht ..

@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; 
    } 

Danke.

+0

Bitte, wenn jemand weiß, könnte man sagen, mir die Art der Umsetzung? – Hansi

Antwort

0

Implementieren View.OnTouchListener in Ihrer Tätigkeit

erhalten rect Bereich von Punkt berühren dann, wenn Berührungspunkte innerhalb des Rechtecks ​​Bereich sind dann etwas tun ...

@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; 
    }