标签: gesturedetector

SimpleOnGestureListener永远不会进入onFling(...)方法

你好SimpleOnGestureListener不能在我的应用程序中工作这就是我实现它的方式.也许你可以发现什么是错的.事情是调试显示应用程序永远不会进入onFling(...)方法和gdt.onTouchEvent(事件); 总是返回false:/任何想法?谢谢

我的活动课

 public class SimpleActivity extends Activity{


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simpleLayout);

    final ImageView imageView = (ImageView) findViewById(R.id.gggbbb);
     imageView.setOnTouchListener(new OnFlingGestureListener() {

        @Override
        public void onTopToBottom() {
           System.out.println("top");
        }

        @Override
        public void onRightToLeft() {
            System.out.println("right");
        }

        @Override
        public void onLeftToRight() {
            System.out.println("left");
        }

        @Override
        public void onBottomToTop() {
            System.out.println("bottom");
        }
     });



}


    }
Run Code Online (Sandbox Code Playgroud)

我的抽象听众

 package com.dmd.client.detailsMenus;

 import android.view.GestureDetector;
 import android.view.GestureDetector.SimpleOnGestureListener;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnTouchListener;

 public abstract class OnFlingGestureListener implements OnTouchListener {

  private final GestureDetector gdt …
Run Code Online (Sandbox Code Playgroud)

android gesturedetector android-activity

7
推荐指数
1
解决办法
5446
查看次数

如何将GestureDetector附加到ListPreference?

一个附接的挑战GestureDetectorListPreference是2倍:

  1. 获取仅在preferences.xml中定义的ListPreference句柄(即未在Java代码中实例化).
  2. ListPreference既不是View子类也不是Activity子类.

是否可以将GestureDetector附加到ListPreference

如果是这样,怎么会这样呢?我在哪里编写代码来实例化GestureDetector并实现监听器?

android listpreference gesturedetector

7
推荐指数
1
解决办法
463
查看次数

OnGestureListener#onScroll未在Samsung Galaxy Note 10.1上从GestureDetector调用

在带有Android 4.0.4的三星Galaxy Note 10.1上,当两根手指放在屏幕上时GestureDetector它不会触发OnGestureListener#onScroll(它只用于一根手指).这适用于其他设备.在我的应用程序中,我想只在涉及至少两个手指时启用滚动.

这是重现现象的视图实现:

public class MyView extends View {

    GestureDetector scrollGestureDetector;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);

        scrollGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onScroll(final MotionEvent e1, final MotionEvent e2, final float distanceX, final float distanceY) {
                System.out.println("SCROLL " + distanceX + ", " + distanceY);
                return true;
            }
        });
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        scrollGestureDetector.onTouchEvent(event);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

这种行为是已知/记录/想要的吗?有没有已知的解决方法?

android scroll gesturedetector

7
推荐指数
1
解决办法
3527
查看次数

SimpleOnGestureListener代码在Android 2.2中无效

我编写了一些代码来实现Gallery小部件的垂直滑动.它在Android 1.5和1.6中运行良好但在Android 2.2中不起作用(我还没有尝试使用2.1).

