首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android 可拖动悬浮窗实现

滑动方向进行拖动 public abstract class OnFlingListener { // 手指按下 public void onFingerDown() { }...,来判断当前手指滑动方向。...通过比较 x 轴的移动距离和 y 的移动距离,判断是上下滑动还是左右滑动,然后通过滑动的距离是否大于 0 判断滑动方向,因为当你的 indicatorView 右侧的时候,如果初始滑动距离大于 0...最后还需要判断最后一下手指滑动方向,如果和初始的方向相反,则需要将拖出来的悬浮窗自动回滚到初始状态。...通过如上代码可以发现,contentView 的 layout 属性变化都是通过动画来实现的,这边我采用属性动画,来不断改变滑动的距离来实现悬浮窗显示和隐藏的效果,也就是就是上面代码的 rightInSmoothToLeft

1.9K21

Android View 的手势事件处理

接下来,我们要自定义一个控件,然后重写 onTouchEvent 方法用于检测我们的手指移动的触摸信息并且传递给两个 TextView 控件。...,方法参数分别代表: * 触摸开始点的事件信息,触摸结束(手指松开)的时候储存的事件信息, * 整个滑动过程 x 方向滑动的平均速度,整个滑动过程 y 方向滑动的平均速度...,会调用这个方法,参数分别是: * 触摸开始点的事件信息,触摸结束(手指松开)的时候储存的事件信息, * 整个滑动过程 x 方向滑动的平均速度,整个滑动过程 y 方向滑动的平均速度...鼠标指针方开之后(手指松开),还调用了 onFling 方法,上文代码说过:onFling 方法只有滑动速率达到一定要求时候才会被调用。...View 之后开始滑动仍然可以调用 onScroll 和 onFling 方法来更新坐标和速度信息。

1.4K20

listview滑动删除

这是一个兼容库,接下来我们就来看看这个效果的具体实现吧 实现该效果的主要思路 先根据手指触摸的点来获取点击的是ListView的哪一个Item 当手指在屏幕上面滑动的时候,我们要使得Item跟随手指滑动滑动...     * 滑动速度检测类      */ private VelocityTracker mVelocityTracker;   /**      * 手指按下的position      ...Y方向滑动的距离小于mSlop,表示可以滑动 if (Math.abs(deltaX) > mSlop && Math.abs(deltaY) < mSlop) {               mSwiping...) > mViewWidth / 2) {               dismiss = true;               dismissRight = deltaX > 0;   //手指在屏幕滑动的速度某个范围内...接下来就是手指在屏幕上面滑动的处理方法handleActionMove(),这个方法就稍微的复杂些,我们需要根据手指在X轴的滑动距离和Y轴的滑动距离来判断是ListView item的水平滑动还是ListView

1.8K70

前端成神之路-WebAPIs07

我们可以使用 targetTouches[0] 里面的pageX 和 pageY 移动端拖动的原理: 手指移动,计算出手指移动的距离。...然后用盒子原来的位置 + 手指移动的距离 手指移动的距离: 手指滑动的位置 减去 手指刚开始触摸的位置 拖动元素三步曲: (1) 触摸元素 touchstart: 获取手指初始坐标,同时获得盒子原来的位置...该属性用于元素添加,移除及切换 CSS 类。...手指滑动轮播图 本质就是ul跟随手指移动,简单说就是移动端拖动元素 触摸元素touchstart: 获取手指初始坐标 移动手指touchmove: 计算手指滑动距离,并且移动盒子...离开手指touchend: 根据滑动的距离分不同的情况 如果移动距离小于某个像素 就回弹原来位置 如果移动距离大于某个像素就上一张下一张滑动

3.5K10

网红模型作者是调包侠?Reddit 小哥发布手势绘画模型,获超2300个赞

最近Reddit上一个小哥发帖,借助深度学习技术,随着手指的移动,可以屏幕上隔空绘制图形,可以实现了这样的一个效果。...手势检测(handpose detection)使用MediaPipe toolbox Hands 提供的功能。...输入是一个sequence,包括二维点的位置,模型中使用手指的速度和加速度而非位置来使预测平移不变,输出是二分类:向上(pencile up)或向下(pencil down)。...作者解释道:他工作主要是笔画和滑动的预测,每次用户抬起手指的时候就会预测他到底往哪个方向滑动,并且使用了一个RNN 根据手指滑动的速度来实现预测。...实现过程主要使用了颜色检测和手势跟踪技术。 作者回复道,追踪手指的OpenCV项目有很多,但他们都没有预测手指方向。 当然鼓励、赞赏的网友还是大多数,你觉得他是调包还是真的有点东西?

42310

10-移动端开发教程-移动端事件

在前端的移动Web开发,有一部分事件只移动端产生,如触摸相关的事件。接下来给大家简单总结一下移动端的事件。 1....因为双击缩放检测的存在,移动设备屏幕上点击操作的事件执行顺序: touchstart(瞬间触发) → touchend → click(200-300ms延迟) 如果你使用了触摸事件,可以调用 event.preventDefault...y方向的移动,并且x方向的移动大于25个像素,表示向左侧滑动 if (Math.abs(endX - startX) >= Math.abs(endY...swipe:手指在屏幕上滑动时会触发 swipeLeft:手指在屏幕上向左滑动时会触发 swipeRight:手指在屏幕上向右滑动时会触发 swipeUp:手指在屏幕上向上滑动时会触发 swipeDown...:手指在屏幕上向下滑动时会触发 ?

6.3K70

Flutter | 事件处理

,会触发多次 Update 事件,dalta 指一次 Update 事件滑动的偏移量 velocity:该属性代表用户抬起时的滑动速度(包含x,y两个轴的),上例没有处理抬起的速度,常见的效果是根据抬起手指的速度做一个减速动画...(-59.6, 244.0) 复制代码 单一方向拖动 很多场景,我们只需要沿着一个方向来拖动,如一个垂直方向的列表 GestureDetector 支持特定方向的手势事件,例如: Positioned...同时监听水平方向和垂直方向的拖动事件,那么斜着滑动时那个方向会生效?...,而竞争者发生在手指按下后首次移动时 上例获胜的条件是,首次移动时的位置水平和垂直方向上分量大的一个获胜 手势冲突 由于手势竞争最终只有一个胜出者,所以,当有多个手势识别器时,可能会产生冲突; 例如有一个...Widget,可以左右拖动,现在我们也想检测它上面手指按下和抬起的事件,如下: var _left2 = 100.0; Widget flictTest() { return Stack(

2.7K10

10-移动端开发教程-移动端事件

在前端的移动Web开发,有一部分事件只移动端产生,如触摸相关的事件。接下来给大家简单总结一下移动端的事件。 1....因为双击缩放检测的存在,移动设备屏幕上点击操作的事件执行顺序: touchstart(瞬间触发) → touchend → click(200-300ms延迟) 如果你使用了触摸事件,可以调用 event.preventDefault...触摸事件对象 TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少,等等。...y方向的移动,并且x方向的移动大于25个像素,表示向左侧滑动 if (Math.abs(endX - startX) >= Math.abs(endY...swipe:手指在屏幕上滑动时会触发 swipeLeft:手指在屏幕上向左滑动时会触发 swipeRight:手指在屏幕上向右滑动时会触发 swipeUp:手指在屏幕上向上滑动时会触发 swipeDown

6.7K80

【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 )

| ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定..., 只负责拦截手指按下 和 抬起 操作 , ItemTouchHelper 的业务逻辑 , 不需要处理移动事件 ; 2、处理按下事件 当检测到 MotionEvent.ACTION_DOWN 按下操作时...// 取消操作很少遇到 // 因此 , 拦截机制 , 只负责拦截手指按下 和 抬起 操作 // ItemTouchHelper 的业务逻辑 ,...恢复动画 ; 3、findAnimation 方法 findAnimation 方法 , 先调用了 findChildView 方法 , 查找手指按下的 View 子组件 , 该子组件是 RecyclerView..., 只负责拦截手指按下 和 抬起 操作 // ItemTouchHelper 的业务逻辑 , 不需要处理移动事件 if (action == MotionEvent.ACTION_DOWN

1.8K20

手势魅力-设置一个触摸菜单

(touchstart,touchmove,touchend),触摸属性,以及实现侧边栏动画,处理移动端点击,拖动,滑动时,是不得要考虑用户的触摸手势,判断手指在页面上到底是点击还是滑动的,利用原生js...触摸属性列出当前屏幕上的所有手指: PageX:返回手指放置DOM的x坐标。从左边开始计算,如果适用,则考虑水平滚动 PageY:返回手指放置DOM的y坐标。...这有什么好处呢 浏览器将尝试匹配显示刷新,以允许流畅的动画 非活动选项卡的动画将停止(CPU上花费的更少) 它不会耗尽你的电池寿命 拖动,点击和滑动:额外的东西要考虑移动触摸手势 这些事件需要能够检测和区分拖拽...DOM的实际位置,这时,需要考虑手指是水平滑动还是垂直,甚至有时候还得考虑手倾斜的滑动,还要区分是一根手指滑动,还是多根手指滑动,侧边菜单栏动画的实现,以及要注意阻止默认事件,重叠计算等等一些细节 看似简单的效果...:额外的东西要考虑移动触摸手势(手势方向,水平,垂直,还有手指根数) 你不知道你想知道的关于 - 是超级重要的部分 全局变量和设置默认值(一些初始化值变量的设置) 函数的函数(手指按下,移动,抬起功能函数的封装调用

1.8K40

手势互动-LeapMotion手掌与手的相关开发

Direction :一个向量,从手掌指向手指方向。 Finger 一个Finger手指对象表示了追踪的手指。一个手指包含四个骨头。...currentFrame = mProvider.CurrentFrame; } 1、手掌的开发指南 (一)判断是否是左手、右手 if (currentFrame.Hands.Count > 0) // 判断当前帧是否检测到有手的数量...并且所有的手会在一个List数组 { for (int i = 0; i < currentFrame.Hands.Count; i++) // 如果大于0,就要遍历,因为2-4个手是可以检测到的...currentFrame.Hands[i].PinchStrength); Debug.Log("握拳"); } 如果想精准的确认是哪个手握拳就要在上面判断左右手里面输入此代码 (三)判断手是否捏...{ Debug.Log("手滑动左边"); } 2、手指的开发指南 if (leftHandModel.IsTracked)

1K20

Art of Android Development Reading Notes 3

(5)VelocityTracker用于追踪手指滑动过程的速度,包括水平和垂直方向上的速度。...例如通过computeCurrentVelocity(1000)来获取速度,手指在1s滑动了100个像素,那么速度是100,即100(像素/1000ms)。...如果computeCurrentVelocity(100)来获取速度,100ms内手指只是滑动了10个像素,那么速度是10,即10(像素/100ms)。...的时候调用 mVelocityTracker.recycle(); //一般onDetachedFromWindow调用 (6)GestureDetector用于辅助检测用户的单击、滑动、长按、双击等行为...(1)常见的滑动冲突的场景: 1.外部滑动方向和内部滑动方向不一致,例如viewpager包含listview; 2.外部滑动方向和内部滑动方向一致,例如viewpager的单页存在可以滑动

42110

高级 UI 成长之路 (一) View的基础知识你必须知道

需要注意的是,这些坐标都是相对于 View 的父容器,因为它是一种相对坐标,View 的坐标和父容器的关系可以参考下图, Android ,x 轴 y 轴 的正方向分别为右和下,这点不难理解,不仅仅是...,比如将时间间隔设为 1000 ms 时,那么就是 1s 内手指在水平方向从左向右滑动 500 px 那么水平速度就是 500,注意速度可以为负数,当手指从右往左滑动时,水平方向速度即为负值,这个需要理解一下...** GestureDetector 的作用用于辅助检测用户的单机、滑动、长按、双击等行为。...下面我们就来具体分析下: **mScrollX:** 滑动过程,mScrollX 的值总是等于 View 左边缘和 View 内容左边缘水平方向的距离。...**mScrollY:** 滑动过程,mScrollY 的值总是等于 View 上边缘和 View 内容上边缘水平方向的距离。

71610

AndroidView位置和触摸事件详解

本文Demo都是自定义View中进行的,文末有下载链接 View的位置参数 MotionEvent屏幕触摸事件 GestureDetector手势检测(单击,双击,长摁,滑动) 二、View的位置参数...top 3、Android新增参数 x、y:View左上角坐标 translationX、translationY:相对于父容器的偏移量(有get/set方法),正数往右,负数往左 注意:View平移过程...// 换算关系 x = left + translationX y = top + translationY 从API21开始增加了z(垂直屏幕方向)和elevation(浮起来的高度,3D) 4、示例...,典型事件如下: ACTION_DOWN–手指刚触摸屏幕 ACTION_MOVE–手指在屏幕上移动 ACTION_UP–手指从屏幕上分开的一瞬间 2、MotionEvent获取点击事件发生的坐标 getX...实现方式:获取到当前手指按下的位置,移动时要减去上次手指滑动的位置,然后加上偏移量 存在问题:OnClick方法貌似没法用了哦,大概是因为onTouchEvent方法拦截了吧 改进:我觉得可以用

1.4K51

仿腾讯课堂固定滚动列表ReactNative组件

先卖个关子,解决这个问题之前,我们先来了解下Android的View事件是如何传递的。 正所谓知己知彼,百战不殆,看看Android触摸事件类型有哪些?...我们想下玩手机的时候手指的情况:落下手指,抬起手指,移动手指是三种基本的操作,其实也是3种触摸事件,分别代表着MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP,...手指滑动时会产生一系列触摸事件,这里有两种情况:说明下屏幕的左上角是坐标原点,沿着右边是x轴,左边则是y轴。...的话判断滑动的话还有X轴滑动速度值和Y轴滑动速度值)。...group.getChildAt(i); if (child instanceof ScrollView) { //获取view整个屏幕的坐标如果

4.8K70

第127天:移动端-获取触摸点的位置

一、移动端轮播图滑动 1、先获取手指在轮播图元素上的滑动方向(左右) (1)手指触摸开始时记录手指所在的坐标X (2)获取界面上的轮播图容器 var $carousels=$('.carousel')...; (3)注册滑动事件 (4)变量重复赋值 (5)结束触摸的一瞬间记录最后手指所在坐标X (6)比较开始和结束的坐标大小 (7)控制精度 获取每次手指滑动的距离,当距离大于一定值时,就认为有方向变化...next':'prev'); javascript代码 1 //移动端轮播图滑动 2 3 //1、先获取手指在轮播图元素上的滑动方向(左右) 4 //手指触摸开始时记录手指所在的坐标...clientX:触摸目标视口中的x坐标。 clientY:触摸目标视口中的y坐标。 identifier:标识触摸的唯一ID。 pageX:触摸目标页面的x坐标。...pageY:触摸目标页面的y坐标。 screenX:触摸目标屏幕的x坐标。 screenY:触摸目标屏幕的y坐标。 target:触目的DOM节点目标。

1.4K20

手势互动-LeapMotion手掌与手的相关开发设置

Direction :一个向量,从手掌指向手指方向。 Finge 一个Finger手指对象表示了追踪的手指。一个手指包含四个骨头。...currentFrame = mProvider.CurrentFrame; } 2.手掌的开发指南 (一)判断是否是左手、右手 if (currentFrame.Hands.Count > 0) // 判断当前帧是否检测到有手的数量...并且所有的手会在一个List数组 { for (int i = 0; i < currentFrame.Hands.Count; i++) // 如果大于0,就要遍历,因为2-4个手是可以检测到的...currentFrame.Hands[i].PinchStrength); Debug.Log("握拳"); } 如果想精准的确认是哪个手握拳就要在上面判断左右手里面输入此代码 (三)判断手是否捏...{ Debug.Log("手滑动左边"); } 3.手指的开发指南 if (leftHandModel.IsTracked

2.2K01
领券