gpt4 book ai didi

Android SDK - 使用手势API,希望手势在被识别后留在屏幕上

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:36:48 24 4
gpt4 key购买 nike

我将 Gesture API 与我创建的 Gesture Library 一起使用,它运行得非常好。问题是我希望手势在 OnGesturePerformedListener 退出后在屏幕上可见,但手势被删除了。我在想,也许在 OnGesturePerformedListener 之后有一个事件——我可以将手势保存在 OnGesturePerformedListener 中,然后在稍后的事件中再次显示它。任何人都知道是否有这样的事件?这是代码:

   private OnGesturePerformedListener handleGestureListener = new OnGesturePerformedListener() {
@Override
public void onGesturePerformed(GestureOverlayView gestureView,
Gesture gesture) {
if (gesture.getStrokesCount() != 2){
setWonderEmoticon();
return;
}
ArrayList<Prediction> predictions = gLib.recognize(gesture);
// one prediction needed
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);
// checking prediction
if (prediction.score > 20.0) {
setHappyEmoticon();
}
else {
setWonderEmoticon();
}
}
}
};

顺便说一句,当从代码中删除 setWonderEmoticon() 和 setHappyEmoticon() 时,也会发生同样的事情。

最佳答案

这是一个与 OnGesturePerformedListener 配合使用的示例:

MainActivity.java:

// ...

public class MainActivity extends AppCompatActivity implements GestureOverlayView.OnGesturePerformedListener, GestureOverlayView.OnGestureListener {

GestureOverlayView mGestureView;
ImageView mImageView;
TextView mText;
Paint mPaint;
Bitmap mBitmap;
Canvas mCanvas;
GestureLibrary mGestureLib;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mImageView = (ImageView) findViewById(R.id.image_view);
mGestureView = (GestureOverlayView) findViewById(R.id.gesture_overlay);
mGestureView.addOnGesturePerformedListener(this);
mGestureView.addOnGestureListener(this);

mGestureView.setGestureColor(Color.BLACK);
mGestureView.setUncertainGestureColor(Color.BLACK);
mGestureView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onGlobalLayout() {
mGestureView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
mBitmap = Bitmap.createBitmap(mGestureView.getWidth(), mGestureView.getHeight(), Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
}
});

mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(12.0f);
mPaint.setColor(Color.GRAY);

mText = (TextView) findViewById(R.id.text);

mGestureLib = GestureLibraries.fromRawResource(getApplicationContext(), R.raw.gesture);
mGestureLib.load();
}

@Override
public void onGesturePerformed(GestureOverlayView gestureOverlayView, Gesture gesture) {
if (gesture.getStrokesCount() > 0) {
ArrayList<Prediction> predictions = mGestureLib.recognize(gesture);
for (GestureStroke stroke : gesture.getStrokes()) {
Path path = stroke.getPath();
mCanvas.drawPath(path, mPaint);
}
mImageView.setImageBitmap(mBitmap);
if (!predictions.isEmpty()) {
Prediction best = predictions.get(0);
mText.setText(String.format("Gesture: %s", best.name));
}
}
}

// ...
}

activity_main.xml ( snapshot ):

<?xml version="1.0" encoding="utf-8"?>
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="onl.nok.gestures.MainActivity">

<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Waiting ..."
android:textSize="25sp" />

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/image_view" />

<android.gesture.GestureOverlayView
android:id="@+id/gesture_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gestureStrokeType="single"
android:fadeEnabled="false" />
</RelativeLayout>

如何应用新手势?

  1. 使用 Android 应用程序跟踪手势 Gesture Builder
  2. 创建一个资源文件夹raw在你的项目中: <Project>/app/src/main/res/raw/
  3. 复制生成的文件gesture.txt从您的设备: /Android/data/pack.GestureApp/files/gesture.txt
  4. 最后粘贴到创建的文件夹raw : <Project>/app/src/main/res/raw/gesture.txt

最后我把源码推送到了GitHub:https://github.com/nok/android-gesture-libraries


第二次编辑:

你是对的。所以我使用一个简单的 ImageView绘制执行的手势。此外,您可以在 mPaint 中更改样式类型 Paint .您可以在推送的提交中找到所有更改 82eabfb5ce427d在 GitHub 上。

关于Android SDK - 使用手势API,希望手势在被识别后留在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38797834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com