我的应用程序包含一个填充按钮的区域.我希望以这种方式实现活动,按钮区域上的fling手势会将其切换到另外两个区域之一(使用ViewFlipper).
我在检测手势方面做了两种方法.第一个涉及使用GestureDetector.但是,Button上的触摸动作事件没有引发onTouchEvent活动方法,所以 - 结果 - 我无法将它转发到GestureDetector类.简而言之,失败.
第二种方法 - 使用GestureOverlayView.然而,这一次,我已经达到了第二个极端:不仅检测到手势,而且执行手势的按钮报告了点击.
我希望界面以下列方式工作:如果用户触摸按钮并释放触摸(或仅略微移动手指),则按钮会报告单击并且未检测到任何手势.另一方面,如果用户触摸屏幕并进行更长时间的移动,则应检测手势并且按钮不报告点击事件.
我已经实现了一个小概念验证应用程序.活动XML代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical">
<android.gesture.GestureOverlayView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/overlay">
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<TextView android:id="@+id/display" android:layout_width="match_parent" android:layout_height="wrap_content" />
<Button android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/button"/>
</LinearLayout>
</android.gesture.GestureOverlayView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动java代码如下:
package spk.sketchbook;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.gesture.*;
import android.gesture.GestureOverlayView.OnGestureListener;
public class Main extends Activity implements OnGestureListener, OnClickListener
{
private void SetupEvents()
{
GestureOverlayView ov = (GestureOverlayView)findViewById(R.id.overlay);
ov.addOnGestureListener(this); …Run Code Online (Sandbox Code Playgroud) 我想创建与Phibrow App相同的动画.有关详细信息,请参阅以下视频: - https://www.dropbox.com/s/wwc69a9ktaa52je/IMG_0155.MOV?dl=0
我试图用这个动画制作UIPinchGestureRecognizer,UIRotationGestureRecognizer和UIPanGestureRecognizer.但还不能得到这个动画.
func handlePinchGesture(gesture: UIPinchGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.began || gesture.state == UIGestureRecognizerState.changed{
//print("UIPinchGestureRecognizer")
gesture.view?.transform = (gesture.view?.transform)!.scaledBy(x: gesture.scale, y: gesture.scale)
gesture.scale = 1.0
}
}
func handleRotationGesture(gesture: UIRotationGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.began || gesture.state == UIGestureRecognizerState.changed{
print("UIRotationGestureRecognizer : ", gesture.rotation)
gesture.view?.transform = (gesture.view?.transform)!.rotated(by: gesture.rotation)
gesture.rotation = 0
}
}
func handlePanGesture(gesture: UIPanGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.began || gesture.state == UIGestureRecognizerState.changed{
//print("UIPanGestureRecognizer")
let translation = gesture.translation(in: view) …Run Code Online (Sandbox Code Playgroud) 我正在编写一个针对OS X Lion和Snow Leopard的应用程序.我有一个观点,我想要回应滑动事件.我的理解是,-[NSResponder swipeWithEvent:]如果在我的自定义视图中实现了该方法,则三指滑动将调用.我已经看过这个问题和相应的答案,并尝试了以下Oscar Del Ben代码的修改后的实现:
@implementation TestView
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor redColor] set];
NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
}
- (void)swipeWithEvent:(NSEvent *)event {
NSLog(@"Swipe event detected!");
}
- (void)beginGestureWithEvent:(NSEvent *)event {
NSLog(@"Gesture detected!");
}
- (void)endGestureWithEvent:(NSEvent *)event {
NSLog(@"Gesture end detected!");
}
- (void)mouseDown:(NSEvent *)theEvent {
NSLog(@"mouseDown event detected!");
}
@end
Run Code Online (Sandbox Code Playgroud)
这编译并运行正常,视图按预期呈现.该mouseDown:事件已正确注册.但是,没有其他事件被触发.既不是begin/endGestureWithEvent:方法,也不是swipeWithEvent: …
所以这是捕获.我有两个滚动视图,一个充满10个奇数子视图,基本上就像扑克牌(自定义类视图).我希望能够将这些视图中的一些拖放到我拥有的空滚动条中.
这两个滚动视图之间有许多不同的视图.所以我想显示视图实际上是从一个视图拖动并放在另一个滚动视图中.我如何实现这一目标.
我知道我必须使用触摸,但如果有人能够举起一个简单的例子,我会很高兴.谢谢.
我想在android屏幕上检测到三个手指点击.我能够检测到最多两个手指.如何检测三个手指呢?我听到一些android能够检测到2个手指的位置.是这样吗?
我正在试图弄清楚我可以使用什么库来进行仅使用Javascript的Tinder风格的拖放手势.
当用户移开他的手指时,元素要么:
动画回到原来的位置
如果元素在释放时位于指定的放置区域上,则该元素将生成动画并消失,并且需要某种触发事件包含哪个元素被删除以及哪个放置区域被放入
我已经研究过HammerJS,但似乎并不支持掉落区域.
jQuery的Hover事件似乎不适用于手指.
GestureDetector Class和GestureDetectorCompat类有什么区别?两者都做同样的事情(处理手势),但我应该使用哪一个?
我正在尝试将提供kinect sdk工具的DiscreteGestureBasics项目与RecordAndPlaybackBasics相结合.RecordAndPlaybackBasics代码有两个主要方法播放.xef文件并记录.xef.我想阅读.xef文件并使用DiscreteGestureBasics中的代码评估手势.在DiscreteGestureBasics我输入功能进行播放.xef使用从代码文件RecordAndPlaybackBasics.播放文件的代码如下:
private void PlaybackClip(string filePath)
{
using (KStudioClient client = KStudio.CreateClient())
{
client.ConnectToService();
using (KStudioPlayback playback = client.CreatePlayback(filePath))
{
playback.LoopCount = this.loopCount;
playback.Start();
while (playback.State == KStudioPlaybackState.Playing)
{
Thread.Sleep(100);
}
}
client.DisconnectFromService();
}
// Update the UI after the background playback task has completed
this.isPlaying = false;
this.Dispatcher.BeginInvoke(new NoArgDelegate(UpdateState));
}
Run Code Online (Sandbox Code Playgroud)
我试图在playbackClip函数中添加GestureDetector.cs代码(来自DiscreteGestureBasics的脚本).我添加了一个带播放功能的按钮,因此当我按下按钮时,开始播放.xef文件.xef正常可视化,但探测器的置信度得分始终为零.在以下来自GestureDetector.cs scirpt的代码中,discreteResults始终为null.知道这里有什么不对吗?
VisualGestureBuilderFrameReference frameReference = e.FrameReference;
using (VisualGestureBuilderFrame frame =frameReference.AcquireFrame())
{// frame return always null
if (frame != null)
{
IReadOnlyDictionary<Gesture, ContinuousGestureResult> discreteResults …Run Code Online (Sandbox Code Playgroud) Swift 3.0没有调用方法CGAffineTransformScale.
func didPinchGesture(pinchRecognizer : UIPinchGestureRecognizer) {
if let view = pinchRecognizer.view {
view.transform = CGAffineTransformScale(view.transform,
recognizer.scale, recognizer.scale)
pinchRecognizer.scale = 1
}
}
Run Code Online (Sandbox Code Playgroud)
scaleBy不自动完成但添加到CGAffineTransform scaleBythrows错误,因为scale不再是CGAffineTransform的属性:
CGAffineTransform.scaledBy(view.transform, pinchRecognizer.scale, pinchRecognizer.scale).
使用Swift 3.0配置捏手势识别器的最佳方法是什么?
我正在建立一个音乐播放器,我专注于进度条.我能够对滑动手势做出反应,但我无法限制手势的移动距离.
这就是我到目前为止所做的.我把所有东西都减少到了minumal:
constructor(props) {
super(props);
this.state = {
pan: new Animated.ValueXY()
};
}
componentWillMount() {
this._panResponder = PanResponder.create({
onMoveShouldSetResponderCapture: () => true,
onMoveShouldSetPanResponderCapture: () => true,
onPanResponderGrant: (e, gestureState) => {
// Set the initial value to the current state
let x = (this.state.pan.x._value < 0) ? 0 : this.state.pan.x._value;
this.state.pan.setOffset({ x, y: 0 });
this.state.pan.setValue({ x: 0, y: 0 });
},
onPanResponderMove: Animated.event([
null, { dx: this.state.pan.x, dy: 0 },
]),
onPanResponderRelease: (e, { vx, vy }) => { …Run Code Online (Sandbox Code Playgroud)