日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GestureDetector学习之左右滑动,上下滑动屏幕切换页面

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GestureDetector学习之左右滑动,上下滑动屏幕切换页面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

要實現滑屏等觸發事件,視情況而定;

如果實現的觸屏或者手勢效果較多,則使用第一種方法,實現OnGestureListener 接口(參考OnGestureListener);

如果只是實現較少的效果,則考慮使用SimpleOnGestureListener(參考SimpleOnGestureListenter);主要分為以下三步:

第一種方法:

1、繼承OnTouchListener , OnGestureListener ;

//繼承OnTouchListener,OnGestureListener public class MainActivity extends Activity implements OnTouchListener,OnGestureListener{

?

:此處使用的OnGestureListener來自包 android.view.GestureDetector.OnGestureListener;而不是 android.gesture.GestureOverlayView.OnGestureListener;

2、初始化OnGestureListener ,即注冊手勢監聽 ;獲得當前接受操作的布局id ; 注冊觸屏監聽;

//手勢監聽 mGestureDetector = new GestureDetector(MainActivity.this,(OnGestureListener) this);//(OnGestureListener) 可以省略 //獲得當前接受操作的布局id RelativeLayout mActivity = (RelativeLayout)findViewById(R.id.main_activity); //觸屏監聽 mActivity.setOnTouchListener(this); mActivity.setLongClickable(true);

?

3、重載onFling()和onTouch();

public boolean onTouch(View v, MotionEvent event) {return mGestureDetector.onTouchEvent(event); }public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//省略 }


第二種方法如下:

1、繼承OnTouchListener? ;

//繼承OnTouchListener public class MainActivity extends Activity implements OnTouchListener{

?

2、初始化OnGestureListener ,即注冊手勢監聽 ;獲得當前接受操作的布局id ; 注冊觸屏監聽;

//手勢監聽 mGestureDetector = new GestureDetector(MainActivity.this,new MySimpleOnGestureListener());//下邊定義MySimpleOnGestureListener,//并使其繼承SimpleOnGestureListener類 //獲得當前接受操作的布局id RelativeLayout mActivity = (RelativeLayout)findViewById(R.id.main_activity); //觸屏監聽 mActivity.setOnTouchListener(this); mActivity.setLongClickable(true);

3、定義SimpleOnGestureListener子類,并重載onTouch()和所需方法;