public class SwipeUpDetector extends SimpleOnGestureListener
implements OnTouchListener
{
       private GestureDetector m_detector;

       public SwipeUpDetector()
       {
               m_detector = new GestureDetector(m_context, this);
       }

       @Override
       public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
       {
               if (Math.abs(e1.getX() - e2.getX()) < s_swipeMaxOffPath &&
                       e1.getY() - e2.getY() >= s_swipeMinDistance &&
                       Math.abs(velocityY) >= s_swipeMinVelocity)
               {
                       int pos = m_gallery.pointToPosition((int)e1.getX(), (int)e2.getY());
                       startAnimation(pos);

                       return true;
               }

               return false;
       }

       @Override
       public boolean onTouch(View v, MotionEvent event)
       {
               return m_detector == null ? false : m_detector.onTouchEvent(event); …
Run Code Online (Sandbox Code Playgroud)

android swipe onfling gesturedetector

6
推荐指数
1
解决办法
5344
查看次数

Android - 将GestureDetector添加到webview

我想将GestureDetector类添加到我的webview中,以便我可以管理常见的手势,例如doubletap.

这是我试图完成的事情:

  • SingleTap将正常运行
  • DoubleTap将打开商品(下面有更多内容)

关于DoubleTap - 有问题的网站有源代码,用于定义如何处理某些项目的单击和双击.它声明单击一次选择一个项目,双击打开该项目.我必须对这些项目含糊不清,因为它不是公共网站.

我不需要配置flings或swipes.我只想重新创建PC鼠标单击和双击.

编辑: 我在Pat的下面的建议中添加了.我根据自己的喜好改变了一些东西,并从其他来源添加了一些东西.

我使用这个问题来帮助构建我的活动以及Pat的帮助.使用"First Way"代码,它正确加载我的应用程序并成功重新加载页面.现在,我只需要添加其他事件处理程序并正确配置它们.当我开始工作时会发布最终代码,我会将Pat的答案标记为正确.

该用户提出相同的问题,没有回答: 如何使双击工作.

它说这是折旧的GestureDetector(新的MyGestureDetector()); - 我应该解决这个问题吗?

编辑2:由于问的实际问题是如何将webdetecor添加到webview,我能够做到这一点,我会将Pat的答案标记为正确.即使我确实想要doubleTap =双击,我也没有在我的标题中问这个,所以我会为此创建一个新问题.

import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.SslErrorHandler;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;

public class MainActivity extends Activity{
    WebView webview;    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = (WebView) findViewById(R.id.webview);   
        //Do we want/need to enable Java?
        webview.getSettings().setJavaScriptEnabled(true); 
        //Here we allow for zoom controls - …
Run Code Online (Sandbox Code Playgroud)

android double-click webview gesturedetector

6
推荐指数
1
解决办法
5074
查看次数

SimpleOnGestureListener的onSingleTapUp从未调用过

我使用onTouchListener和手势检测器创建了一个自定义组件,我将自定义组件放在MainActivity的xml文件中,该文件同时包含onTouchEvent和手势检测器.我想检测自定义组件上的单个点击并长按MainActivity,但似乎触摸侦听器在某种程度上相互作用并且从未检测到单个点击.

MainActivity.java:

public class MainActivity extends ActionBarActivity {
private GestureDetector detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    detector = new GestureDetector(this, new LongPressDetector());
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    detector.onTouchEvent(event);
    int action = event.getActionMasked();
    switch (action){
        case MotionEvent.ACTION_DOWN:{
            Log.d("TouchEvent", "Action_Down at MainActivity.java");
            break;
        }
    }
    return super.onTouchEvent(event);
}

private class LongPressDetector extends GestureDetector.SimpleOnGestureListener{
    @Override
    public boolean onDown(MotionEvent e) {
        Log.d("TouchEvent", "onDown at MainActivity.java");
        return super.onDown(e);
    }

    @Override
    public void onLongPress(MotionEvent e) {
        Log.d("TouchEvent", "onLongPress at MainActivity.java");
        super.onLongPress(e); …
Run Code Online (Sandbox Code Playgroud)

android gesturedetector

6
推荐指数
1
解决办法
3285
查看次数

有没有更好的方法来检查#flutter中的左/右拖动?

有没有更好的方法来检查#flutter中的左/右拖动.我已经完成了它,但是有时它不工作.

  new GestureDetector(
  onHorizontalDragEnd: (DragEndDetails details) {
      print("Drag Left - AddValue");

    setState((){
      _value++;
    });
    if (details.velocity.pixelsPerSecond.dx > -1000.0) {
      print("Drag Right - SubValue");

      setState((){
        _value--;
      });
    }
  },
  child: new Container(
    child:new Text("$_value"),
  ),
);
Run Code Online (Sandbox Code Playgroud)

gesturedetector flutter

6
推荐指数
3
解决办法
5038
查看次数

Flutter InkWell 小部件未通过容器的渐变和颜色显示

编辑:我尝试将 包装ContainerMaterial小部件中并将颜色属性移动到Material小部件,但我将一堆ResourceCards水平放置ListView,,因此小部件中的颜色Material似乎只填充ResourceCard.

ResourceCard在 Flutter 中创建了自己的小部件。我用 a 包裹它来GestureDetector检测点击,但我想显示某种反馈或效果来通知用户它被点击了。GestureDetector我决定用小部件替换InkWell,但我没有通过容器的线性渐变和颜色看到飞溅效果,所以我只是将其恢复为GestureDetector. 我看过其他具有潜在解决方法的帖子,但它们都不能使用线性渐变和颜色。其中一个ResourceCard小部件如下所示: https: //i.stack.imgur.com/N2txv.jpg。这是小部件的代码:

class ResourceCard extends StatelessWidget {
  ResourceCard({
    @required this.colour,
    @required this.margin,
    @required this.cardText,
    this.onPress,
    @required this.cardCaption,
    @required this.paddingText,
  });

  final Color colour;
  final String cardText;
  final Function onPress;
  final EdgeInsets margin;
  final String cardCaption;
  final EdgeInsets paddingText;

  @override
  Widget build(BuildContext context) {
    return GestureDetector( …
Run Code Online (Sandbox Code Playgroud)

containers widget gesturedetector dart flutter

6
推荐指数
1
解决办法
4694
查看次数

如何用另一个 GestureDetector 包装 GestureDetector 并在各处获取事件

如果我有一个GestureDetector具有内部的探测器,GestureDetector我该如何设置它以便两个探测器都能接收到点击事件?

您可以在此处查看运行代码: https://dartpad.dev/37807a51a48e52eda81c24cf67260c33

GestureDetector(
      onTap: () => print("Log 1"),
      child: GestureDetector(
        onTap: () => print("Log 2"),
        child: Text("CLICK ME")
      )
);
Run Code Online (Sandbox Code Playgroud)
  • 每次我单击它打印的文本Log 2

  • 我已经尝试过设置HitTestBehavior.traslucent和所有这些,但没有成功。

  • 我想要它打印Log 1Log 2

gesturedetector flutter

6
推荐指数
1
解决办法
2434
查看次数

如何以不劫持所有手势输入的方式使用 Flutter 的 InteractiveViewer?

我正在创建某种图像编辑器(有点像 Canva)。对于放大、缩小和平移,我使用InteractiveViewer. 但问题是,一旦我开始使用InteractiveViewer,我注意到画布内元素的其他手势(例如,点击并拖动元素应该拖动元素)不起作用。点击和拖动现在变成了平移整个画布。

即使我关闭平移和缩放,情况仍然如此(panEnabled: false, scaleEnabled: false)。值得庆幸的是,单击仍然有效,因为 InteractiveViewer 不使用它,但当用户进行不适合InteractiveViewer. 例如,如果用户点击某个元素使其被选中,则所有手势输入都应转到被点击的元素而不是InteractiveViewer

我曾经想过一个解决方案,就是InteractiveViewer在选择一个元素时不使用,但这会导致用户立即失去之前设置的缩放和平移。我需要解决方案,以便 InteractiveViewer 可以保留缩放和平移设置,同时让所有手势输入传递到内部元素。我怎样才能做到这一点?

interactive gesturedetector flutter

6
推荐指数
0
解决办法
898
查看次数