国产探花免费观看_亚洲丰满少妇自慰呻吟_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; } }} 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛川县| 兴化市| 丰都县| 南华县| 集安市| 永清县| 宁安市| 莱州市| 揭西县| 黄龙县| 桃园市| 乌兰浩特市| 江安县| 乌鲁木齐市| 安庆市| 石台县| 社旗县| 万年县| 如皋市| 新竹县| 盐亭县| 齐齐哈尔市| 临潭县| 通城县| 白河县| 霸州市| 鹿邑县| 潜山县| 红桥区| 平定县| 洪泽县| 竹北市| 莱阳市| 怀宁县| 宜君县| 建阳市| 武鸣县| 平舆县| 东海县| 香港 | 海兴县|