android - 在触摸时移动 View 并在点击时使用react?

标签 android ontouchlistener touch-event

我创建了一个可以四处拖动的 View 。这是我的来源:

imageView.setOnTouchListener(new View.OnTouchListener() {

        private int initialX;
        private int initialY;
        private float initialTouchX;
        private float initialTouchY;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    initialX = params.x;
                    initialY = params.y;
                    initialTouchX = event.getRawX();
                    initialTouchY = event.getRawY();
                    return true;
                case MotionEvent.ACTION_UP:
                    return true;
                case MotionEvent.ACTION_MOVE:
                    params.x = initialX + (int)(event.getRawX()-initialTouchX);
                    params.y = initialY + (int)(event.getRawY()-initialTouchY);
                    windowManager.updateViewLayout(imageView, params);
                    return true;
            }
            return false;
        }
    });

如您所见,通过触摸 ImageView 并四处平移, View 本身会移动。现在我的问题是,我想区分移动 View 和实际单击 View 。我在 stackoverflow 上尝试了此处显示的多种方法,但找不到任何解决我问题的方法。

如果 ImageView 被点击,它应该调用一个方法。否则,如果只是触摸移动 View ,则不应调用该方法。

有人有什么建议吗?

提前致谢

最佳答案

当您的 ACTION_UP 事件发生时,您希望返回 false,否则 OnClickListener 不会被调用,因为您告诉系统你已经处理了那个触摸事件。

您可能还想在您的第一个 ACTION_DOWN 事件中获取并保存 System.currentTimeMillis(),然后,只有在 ACTION_UP 事件发生在表示点击的阈值时间之前。

关于android - 在触摸时移动 View 并在点击时使用react?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328390/

相关文章:

android - 不需要的 FrameLayout 拉伸(stretch)以包裹所有 child 的高度(而不是只考虑一个 child 的高度)

android - 使用 onInterceptTouchEvent() 时检测触摸事件

ios - UIView 应该捕获点击事件但传递移动事件

android - 如何获得圆圈Imageview的中心

android - Kotlin Android 扩展访问 TextView

android - 在 Android NDK 中捕获 C++ 信号并仍然打印故障转储

java - 如何在Android(JAVA版)中使用Cocos2D实现Sprite Animation?

android - 使用 GestureDetectorCompat 在特定 View 上注册 TouchListener

android - 在 Android Touch 事件中看不到点击涟漪效应

java - Android 监听触摸释放