我是Android编程新手。 我想处理滑动事件。请帮助我使用适当的类和方法作为例子。
答案 0 :(得分:0)
Android支持手势。要使用此支持,您的应用程序必须使用视图" GestureOverlayView"。在此视图中,您可以放置其他视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello"/>
</LinearLayout>
import java.util.ArrayList;
import android.app.Activity;
import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.GestureOverlayView.OnGesturePerformedListener;
import android.gesture.Prediction;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class GestureTest extends Activity implements OnGesturePerformedListener {
private GestureLibrary gestureLib;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GestureOverlayView gestureOverlayView = new GestureOverlayView(this);
View inflate = getLayoutInflater().inflate(R.layout.main, null);
gestureOverlayView.addView(inflate);
gestureOverlayView.addOnGesturePerformedListener(this);
gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures);
if (!gestureLib.load()) {
finish();
}
setContentView(gestureOverlayView);
}
@Override
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = gestureLib.recognize(gesture);
for (Prediction prediction : predictions) {
if (prediction.score > 1.0) {
Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT)
.show();
}
}
}
}
答案 1 :(得分:0)
由于您不熟悉Android编程,我建议您完成Swipe Developer Standards一次。
之后您可能想要查看此解决方案:Android Basic Gesture Detection。此链接还包含有关如何处理滑动事件的代码。通常,术语术语如fling和velocity用于表示滑动事件。
Swipe Event背后的一般逻辑:
当用户在屏幕上从左向右或从右向左滑动时,会发生以下情况: 用户首先触摸屏幕(假设第一个x坐标是x1)保持,交换然后离开屏幕(假设第二个x坐标是x2)
所以,现在如果(x2> x1),则意味着已经完成了从左到右的滑动。
如果(x2 同样,可以在Up to Down或Down to Up的情况下进行跟踪。