标签: touch-event

使用 touchstart 和/或单击(鼠标按下)Angular 6

问题:

我有一个问题,在整个应用程序中使用单击事件。该应用程序将在移动设备和网络上使用。我正在使用 Angular 6。

每次您在桌面上的浏览器上单击按钮或链接时,第一次单击都会起作用,但在移动设备上,有时单击不起作用。如果我错了,请纠正我,但我相信人们将其称为幽灵点击。

我认为这是 300 毫秒的延迟,但我尝试使用 Hammerjs 的 Tap 并尝试使用 FastClick,似乎这不是问题。

我尝试在 html 中使用 touchstart 而不是 click/tap ,它似乎解决了这个问题。

有没有办法将 mousedown 和 touchstart 相互绑定?有没有办法在桌面上使用“单击/鼠标按下”而在移动设备上使用“触摸启动”?
我还可以采取哪些其他方法来解决这个问题?

javascript mouseevent touch-event dom-events angular

6
推荐指数
2
解决办法
2万
查看次数

touchcancel 和 touchend 事件有什么区别?

阅读此event_touchcancel文档后:

当触摸事件被中断时,将发生 touchcancel 事件。

不同的设备会在不同的操作中中断触摸事件,如果发生此“错误”,最好包含此事件以清理代码。

w3c event-touchcancel。我还是很困惑。

“当触摸事件被中断时”是什么意思?有没有什么特殊情况会中断触摸事件?touchcancel事件什么时候会被触发?

html dom touch-event

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

如何跟踪Android应用程序中的每一次合理点击?

每次用户点击我的应用程序中的任何可点击视图时,我都需要跟踪一个事件。我一般都想这样做,例如在我的主要活动中。
我知道我可以覆盖onUserInteraction()或者dispatchTouchEvent()但是即使对于不可点击的视图的点击,这些也正在运行。

我不需要在可点击视图之间进行区分,只要它是可点击的就足够了。
在理想情况下,我还会将向上按钮与其他点击区分开来。

这可能吗?

android touch-event android-activity

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

Android:如何在Imageview的touchListener事件中向上滑动和向下滑动?

我有应用程序,我需要onTouch滑动向上和向下事件.我已经在应用程序中实现了onTouch事件,但我没有任何关于Swipe Up和Swipe Down的想法是否有人有一个代码,我该怎么做?

final ImageView imageView = listOfImageView.get(i);
            imageView.setOnTouchListener(new OnTouchListener () {
                private float oldPosition;
                public boolean onTouch(View view, MotionEvent event) {
                    if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
                        this.oldPosition = event.getY();

                    }
                 }
            });
Run Code Online (Sandbox Code Playgroud)

android swipe touch-event

5
推荐指数
0
解决办法
2830
查看次数

检查是否在onTouchEvent中的rectF内部按下

我一直在使用扩展视图处理一个非常简单的小应用程序.问题是我找不到我的onTouchEvent中的内容.我已经明白我要将压力点(x和y)与元素进行比较,看看它可能是哪一个.

但是......我已经宣布了一个矩形:

Paint color= new Paint();
color.setColor(Color.BLACK);
rectF = new RectF(0.0f, 0.0f, 1.0f, 0.5f) ;
canvas.drawRect(rectF, color);
Run Code Online (Sandbox Code Playgroud)

到目前为止这么好,但在onTouchEvent函数中

public boolean onTouchEvent(MotionEvent event) {
    int action = event.getAction() ;
    float x = event.getX() ;
    float y = event.getY() ;

    switch(action) {
    case MotionEvent.ACTION_DOWN:

        if(rectF().contains(x, y)) {
            // Something should happen
        }

    }

    invalidate();
    return true ;
}
Run Code Online (Sandbox Code Playgroud)

我将rectF设置为0-1范围内的某种相对点,但是根据屏幕大小,X和Y从事件范围从0开始向上.

我可以轻松转换其中任何一个值吗?

编辑

以为有人对最终解决方案感兴趣......

