2017-10-27 4 views
-1

Ich habe eine Dashboard-Aktivität. Ich möchte, dass diese Aktivität von jedem Bildschirm meiner App aus (bei jeder Aktivität) mit der rechten Streifbewegung auf dem Bildschirm geöffnet wird. Wenn bei einigen Bildschirmen horizontaler Bildlauf ausgeführt wird, wird der Bildlauf abgeschlossen und anschließend das Dashboard geöffnet activity.pls geben eine VorstellungÖffnen Sie eine Aktivität aus allen Aktivitäten auf der rechten Swipe

Antwort

0

Sie können es tun, indem Absicht Aufruf ..

diese Klasse globale Paket geschnürt.

public class OnSwipeTouchListener implements OnTouchListener { 

private final GestureDetector gestureDetector; 

public OnSwipeTouchListener(Context ctx) { 
    gestureDetector = new GestureDetector(ctx, new GestureListener()); 
} 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    return gestureDetector.onTouchEvent(event); 
} 

private final class GestureListener extends SimpleOnGestureListener { 

    private static final int SWIPE_THRESHOLD = 1; 
    private static final int SWIPE_VELOCITY_THRESHOLD = 1; 

    @Override 
    public boolean onDown(MotionEvent e) { 
     return true; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     boolean result = false; 
     try { 
      float diffY = e2.getY() - e1.getY(); 
      float diffX = e2.getX() - e1.getX(); 
      if (Math.abs(diffX) > Math.abs(diffY)) { 
       if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { 
        if (diffX > 0) { 
         onSwipeRight(); 
        } else { 
         onSwipeLeft(); 
        } 
       } 
       result = true; 
      } else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { 
       if (diffY > 0) { 
        onSwipeBottom(); 
       } else { 
        onSwipeTop(); 
       } 
      } 
      result = true; 

     } catch (Exception exception) { 
      exception.printStackTrace(); 
     } 
     return result; 
    } 
} 

public void onSwipeRight() { 
} 

public void onSwipeLeft() { 
} 

public void onSwipeTop() { 
} 

public void onSwipeBottom() { 
}} 

und verwenden Sie die Klasse für jede Aktivität müssen Sie Ihre Dashboard-Aktivität

Für die Ex bringen: sampleActivity.class

switch_action.setOnTouchListener(new OnSwipeTouchListener(Camera.this) { 

     @Override 
     public void onSwipeRight() { 
      super.onSwipeRight(); 
      startActivity(new Intent(sampleActivity.this,Dashboard.class)); 
     } 
    }); 

switchAction ist transparent Relative-Layout Sie in Beispiel Aktivität Einschränkung verwenden müssen wird

<RelativeLayout 
    android:id="@+id/switch_action" 
    android:background="@android:color/transparent" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

so einmal Benutzer swipe im Bildschirm swi tchaction wird angerufen Sie können startActivity als Ihre Notwendigkeit.

+0

Ashokkumar Adichili wie ich sagte, ich kann diesen Code nicht in jeder Aktivität hinzufügen, weil ich viele Aktivitäten habe. Es gibt eine Möglichkeit, Swipe-Ereignis im oberen Fenster des Bildschirms zu erhalten meiner App –

Verwandte Themen