是的,Android GestureDetector 可以自定義手勢。你可以通過實現 GestureDetector.OnGestureListener
接口來處理自定義手勢。以下是一個簡單的示例,展示了如何創建一個自定義手勢檢測器并識別一個名為 “myCustomGesture” 的手勢:
Gesture
接口:import android.view.Gesture;
import android.view.MotionEvent;
public class MyCustomGesture extends Gesture {
private float startX, startY;
private float endX, endY;
public MyCustomGesture(long time, int actionCode, float x, float y) {
super(time, actionCode);
this.startX = x;
this.startY = y;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// 在這里處理你的自定義手勢邏輯
return false;
}
}
GestureDetector
實例并設置自定義手勢監聽器:import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector = new GestureDetector(this, new MyGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gestureDetector.onTouchEvent(event) || super.onTouchEvent(event);
}
private class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// 在這里處理你的自定義手勢邏輯
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// 如果你想處理滾動事件,可以在這里覆蓋 onScroll 方法
return false;
}
}
}
現在,當你在布局中執行 “myCustomGesture” 手勢時,onFling
方法將被調用,你可以在其中處理自定義手勢的邏輯。