import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener {
private TextView gestureResultTextView;
private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureResultTextView = findViewById(R.id.gestureResultTextView);
// 创建 GestureDetector 实例,并设置监听器
gestureDetector = new GestureDetector(this, this);
gestureDetector.setOnDoubleTapListener(this);
// 设置触摸监听器
View gestureView = findViewById(R.id.gestureView);
gestureView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 将触摸事件传递给 GestureDetector 处理
return gestureDetector.onTouchEvent(event);
}
});
}
// 实现 GestureDetector.OnGestureListener 接口的方法
@Override
public boolean onDown(MotionEvent e) {
gestureResultTextView.setText("onDown");
return true;
}
@Override
public void onShowPress(MotionEvent e) {
gestureResultTextView.setText("onShowPress");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
gestureResultTextView.setText("onSingleTapUp");
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
gestureResultTextView.setText("onScroll");
return true;
}
@Override
public void onLongPress(MotionEvent e) {
gestureResultTextView.setText("onLongPress");
}
// 实现 GestureDetector.OnDoubleTapListener 接口的方法
@Override
public boolean onDoubleTap(MotionEvent e) {
gestureResultTextView.setText("onDoubleTap");
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
gestureResultTextView.setText("onDoubleTapEvent");
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
gestureResultTextView.setText("onSingleTapConfirmed");
return true;
}
}
在这个示例中,我们创建了一个 GestureDetector 实例,并通过 setOnDoubleTapListener 设置了双击手势的监听器。然后,我们通过触摸监听器将触摸事件传递给 GestureDetector 处理。在 onTouch 方法中,GestureDetector 将根据触摸事件的类型调用相应的监听器方法。
在 onCreate 方法中,我们还设置了 GestureDetector.OnGestureListener 和 GestureDetector.OnDoubleTapListener 接口的方法,以便处理不同的手势。你可以根据需求实现这些方法,执行相应的操作。
在布局文件中,我们为 gestureView 设置了触摸监听器。gestureView 可以是任何 View,例如 ImageView 或 TextView。
<!-- res/layout/activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/gestureResultTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gesture Result"
android:layout_centerInParent="true"/>
<View
android:id="@+id/gestureView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCCCCC"/>
</RelativeLayout>
这个示例演示了如何使用 GestureDetector 来处理基本的手势操作。你可以根据需要扩展这个示例,实现更复杂的手势操作的处理。
转载请注明出处:http://www.zyzy.cn/article/detail/15168/Android