javascript - 滑动检测和点击检测

标签 javascript java android

我目前正在 Android 上构建应用程序。现在请记住,我是一个业余爱好者,但我已经能够弄清楚我需要为我的非常简单的应用程序弄清楚的大部分内容。但是这个问题一直困扰着我,我找不到解决办法。

对于背景,我一直使用左右滑动来“滚动”不同的文本选项。但是,我想在每次单击时更改一个完全不同的文本字段。

例如,当我滑动时,textview1 会发生变化,而每次单击时,textview2 都会发生变化。但它们在同一页上。

我的代码适用于滑动,但当我点击时,它执行的功能与我向右滑动时的功能相同。

这是我正在使用的代码,如果对我做错的事情有任何帮助,我们将不胜感激:

final float len = getResources().getDisplayMetrics().densityDpi/6;

linear1.setOnTouchListener(new View.OnTouchListener() {
                float initX;
                float initY;
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch(event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            initX = event.getX();
                            initY = event.getY();
                            break;
                        case MotionEvent.ACTION_UP:
                            initX -= event.getX();
                            initY -= event.getY();
                            if (initY > len) {

//Logic For Swipe Right


                            } else if(initY < -len) {

               //Logic For Swipe Left   

                            } else {
                                if(initY < 0) initY = -initY;
                                if(initX < 0) initX = -initX;
                                if(initX <= len/4 && initY <= len/4) {

 //Logic For OnClick   

                                }
                            }
                            break;
                    }
                    return true;
                }
});

另一个小问题是它也在检测向上和向下滑动。向下滑动执行右侧滑动应该执行的操作,向上滑动执行左侧滑动应该执行的操作。我只想要左右滑动检测,根本不需要上下滑动。

先谢谢大家了!希望你能帮助这个菜鸟!

最佳答案

在您的 onTouch() 方法中,您可以检查事件的来源是否正在触摸您的 textview2 TextView。在这种情况下,忽略该事件并让您的 textview2 的 onClick() 方法处理它:

linear1.setOnTouchListener(new View.OnTouchListener() {
                float initX;
                float initY;
                @Override
                public boolean onTouch(View v, MotionEvent event) {

                    if (v == textview2) {
                        return;
                    }

                    switch(event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            initX = event.getX();
                            initY = event.getY();
                            break;
                        case MotionEvent.ACTION_UP:
                            initX -= event.getX();
                            initY -= event.getY();
                            if (initY > len) {
                                //Logic For Swipe Right
                            } else if(initY < -len) {
                                //Logic For Swipe Left   
                            }
                            break;
                     }
                     return true;
                }
});

关于javascript - 滑动检测和点击检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54889579/

相关文章:

While 循环中的 Javascript If 与 Python if 语句

java - 从之前的方法继承数据类型的方法?

java - 通过 Windows 7 控制台打开 SBT 时出现问题

java - 使用 JDBC 连接将记录插入到 Apache Ignite Cluster 时出现异常

android - 如何在 Android Studio 中修复 'Duplicate classes'

android - Android TabHost 上的徽章

java - 传递 Android DialogFragment 参数时,onCreateDialog bundle agument 意外为空

javascript - 如何将参数传递给回调函数而不执行它

javascript - Backbone.js:如何仅处理单个 View 的选择?

javascript - 当行增加时自动增加序列号,并在jquery中删除行时自动重新调整编号顺序