public boolean onTouchEvent(MotionEvent event) {
    int action = event.getAction() ;
    float x = event.getX() ;
    float y = event.getY() ; …
Run Code Online (Sandbox Code Playgroud)

android canvas touch-event

5
推荐指数
1
解决办法
2178
查看次数

Android SurfaceView触摸延迟的解决方法

我已经完成了一个功能性Android游戏的编程,但我不知道在哪里修复触摸延迟:无论何时触摸屏幕,帧速率都会降低一半.我的代码基本上是带有onTouchEvent的LunarLander的复制和粘贴.

谷歌搜索向我展示了他们说工作但不做的基本解决方法(睡在onTouchEvent,onDispatchEvent,onInterceptTouchEvent,同步等),看起来在触摸事件期间没有使用SurfaceView是不可能的.

我该怎么办?我应该放弃SurfaceView,禁用onTouchEvent并使用clickListener,以某种方式阻止快速触摸调用?拜托,告诉我有什么不对!

我试过了:

  • 使onTouchEvent()不运行代码并返回false
  • 睡觉onTouchEvent()或run()16/32/1000毫秒,没有区别
  • 覆盖onDispatchevent()而不是onTouchEvent()
  • 在onTouchEvent()中尝试synchronized()

这是我的代码:

public class Surface extends SurfaceView implements SurfaceHolder.Callback {

    public CanvasThread canvasThread;
    private SurfaceHolder surfaceHolder;    

    public Surface(Context context) {
        super(context);
        surfaceHolder = getHolder();
        surfaceHolder.addCallback(this);
        setFocusable(true);
    }

    @Override
        public boolean onTouchEvent(MotionEvent event) {
            return canvasThread.touch(event);
        }

        class CanvasThread extends Thread {

    @Override
            public void run() {
                synchronized (this) {
                    // game logic
                }   
            }

            public boolean touch(MotionEvent event) {
                // touch logic
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

android surfaceview touch-event

5
推荐指数
0
解决办法
538
查看次数

如何在ListPreference上设置OnTouchListener()?

在视图上处理onTouchEvent非常简单,因为每个视图都有setOnTouchListener()方法来执行此操作.

唉,虽然ListPreference是一个视图,但它没有在布局XML中定义,因此无法通过findViewById()访问.所以...我似乎没有弄清楚如何为它设置setOnTouchListener().

我的想法是在PreferenceActivity的onCreate()中获得对它的引用,然后是getDialog().getCurrentFocus()但是在那个特定的时刻,它没有焦点,甚至没有对话框(getDialog()返回null,已确认).

知道如何解决这个问题吗?

android preferenceactivity ontouchlistener listpreference touch-event

5
推荐指数
1
解决办法
309
查看次数

使用Horizo​​ntalScrollView将DrawerLayout导入内容菜单

我的问题很简单.我可以在DrawerLayout的内容菜单中使用Horizo​​ntalScrollView吗?我的DrawerLayout看起来像这样:

<android.support.v4.widget.DrawerLayout
    android:id="@+id/pnlMenu"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- Main content view -->

    <ListView
        android:id="@+id/lst"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true"
        android:fastScrollEnabled="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        tools:listitem="@layout/item_layout" >
    </ListView>

    <!-- Content of menu -->

    <FrameLayout
        android:id="@+id/drawerFrame"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:clickable="true"
        android:background="@color/black" >

        <fragment
            android:id="@+id/frag"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.test.TestFragment" />
    </FrameLayout>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

在片段内部我有Horizo​​ntalScrollView但是当我尝试触摸它时没有任何事情发生,因为抽屉布局跟随我的手指.我认为禁用内容菜单中的触摸事件并仅在单击主内容视图时使DrawerLayout可关闭将解决我的问题.真的吗?如果没有,有人可以告诉我,我该怎么办?

谢谢.

android touch-event drawerlayout

5
推荐指数
1
解决办法
1344
查看次数

如何在父视图中处理子视图的触摸事件

我正在制作一个自定义日历视图,它扩展了LinearLayout并为每个日期提供了子视图.我想要做的是处理滑动和点击,你可以想象,滑动用于更改月份,点击用于选择日期和显示新活动.为此,我在CalendarView上使用GestureDetector,可以使其适用于滑动.但是为了处理点击事件,我不知道如何找到发生了点击的子视图.

  1. 有没有人有任何想法解决这个问题?
  2. OnScroll(MotionEvent)上返回true和false之间的区别是什么?

以下是我的代码的一部分.

public class MonthView extends LinearLayout implements GestureDetector.OnGestureListener {

    public MonthView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        gestureDetector = new GestureDetector(this);
        initDateViews();
    }

    //other codes here
    ....

    private void initDateViews() {
        for(int i = 0; i < 42; i++) {
            DateView view = new DateView();
            //init date views and add to calendar view.
            ....
            calendar.Add(view);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Logger.debug(TAG, ">>> MonthView.onTouchEvent()");

        return gestureDetector.onTouchEvent(event);
    }

    @Override
    public boolean OnSingleTapUp(MotionEvent event) …
Run Code Online (Sandbox Code Playgroud)

android click swipe touch-event gesturedetector

5
推荐指数
1
解决办法
4203
查看次数

如何检测Pixelbook Pen按钮?

我遵循此处的文档以在绘制时捕捉Pixelbook笔上按下的按钮,但是永远不会引发TOOL_TYPE_ERASER事件。当我尝试打印日志时,按住和释放按钮之间没有任何区别:

onTouchEvent:MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=2010.4766, y[0]=778.10156, toolType[0]=TOOL_TYPE_STYLUS, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1395185, downTime=1395185, deviceId=1, source=0x1002 }
2018-09-29 16:15:35.527 2926-2926/com.  onTouchEvent:MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=2009.2734, y[0]=777.6406, toolType[0]=TOOL_TYPE_STYLUS, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=4, eventTime=1395195, downTime=1395185, deviceId=1, source=0x1002 }
2018-09-29 16:15:35.552 2926-2926/com.  onTouchEvent:MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=2008.0703, y[0]=776.71484, toolType[0]=TOOL_TYPE_STYLUS, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=9, eventTime=1395221, downTime=1395185, deviceId=1, source=0x1002 }
2018-09-29 16:15:35.569 2926-2926/com.  onTouchEvent:MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=2007.8867, y[0]=776.25, toolType[0]=TOOL_TYPE_STYLUS, buttonState=0, metaState=0, flags=0x0, …
Run Code Online (Sandbox Code Playgroud)

android google-chrome-os touch-event stylus-pen

5
推荐指数
1
解决办法
85
查看次数