android處理單擊雙擊和滑動事件
android有處理滑鼠動作的GestureDetector,使用起來也挺方便,幾個常用事件你都可以找到介面接入處理:
單擊、雙擊(比如雙擊放大)、滑動(比如翻頁)
下面是簡化的例子,參考並整合所得,來源參考頁尾參考內容:
單擊、雙擊(比如雙擊放大)、滑動(比如翻頁)
下面是簡化的例子,參考並整合所得,來源參考頁尾參考內容:
package com.aslibra.test;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.LinearLayout;
import android.widget.TextView;
public class touchGesture extends Activity implements OnGestureListener {
private LinearLayout main;
private TextView viewA;
private GestureDetector gestureScanner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gestureScanner = new GestureDetector(this);
gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){
public boolean onDoubleTap(MotionEvent e) {
viewA.setText("-" + "onDoubleTap" + "-");
//雙擊時產生一次
Log.v("test", "onDoubleTap");
return false;
}
public boolean onDoubleTapEvent(MotionEvent e) {
//雙擊時產生兩次
Log.v("test", "onDoubleTapEvent");
return false;
}
public boolean onSingleTapConfirmed(MotionEvent e) {
viewA.setText("-" + "onSingleTapConfirmed" + "-");
//短快的點選算一次單擊
Log.v("test", "onSingleTapConfirmed");
return false;
}
});
main = new LinearLayout(this);
main.setBackgroundColor(Color.GRAY);
main.setLayoutParams(new LinearLayout.LayoutParams(320,480));
main.setOrientation(LinearLayout.VERTICAL);
viewA = new TextView(this);
viewA.setBackgroundColor(Color.YELLOW);
viewA.setTextColor(Color.BLACK);
viewA.setTextSize(16);
viewA.setLayoutParams(new LinearLayout.LayoutParams(320,50));
main.addView(viewA);
setContentView(main);
}
@Override
public boolean onTouchEvent(MotionEvent me) {
return gestureScanner.onTouchEvent(me);
}
@Override
public boolean onDown(MotionEvent e) {
//viewA.setText("-" + "DOWN" + "-");
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//viewA.setText("-" + "FLING" + "- "+velocityX + "- "+velocityY);
Log.v("test", "onFling "+e1.getX()+" "+e2.getX());
return true;
}
@Override
public void onLongPress(MotionEvent e) {
//viewA.setText("-" + "LONG PRESS" + "-");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//viewA.setText("-" + "SCROLL" + "- "+distanceX + "- "+distanceY);
Log.v("test", "onScroll "+e1.getX()+" "+e2.getX());
return true;
}
@Override
public void onShowPress(MotionEvent e) {
//viewA.setText("-" + "SHOW PRESS" + "-");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.v("test", "onSingleTapUp");
//viewA.setText("-" + "SINGLE TAP UP" + "-"+ i++);
return true;
}
}
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.widget.LinearLayout;
import android.widget.TextView;
public class touchGesture extends Activity implements OnGestureListener {
private LinearLayout main;
private TextView viewA;
private GestureDetector gestureScanner;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gestureScanner = new GestureDetector(this);
gestureScanner.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener(){
public boolean onDoubleTap(MotionEvent e) {
viewA.setText("-" + "onDoubleTap" + "-");
//雙擊時產生一次
Log.v("test", "onDoubleTap");
return false;
}
public boolean onDoubleTapEvent(MotionEvent e) {
//雙擊時產生兩次
Log.v("test", "onDoubleTapEvent");
return false;
}
public boolean onSingleTapConfirmed(MotionEvent e) {
viewA.setText("-" + "onSingleTapConfirmed" + "-");
//短快的點選算一次單擊
Log.v("test", "onSingleTapConfirmed");
return false;
}
});
main = new LinearLayout(this);
main.setBackgroundColor(Color.GRAY);
main.setLayoutParams(new LinearLayout.LayoutParams(320,480));
main.setOrientation(LinearLayout.VERTICAL);
viewA = new TextView(this);
viewA.setBackgroundColor(Color.YELLOW);
viewA.setTextColor(Color.BLACK);
viewA.setTextSize(16);
viewA.setLayoutParams(new LinearLayout.LayoutParams(320,50));
main.addView(viewA);
setContentView(main);
}
@Override
public boolean onTouchEvent(MotionEvent me) {
return gestureScanner.onTouchEvent(me);
}
@Override
public boolean onDown(MotionEvent e) {
//viewA.setText("-" + "DOWN" + "-");
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//viewA.setText("-" + "FLING" + "- "+velocityX + "- "+velocityY);
Log.v("test", "onFling "+e1.getX()+" "+e2.getX());
return true;
}
@Override
public void onLongPress(MotionEvent e) {
//viewA.setText("-" + "LONG PRESS" + "-");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//viewA.setText("-" + "SCROLL" + "- "+distanceX + "- "+distanceY);
Log.v("test", "onScroll "+e1.getX()+" "+e2.getX());
return true;
}
@Override
public void onShowPress(MotionEvent e) {
//viewA.setText("-" + "SHOW PRESS" + "-");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.v("test", "onSingleTapUp");
//viewA.setText("-" + "SINGLE TAP UP" + "-"+ i++);
return true;
}
}
相關文章
- Android雙擊以及多擊事件Android事件
- 雙擊和單擊事件衝突解決方法事件
- 同一個元素的單擊事件與雙擊事件事件
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- 處理WKContentView雙擊crashView
- onDblClick雙擊事件事件
- jQuery滑鼠雙擊事件簡單介紹jQuery事件
- ABAP--處理'REUSE_ALV_GRID_DISPLAY'的雙擊事件事件
- QHeaderView的點選和雙擊事件HeaderView事件
- 滑鼠單擊變雙擊怎麼辦 滑鼠單擊變成雙擊的解決辦法
- (轉)ABAP--處理'REUSE_ALV_GRID_DISPLAY'的雙擊事件事件
- ALV中滑鼠雙擊事件事件
- win10滑鼠單擊變雙擊如何解決_win10系統滑鼠單擊變雙擊的解決方法Win10
- 77 行程式碼實現 ABAP ALV 中的雙擊事件處理試讀版行程事件
- thinkcmf+layui 改為滑動響應,單擊跳轉UI
- Android事件傳遞、多點觸控及滑動衝突的處理Android事件
- ext4 tree單擊事件事件
- win10chrome雙擊沒反應的怎麼解決_win10谷歌瀏覽器雙擊無法啟動如何處理Win10Chrome谷歌瀏覽器
- 移動端VUE點選、滑動和長按等事件處理(自定義指令)Vue事件
- 通俗理解Android中View的事件分發機制及滑動衝突處理AndroidView事件
- android開發中單擊事件的多種實現方法Android事件
- 安卓觸控事件與單擊事件的區別安卓事件
- 實現Android監控任意控制元件或按鍵雙擊事件方法Android控制元件事件
- Android 按鈕單擊事件的四種常用寫法總結Android事件
- win10 jar檔案雙擊沒反應怎麼處理_win10 jar檔案雙擊沒反應如何解決Win10JAR
- wpf雙擊窗體不進loaded事件程式碼事件
- css模擬實現雙擊事件程式碼例項CSS事件
- TCP洪水攻擊(SYN_SENT)的診斷和處理TCP
- 如何處理ARP的攻擊技巧
- 網路攻擊中主動攻擊和被動攻擊有什麼區別?
- 滑鼠雙擊頁面實現自動滾動效果
- 一次烏龍的SSH攻擊處理
- 使用 jQuery 避免滑鼠雙擊jQuery
- iOS UITableViewCell允許滑動的處理iOSUIView
- 事件分發和處理事件
- sliverlight簡單方法實現雙擊觸發
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- 伺服器遭受攻擊後怎麼處理伺服器