Sid*_*kar 6 android gesture-recognition gestures google-glass android-4.4-kitkat
在Google Glass XE16中,GestureDetector可以检测多种手势,如LONG_PRESS,SWIPE_DOWN,THREE_LONG_PRESS,TWO_SWIPE_DOWN,TWO_TAP和其他一些手势.
在玻璃中TWO_SWIPE_DOWN就像取消所有内容并转到黑屏的快捷方式选项.在黑色屏幕之后它出现"ok glass".
但我需要覆盖TWO_SWIPE_DOWN TAP,以便用户不能以这种方式离开应用程序.我想在点击TWO_SWIPE_DOWN时显示用户特定的消息.
我的代码遵循以下GDK Touch Gestures:
gestureDetector.setBaseListener(new GestureDetector.BaseListener() {
@Override
public boolean onGesture(Gesture gesture) {
if (gesture == Gesture.TAP) {
return true;
} else if (gesture == Gesture.TWO_TAP) {
return true;
} else if (gesture == Gesture.SWIPE_RIGHT) {
return true;
} else if (gesture == Gesture.SWIPE_LEFT) {
return true;
} else if (gesture == Gesture.TWO_SWIPE_DOWN) {
Log.i("Checking the TAPPING of TWO_SWIPE_DOWN", "Its working fine.");
return true;
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
以上代码能够在没有TWO_SWIPE_DOWN TAP的情况下捕获每个其他水龙头!
那么我将如何能够捕获TWO_SWIPE_DOWN TAP?
如果您的代码位于 View/SurfaceView 中,则这是 Google 提供的实现
/**
* TextView that handles touchpad input (currently only TAP).
*/
public class TouchpadHandlingTextView extends TextView
implements OnAttachStateChangeListener{
private final GestureDetector mTouchDetector;
public TouchpadHandlingTextView(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchDetector = createGestureDetector(context);
// must set the view to be focusable
setFocusable(true);
setFocusableInTouchMode(true);
}
public TouchpadHandlingTextView(Context context) {
this(context, null);
}
@Override
public void onViewAttachedToWindow(View v) {
requestFocus();
}
@Override
public void onViewDetachedFromWindow(View v) {
}
/**
* Pass a MotionEvent into the gesture detector
*/
@Override
public boolean dispatchGenericFocusedEvent(MotionEvent event) {
if (isFocused()) {
return mTouchDetector.onMotionEvent(event);
}
return super.dispatchGenericFocusedEvent(event);
}
/**
* Create gesture detector that triggers onClickListener. Implement
* onClickListener in your Activity and override
* onClick() to handle the "tap" gesture.
*/
private GestureDetector createGestureDetector(Context context) {
GestureDetector gd = new GestureDetector(context);
gd.setBaseListener(new GestureDetector.BaseListener() {
@Override
public boolean onGesture(Gesture gesture) {
if (gesture == Gesture.TAP) {
return performClick();
}
if(gesture == Gesture.SWIPE_DOWN){
//Do something instead of close app
return true;
}
}
});
return gd;
}
}
Run Code Online (Sandbox Code Playgroud)
这将使您能够完全控制您的视图事件。
这是我从谷歌得到的参考。
https://developers.google.com/glass/develop/gdk/touch
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |