通過手勢識別器實現(xiàn)界面的轉(zhuǎn)跳,具體內(nèi)容如下
1、創(chuàng)建 GestureDetector對象
2、創(chuàng)建新類繼承SimpleOnGestureListener類(創(chuàng)建 GestureDetecto需要的參數(shù))
3、重寫SimpleOnGestureListener中的OnFling()方法。(滑動手勢監(jiān)聽)
4、重寫界面的OntouchEvent方法
5、通過 GestureDetector對象的onTouchEvent()添加事件
代碼如下:
public abstract class BaseActivity extends AppCompatActivity { private GestureDetector gue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); //這里的第一個參數(shù)是上下文,第二個是手勢監(jiān)聽器 gue = new GestureDetector(this, new MyGestureListener()); } class MyGestureListener extends GestureDetector.SimpleOnGestureListener {//onFling方法的第一個參數(shù)是 手指按下的位置, 第二個參數(shù)是 手指松開的位置,第三個參數(shù)是手指的速度 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { float startX = e1.getX();//通過e1.getX()獲得手指按下位置的橫坐標 float endX = e2.getX();//通過e2.getX()獲得手指松開位置的橫坐標 float startY = e1.getY();//通過e1.getY()獲得手指按下位置的縱坐標 float endY = e2.getY();//通過e2.getY()獲得手指松開的縱坐標 if ((startX - endX) > 50 && Math.abs(startY - endY) < 200) { //(startX - endX) > 50 是手指從按下到松開的橫坐標距離大于50 // Math.abs(startY - endY) < 200 是手指從按下到松開的縱坐標的差的絕對值 //在這里通過Intent實現(xiàn)界面轉(zhuǎn)跳 } if ((endX - startX) > 50 && Math.abs(startY - endY) <200) { //在這里通過Intent實現(xiàn)界面轉(zhuǎn)跳 }//返回值是重點:如果返回值是true則動作可以執(zhí)行,如果是flase動作將無法執(zhí)行 return true; } } @Override public boolean onTouchEvent(MotionEvent event) { gue.onTouchEvent(event); return super.onTouchEvent(event); }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點
疑難解答
圖片精選