2016-11-14 5 views
1

標準のナビゲーション用の引き出しがあり、左のウィンドウから右にスライドする必要があります。私は別の携帯電話でこれを試してみました。あなたが本当にスライドすることはできません(かなりハード)。だから私はスワイプジェスチャーを追加したい。右にスライドさせると、引き出しが開きます。スワイプするコードが見つかりません!私は見てみましたが、すべてがぼやけているようです。右にスワイプしてナビゲーション用の引き出しを開く方法

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 

これは私のコードの一部です。何か他のものが必要な場合は教えてください!誰かがこれを解決できることを願って.. ..

更新: 私はスワイプコードを見つけてクラスを作った。ここで

import android.view.GestureDetector; 
 
import android.view.GestureDetector.SimpleOnGestureListener; 
 
import android.view.MotionEvent; 
 
import android.view.View; 
 
import android.view.View.OnTouchListener; 
 

 
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 = 100; 
 
     private static final int SWIPE_VELOCITY_THRESHOLD = 100; 
 

 
     @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() { 
 
    } 
 
}

コードの私の使い方は、私のMainActivityクラスで私はスワイプするとき

drawer.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View arg0) { 
 

 
      } 
 
     }); 
 
     drawer.setOnTouchListener(new OnSwipeTouchListener(MainActivity.this) { 
 
      public boolean onSwipeTop() { 
 
       Toast.makeText(MainActivity.this, "top", Toast.LENGTH_SHORT).show(); 
 
       return true; 
 
      } 
 
      public boolean onSwipeRight() { 
 
       DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
 
       drawer.openDrawer(GravityCompat.START); 
 

 
       return true; 
 
      } 
 
      public boolean onSwipeLeft() { 
 
       DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
 
       drawer.closeDrawer(GravityCompat.START); 
 

 
       return true; 
 
      } 
 
      public boolean onSwipeBottom() { 
 
       Toast.makeText(MainActivity.this, "bottom", Toast.LENGTH_SHORT).show(); 
 
       return true; 
 
      } 
 
     });

トーストは動作しますが、私はopendrawerとcloserdrawerを追加しようとしたあります左右にスワイプしますが、何も起こりません。

+0

これを見て取ります。http: //stackoverflow.com/a/12938787/5923606 – uguboz

+0

Ty itスワイプジェスチャーを見つけるのを助けました!しかし、私は、コードをナビゲーション引き出しを開くように見えることができないのですか?私は何かが欠けている場合は表示されますか? – Tim

答えて

0

変更

public abstract void onSwipeRight(); 

public void onSwipeRight() { 
    } 

からメソッド...

とウルクラスは抽象作りすぎ

public abstract class OnSwipeTouchListener 
+0

あなたのためにTy!私は仕事から家に帰るときにimmediatleyを試みます! – Tim

関連する問題