- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有谁知道如何结合使用 onLongPress(MotionEvent e)
和 onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
?想法是从 onLongPress 开始,但继续滑动某些 View 。
我目前的代码:
private class CustomListener implements View.OnTouchListener {
ImagePreviewer imagePreviewer = new ImagePreviewer();
private GestureDetector gestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() {
ImageView currentImageView;
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
float x = e2.getX();
float y = e2.getY() + mConstraintLayoutContainerCoordinates[1];
currentImageView = getProperImage(mCurrentImagesNumberForPoll, (int) x, (int) y);
if(currentImageView != null) {
imagePreviewer.show(getActivity(), currentImageView);
}
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "LONG PRESS");
float x = e.getX();
float y = e.getY() + mConstraintLayoutContainerCoordinates[1];
currentImageView = getProperImage(mCurrentImagesNumberForPoll, (int) x, (int) y);
if(currentImageView != null) {
imagePreviewer.show(getActivity(), currentImageView);
}
super.onLongPress(e);
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
Log.d("TAG", "DOWN or CANCEL ");
imagePreviewer.hide();
}
gestureDetector.onTouchEvent(event);
return true;
}
}
事情是 onScroll()
被调用(当我在 View 上滑动手指时)或 onLongPress()
,但我想从 onLongPress 开始()
,然后检测滑动,这样我就可以选择适当的 View 来相应地显示。
最佳答案
GestureDetectorCompat
在检测到 onLongPress
后阻止调用 onScroll
。可以通过向检测器发送 ACTION_CANCEL
来取消阻止。
@Override
public void onLongPress(MotionEvent e) {
isLongPressed = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (detector.onTouchEvent(event)) {
return true;
}
switch (event.getActionMasked()) {
case MotionEvent.ACTION_MOVE:
if (isLongPressed) {
isLongPressed = false;
MotionEvent cancel = MotionEvent.obtain(event);
cancel.setAction(MotionEvent.ACTION_CANCEL);
detector.onTouchEvent(cancel);
}
break;
}
return super.onTouchEvent(event);
}
关于android - onLongPress 后继续 onScroll 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51704307/
使用scrolltop,我使用if条件将滚动分为5部分。在第二部分中,我给出了scrolltop值从600到700px的视频。如果我再次滚动,视频会在该位置播放多次。但我希望视频必须如果我在该值内任意
我想做的就是在页面加载时触发一个函数。 似乎我的代码中有一个错误,但我无法弄清楚...我想我还是菜鸟... Hi, function myFunction () { docume
所以我有一个元素,我希望能够使用鼠标上的滚轮放大和缩小。我认为解决这个问题的一个好方法是这样的: JavaScript: var container = document.getElementById
我想在用户滚动网页时加载更多内容。我尝试使用 onScroll 事件 javascript 被多次调用 jQuery .scroll() 方法也被多次调用。 我该如何处理这个问题?是浏览器问题吗? 注
这是简化的 html: function handle() { console.log("fired"); };
我一直在研究 horizontal website本周并从这里的社区收到了很多建议和有用的代码(谢谢!)。 我的 JS 技能非常不稳定,但我正在更好地掌握它,我的 CodePen展示了我刚才所拥有的,
我使用此代码在滚动时获取页面中元素的偏移量,但滚动函数仅执行一次并提醒 viewportWidth,然后它停止在“off”变量处 这是原始脚本中的一个简单示例,它不仅仅是将 #menuIcon 设置为
// Schließen Button Hauptnavigation $('button#collapse-button').click(function () { $('n
我知道我只能调用一次window.onscroll = function(){},因为多次调用它可能会导致它们相互覆盖。这就是为什么我问:是否可以将函数调用“推送”到 window.onscroll?
实际上我见过一个网站,在滚动时自动加载新页面并将其附加到旧页面。 不仅是页面,URL 也会在滚动时发生变化。 我完全不知道如何实现这个。这是我看过的网站 matt 。这里只要向下滚动,就会有一个无限滚
我试图在屏幕上显示相应内容期间使菜单项显示为粗体,然后在该内容滚动过去后恢复正常。 我已经尝试了很多方法来做到这一点,但它似乎并没有奏效。我可以在适当的时候让它变粗,但是当我尝试添加属性让它恢复正常时
我有一个脚本,它在文档正文上运行 onmousemove 和 onscroll 的 addEventListener 以获取光标位置。 onmousemove 事件工作正常(客户端+滚动),但是当发生
是否可以检测用户何时在 facebook Canvas 应用程序上滚动(在 iframe 中)。因此,当用户在页面上向下滚动时,我可以执行操作。 最佳答案 您可以使用 jQuery API 并尝试他们
我有一个在滚动时收缩的横幅和它下面的一些内容,我怎样才能让内容在移动前在横幅上停留几秒钟?我尝试使用 jQuery 插件 stickem,但它似乎不起作用。 JS: $(document).scrol
我有一个 JavaScript 函数,它在窗口滚动到特定点时执行不同的条件语句。 (当窗口滚动到新的部分/行时或多或少地改变了我的导航链接的样式) // variables used var pLin
hi on scroll active class 未添加到li on click on a 工作正常请看一次。 $('nav a').on('click', function() {
我是 javascript 的新手,我试图在滚动 div id="container"时触发 div id="foo",以便在滚动 id“container”时说“IM AWESOME” .我什至给了
当用户滚动超过 25 像素时,我试图将 class 添加到 id。我不确定为什么,但我放学后该功能没有启动。任何关于为什么的帮助将不胜感激。这是我的代码: window.onscoll = funct
我需要显示水平 ListView 项目的无限滚动(意味着需要重复项目)例如 a,b,c,d,e,f,a,b,c,d,e,f,a,b,.... 粗体是屏幕上可见的项目 过程是在到达最后一个列表项后重复列
我想在发生滚动事件时实现onScroll。但是我不明白如何使用我通过 onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float d
我是一名优秀的程序员,十分优秀!