国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

實例詳解用戶輸入 i. 檢測常用手勢

2020-04-11 10:55:34
字體:
來源:轉載
供稿:網友

效果:一個手指實現(所有手勢事件)和(部分事件的);

A. 所有手勢

activity_main.xml

<TextView android:id="@+id/gesture" android:layout_width="match_parent" android:layout_height="150dp" android:gravity="center" android:text="單擊手勢變化" /><TextView android:id="@+id/doubleTap" android:layout_width="match_parent" android:layout_height="150dp" android:gravity="center" android:text="雙擊手勢變化" /> 

MainActivity.java

public class MainActivity extends Activity{ private static final String LOG_TAG = "HelloGesture"; private GestureDetector mGestureDetector = null; private TextView mGestureTextView = null; private TextView mDoubleTapTextView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGestureTextView = (TextView) findViewById(R.id.gesture); mDoubleTapTextView = (TextView) findViewById(R.id.doubleTap); // 構造GestureDetector對象,傳入監聽器對象 mGestureDetector = new GestureDetector(this, mOnGestureListener); // 傳入雙擊監聽器對象 mGestureDetector.setOnDoubleTapListener(mDoubleTapListener); } @Override public boolean onTouchEvent(MotionEvent event) { // 在onTouchEvent方法中將事件傳遞給手勢檢測對象,否則手勢監聽對象中的回調函數是不會被調用的 mGestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } private OnGestureListener mOnGestureListener = new OnGestureListener(){ @Override public boolean onSingleTapUp(MotionEvent e) { Log.i(LOG_TAG, "onSingleTapUp: " + e.toString()); mGestureTextView.setText("onSingleTapUp: "); return false; } @Override public void onShowPress(MotionEvent e) { Log.i(LOG_TAG, "onShowPress: " + e.toString()); mGestureTextView.setText("onShowPress: "); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY){ Log.i(LOG_TAG, "onScroll: " + e1.toString() + ", " + e2.toString()); mGestureTextView.setText("onScroll "); return false; } @Override public void onLongPress(MotionEvent e){ Log.i(LOG_TAG, "onLongPress: " + e.toString()); mGestureTextView.setText("onLongPress: "); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i(LOG_TAG, "onFling: " + e1.toString() + ", " + e2.toString()); mGestureTextView.setText("onFling "); return false; } @Override public boolean onDown(MotionEvent e) { Log.i(LOG_TAG, "onDown: " + e.toString()); mGestureTextView.setText("onDown: "); return false; } }; private OnDoubleTapListener mDoubleTapListener = new OnDoubleTapListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { Log.i("LOG_TAG", "onSingleTapConfirmed: " + e.toString()); mDoubleTapTextView.setText("onSingleTapConfirmed: "); return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { Log.i("LOG_TAG", "onDoubleTapEvent: " + e.toString()); mDoubleTapTextView.setText("onDoubleTapEvent: "); return false; } @Override public boolean onDoubleTap(MotionEvent e) { Log.i("LOG_TAG", "onDoubleTap: " + e.toString()); mDoubleTapTextView.setText("onDoubleTap: "); return false; } };} 

B. 部分手勢

如果你僅僅只想處理幾種手勢,你可以選擇繼承GestureDetector.SimpleOnGestureListener類,而不是實現
GestureDetector.OnGestureListener接口

MainActivity.java

public class MainActivity extends Activity { private GestureDetector mGestureDetector = null; private TextView mGestureTextView = null; private TextView mDoubleTapTextView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGestureTextView = (TextView) findViewById(R.id.gesture); mDoubleTapTextView = (TextView) findViewById(R.id.doubleTap); // 構造GestureDetector對象,傳入監聽器對象 mGestureDetector = new GestureDetector(this, new MyGestureListener()); // 傳入雙擊監聽器對象 } @Override public boolean onTouchEvent(MotionEvent event) { // 在onTouchEvent方法中將事件傳遞給手勢檢測對象,否則手勢監聽對象中的回調函數是不會被調用的 this.mGestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } class MyGestureListener extends GestureDetector.SimpleOnGestureListener { private static final String DEBUG_TAG = "Gestures"; @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.d(DEBUG_TAG, "onFling: " + e1.toString() + ", " + e2.toString()); mGestureTextView.setText("onFling "); return false; } @Override public boolean onDown(MotionEvent e){ Log.d(DEBUG_TAG, "onDown: " + e.toString()); mGestureTextView.setText("onDown: "); return false; } }} 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石渠县| 鹿泉市| 镇原县| 贺州市| 家居| 高雄市| 鲜城| 青海省| 湖州市| 舟山市| 西华县| 华安县| 雷山县| 九龙坡区| 同仁县| 衡南县| 大港区| 郯城县| 承德市| 潜山县| 广丰县| 云南省| 黄龙县| 宣化县| 屏南县| 花垣县| 昭通市| 旺苍县| 荥经县| 嘉黎县| 阳朔县| 西林县| 乐平市| 阿瓦提县| 定州市| 蓬安县| 岳池县| 丁青县| 渝北区| 夏津县| 丹东市|