class MySimpleGestureListener extends SimpleOnGestureListener{@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//大于設定的最小滑動距離并且在水平/豎直方向速度絕對值大于設定的最小速度,則執行相應方法if(e1.getX()-e2.getX() > verticalMinistance && Math.abs(velocityX) > minVelocity){Toast.makeText(MainActivity.this, "turn left", Toast.LENGTH_SHORT).show();}else if(e2.getX() - e1.getX() > verticalMinistance && Math.abs(velocityX) > minVelocity){Toast.makeText(MainActivity.this, "turn right", Toast.LENGTH_SHORT).show();}else if(e1.getY()-e2.getY() > 20 && Math.abs(velocityY) > 10){Toast.makeText(MainActivity.this, "turn up", Toast.LENGTH_SHORT).show();}else if(e2.getY()-e1.getY() > 20 && Math.abs(velocityY) > 10){Toast.makeText(MainActivity.this, "turn down", Toast.LENGTH_SHORT).show();}return false;}@Overridepublic boolean onDown(MotionEvent e){Toast.makeText(MainActivity.this, "onDown", Toast.LENGTH_SHORT).show();return false;}}

?


具體代碼如下:

(第一種方法)

import android.app.Activity; import android.content.Intent;import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.*;public class MainActivity extends Activity implements OnTouchListener,OnGestureListener{private static final String tag = "mainActivity";private GestureDetector mGestureDetector;private int verticalMinistance = 20; //水平最小識別距離private int minVelocity = 10; //最小識別速度@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//手勢監聽mGestureDetector = new GestureDetector(MainActivity.this,(OnGestureListener) this);//(OnGestureListener) 可以省略//獲得當前接受操作的布局idRelativeLayout mActivity = (RelativeLayout)findViewById(R.id.main_activity);//觸屏監聽mActivity.setOnTouchListener(this);mActivity.setLongClickable(true);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onTouch(View v, MotionEvent event) {return mGestureDetector.onTouchEvent(event);}public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//大于設定的最小滑動距離并且在水平/豎直方向速度絕對值大于設定的最小速度,則執行相應方法if(e1.getX()-e2.getX() > verticalMinistance && Math.abs(velocityX) > minVelocity){//在此處實現跳轉//Intent intent = new Intent(MainActivity.this,nextActivity.class);//startActivity(intent);Toast.makeText(MainActivity.this, "turn left", Toast.LENGTH_SHORT).show();}else if(e2.getX() - e1.getX() > verticalMinistance && Math.abs(velocityX) > minVelocity){Toast.makeText(MainActivity.this, "turn right", Toast.LENGTH_SHORT).show();}else if(e1.getY()-e2.getY() > 20 && Math.abs(velocityY) > 10){Toast.makeText(MainActivity.this, "turn up", Toast.LENGTH_SHORT).show();}else if(e2.getY()-e1.getY() > 20 && Math.abs(velocityY) > 10){Toast.makeText(MainActivity.this, "turn down", Toast.LENGTH_SHORT).show();}return false;}//只要有觸發就會調用次方法@Overridepublic boolean onDown(MotionEvent e) {Toast.makeText(MainActivity.this, "onDown", Toast.LENGTH_SHORT).show();return false;}@Overridepublic void onLongPress(MotionEvent e) {Toast.makeText(MainActivity.this, "onLongPress", Toast.LENGTH_SHORT).show();}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {// Toast.makeText(MainActivity.this, "onScroll", Toast.LENGTH_SHORT).show();return false;}@Overridepublic void onShowPress(MotionEvent e) { // Toast.makeText(MainActivity.this, "onShowPress", Toast.LENGTH_SHORT).show();}@Overridepublic boolean onSingleTapUp(MotionEvent e) { // Toast.makeText(MainActivity.this, "onsingleTapup", Toast.LENGTH_SHORT).show();return false;} }

?

?

(第二種方法)

import android.app.Activity; import android.content.Intent;import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.*;public class MainActivity extends Activity implements OnTouchListener{private static final String tag = "mainActivity";private GestureDetector mGestureDetector;private int verticalMinistance = 20; //水平最小識別距離private int minVelocity = 10; //最小識別速度@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//手勢監聽mGestureDetector = new GestureDetector(MainActivity.this,new LearnGestureListener());//獲得當前接受操作的布局idRelativeLayout mActivity = (RelativeLayout)findViewById(R.id.main_activity);//觸屏監聽mActivity.setOnTouchListener(this);mActivity.setLongClickable(true);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onTouch(View v, MotionEvent event) {return mGestureDetector.onTouchEvent(event);}class LearnGestureListener extends SimpleOnGestureListener{@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//大于設定的最小滑動距離并且在水平/豎直方向速度絕對值大于設定的最小速度,則執行相應方法if(e1.getX()-e2.getX() > verticalMinistance && Math.abs(velocityX) > minVelocity){Toast.makeText(MainActivity.this, "turn left", Toast.LENGTH_SHORT).show();}else if(e2.getX() - e1.getX() > verticalMinistance && Math.abs(velocityX) > minVelocity){Toast.makeText(MainActivity.this, "turn right", Toast.LENGTH_SHORT).show();}else if(e1.getY()-e2.getY() > 20 && Math.abs(velocityY) > 10){Toast.makeText(MainActivity.this, "turn up", Toast.LENGTH_SHORT).show();}else if(e2.getY()-e1.getY() > 20 && Math.abs(velocityY) > 10){Toast.makeText(MainActivity.this, "turn down", Toast.LENGTH_SHORT).show();}return false;}@Overridepublic boolean onDown(MotionEvent e){Toast.makeText(MainActivity.this, "onDown", Toast.LENGTH_SHORT).show();return false;}}}


轉載于:https://www.cnblogs.com/jiangu66/p/3202732.html

總結

以上是生活随笔為你收集整理的GestureDetector学习之左右滑动,上下滑动屏幕切换页面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。