gpt4 book ai didi

java - 如何在android wear中实现手势识别

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:56 25 4
gpt4 key购买 nike

你好,我正在寻找如何在 android wear 中检测手势,在 android 中我使用了一些这样的代码,但在 android wear 中不起作用..有没有办法覆盖默认手势 Action 或只是识别它们?

我做的就像谷歌开发者: https://www.youtube.com/watch?v=naf_WbtFAlY http://youtu.be/sha_w3_5c2c?t=25m1s模拟器有问题吗? (我使用的是 32 位模拟器:emulator -avd AndroidWearXC -force-32bit)

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;


public class MainActivity extends Activity {
private GestureDetector mDetector;

private static String DEBUG_TAG="MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


mDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {

@Override
public void onLongPress(MotionEvent event) {

Log.d(DEBUG_TAG, " onLongPress: " + event.toString());
}

@Override
public boolean onDown(MotionEvent event) {
Log.d(DEBUG_TAG," onDown: " + event.toString());
return true;
}

@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(DEBUG_TAG, " onFling: " + event1.toString()+event2.toString());
return true;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d(DEBUG_TAG, " onScroll: " + e1.toString()+e2.toString());
return true;
}

@Override
public void onShowPress(MotionEvent event) {
Log.d(DEBUG_TAG, " onShowPress: " + event.toString());
}

@Override
public boolean onSingleTapUp(MotionEvent event) {
Log.d(DEBUG_TAG, " onSingleTapUp: " + event.toString());
return true;
}

@Override
public boolean onDoubleTap(MotionEvent event) {
Log.d(DEBUG_TAG, " onDoubleTap: " + event.toString());
return true;
}

@Override
public boolean onDoubleTapEvent(MotionEvent event) {
Log.d(DEBUG_TAG, " onDoubleTapEvent: " + event.toString());
return true;
}

@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
Log.d(DEBUG_TAG, " onSingleTapConfirmed: " + event.toString());
return true;
}
});

}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
}


}

我想左右滑动,上下滚动手势: enter image description here

解决了!检查我的答案..

最佳答案

一天后我让它开始工作,丢失的部分是我必须禁用滑动关闭手势并将 DismissOverlayView 添加到我的布局,步骤:

  1. 禁用滑动关闭手势将 AppTheme 样式添加到您的 styles.xml 并将其用作您的 mainfest 中的应用程序样式

样式.xml:

    <style name="AppTheme" parent="Theme.DeviceDefault">
<item name="android:windowSwipeToDismiss">false</item>
</style>

AndroidManifest.xml:

    <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
  1. 将 DissmissOverlayView 添加到您的主布局

        <android.support.wearable.view.DismissOverlayView 
    android:id="@+id/dismiss_overlay"
    android:layout_height="match_parent"
    android:layout_width="match_parent"/>
  2. 像这样在您的 Activity 中使用它来获取手势

        public class WearActivity extends Activity {
    private DismissOverlayView mDismissOverlay;
    private GestureDetector mDetector;

    public void onCreate(Bundle savedState) {
    super.onCreate(savedState);
    setContentView(R.layout.wear_activity);

    // Obtain the DismissOverlayView element
    mDismissOverlay = (DismissOverlayView) findViewById(R.id.dismiss_overlay);
    mDismissOverlay.setIntroText(R.string.long_press_intro);
    mDismissOverlay.showIntroIfNecessary();

    // Configure a gesture detector
    mDetector = new GestureDetector(this, new SimpleOnGestureListener() {

    @Override
    public void onLongPress(MotionEvent event) {

    Log.d(DEBUG_TAG, " onLongPress: " + event.toString());
    }

    @Override
    public boolean onDown(MotionEvent event) {
    Log.d(DEBUG_TAG," onDown: " + event.toString());
    return true;
    }

    @Override
    public boolean onFling(MotionEvent event1, MotionEvent event2,
    float velocityX, float velocityY) {
    Log.d(DEBUG_TAG, " onFling: " + event1.toString()+event2.toString());
    return true;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
    float distanceY) {
    Log.d(DEBUG_TAG, " onScroll: " + e1.toString()+e2.toString());
    return true;
    }

    @Override
    public void onShowPress(MotionEvent event) {
    Log.d(DEBUG_TAG, " onShowPress: " + event.toString());
    }

    @Override
    public boolean onSingleTapUp(MotionEvent event) {
    Log.d(DEBUG_TAG, " onSingleTapUp: " + event.toString());
    return true;
    }

    @Override
    public boolean onDoubleTap(MotionEvent event) {
    Log.d(DEBUG_TAG, " onDoubleTap: " + event.toString());
    return true;
    }

    @Override
    public boolean onDoubleTapEvent(MotionEvent event) {
    Log.d(DEBUG_TAG, " onDoubleTapEvent: " + event.toString());
    return true;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent event) {
    Log.d(DEBUG_TAG, " onSingleTapConfirmed: " + event.toString());
    return true;
    }
    });
    }

    // Capture long presses
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
    return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
    }
    }

关于java - 如何在android wear中实现手势识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27524418/

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