展开

关键词

Android Scroll分析

概述 相对于Android2.x版本中常见的长按、点击操作,的方式具有更友好的用户体验性。因此从4.x的版本开始,操作大量出现在Android系统中。 所以要实现View的,必须要监听用户的事件,并根据事件传入的坐标,态且不断的改变View的坐标,从而实现View跟随用户。 在此之前,我们需要先了解下Android中的窗口坐标体系和屏幕的控事件MotionEvent。 ---- Android坐标系 所谓,正是相对于参考系的运。 1 ; // 点移作 public static final int ACTION_MOVE = 2 ; // 作取消 public static final int ACTION_CANCEL 不管使用何种方法,其实现的基本思路是一致的:当View时,系统记下当前点坐标,当手指移时,系统记下移后的点坐标,从而获取到相对于前一次坐标点的偏移量,并通过偏移量来修改View的坐标,

11520

Android控件实现图片缩放功能

对于android控件的缩放移,点这里—-android控件的缩放,移 2 使用步骤 布局layout <?xml version="1.0" encoding="utf-8"? ,需要判断用户是单指还是双指,分别在OnTounch的监听事件中判断。 注:先重写onLongClick()方法,不然会影响OnTouch里面的监听。 : // 手指 if (mode == DRAG) { // 是一个手指拖 Log.d(TAG, "mode = DRAG" ); } else if (mode == ZOOM) { : // 手指放开事件 mode = NONE; break; } return true; } }); 这些写上之后就可以先看一下单指,双指的事件有没有被正确处理 通过Android

26751
  • 广告
    关闭

    腾讯云618采购季来袭!

    一键领取预热专享618元代金券,2核2G云服务器爆品秒杀低至18元!云产品首单低0.8折起,企业用户购买域名1元起…

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 中 View 的

    Android View控件的Android 的一个重要内容。 ,这个方法还有一个重载版本,多了一个参数用于控制时间 下面我们仍然以上面的那个例子做些改变来看一下 Scroller 类的用法: 因为要处理事件,因此我们新建一个类继承 LinearLayout 成功的实现了效果! 不知道小伙伴们发现没有,在这里实现的都是对当前控件的全部的子 View 进行,这样在一定程度上限制了的灵活性。那么我们如何处理单个 View 的呢? ,传递给 ViewDragHelper 对象处理:重写要检测的 ViewGroup 的 onInterceptTouchEvent 方法来拦截事件并且将事件传递给 ViewDragHelper (View child, int pointerId) { return child == childViews[0]; // 如果的是是第一个子 View 则继续监测事件

    35940

    Android 中 View 的手势事件处理

    View 作为Android中最直接的和用户进行交互的单位,对于 View 的事件处理重要程度自然不言而喻,View 的事件处理直接影响到用户体验,下面我们来看一下对 View 的事件的处理 其实,对于 View 的事件的处理,Android还提供了另一个方法:通过 GestureDetector 类(手势识别)和 这个类里面的提供的3个接口和一个类,先看一下官方文档: ? ,方法参数分别代表: * 开始点的事件信息,结束(手指松开)的时候储存的事件信息, * 整个过程 x 方向上的平均速度,整个过程 y 方向上的平均速度 * 那么接下来的事件都不会传递给该 View ,也就无法将事件作为手势进行处理 * 详细的可以搜索一下 Android 里面的事件的分发和拦截机制 ,会调用这个方法,参数分别是: * 开始点的事件信息,结束(手指松开)的时候储存的事件信息, * 整个过程 x 方向上的平均速度,整个过程 y 方向上的平均速度

    38820

    2014-11-8Android学习------手势识别事件的处理GestureDetector--------画Animation学习篇

    首先,Android事件处理机制是基于Listener实现的,比如屏相关的事件,就是通过onTouchListener实现; 其次,所有View的子类都可以通过setOnTouchListener onLongPress"); super.onLongPress(e); } // Touch了发 * (1)onDown只要Touch Down一定立刻发 * (2)Touch Down后过一会没有发onShowPress再发onLongPress * So: Touch Down后一直不,onDown -> onShowPress -> onLongPress这个顺序发。 (onScroll),又没有长按(onLongPress),然后Touch Up时发 * 点击一下非常快的(不)Touch Up: onDown->onSingleTapUp

    7740

    HTML5做个画图板

    html中支持对事件的响应。 onTouchStart 开始 onTouchMove onTouchEnd 结束 有了这些事件,我们实现用手指在浏览器里画画就很简单了。 IPAD上的效果: 思路:当手指到屏幕的时候在onTouchStart 事件中在手指的位置上添加一个圆;当手指开始的时候在onTouchMove中不断的从上一个点到下一个点画线条。 [0].clientX; lastY=event.touches[0].clientY; drawRound(lastX,lastY); } //事件 function onTouchMove event.preventDefault();取消事件的默认作。在事件中一定要调这个方法。不然时就会发浏览器默认的事件,就会发生页面下拉的效果,你就画不了画喽。 后续: 后面我会结合phonegap,把这个html5的网页封装成app搬到android,ios,wp上去。

    9420

    Android编程使用GestureDetector实现简单手势监听与处理的方法

    分享给大家供大家参考,具体如下: 添加手势识别监听步骤: 一、给相应的控件添加监听事件, 二、利用GestureDetector转发这个事件。 velocityY) { if (e1.getX()-e2.getX() 50) { Toast.makeText(MainActivity.this,"从右往左 Toast.LENGTH_LONG).show(); }else if(e2.getX()-e1.getX() 50){ Toast.makeText(MainActivity.this,"从左往右 myGestureListener()); img.setOnTouchListener(new View.OnTouchListener() { //motionEvent可以捕捉我们屏幕的 相关内容感兴趣的读者可查看本站专题:《Android手势操作技巧汇总》、《Android基本组件用法总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android

    20841

    Flutter完整开发实战详解(十八、 神奇的ScrollPhysics与Simulation)

    一、前言 如下图所示,Flutter 默认的可 Widget,在 Android 和 iOS 上具备不同的 与边缘拖拽效果 ,这是因为在不同平台上,默认使用了不同的 ScrollPhysics Tolerance get tolerance 上方代码标注了 ScrollPhysics 各个方法的大致作用,而在前面 《十三、全面深入原理》 中,我们深入解析过的原理,大致流程从开始往下传递 , 最终发 layout 实现的现象: ? ,使得边界相对静止,从而达到“夹住”的作用 ,也就是态边界 ,所以默认请下 Android 上滚到了边界就会停止响应。 总结起来就是 ScrollPhysics 中控制了用户转化和边界条件,并且在用户停止时,利用 Simulation 实现了自与溢出回弹的画效果。 自此,第十八篇终于结束了!

    8.4K61

    Android反馈

    随着手指的Button 的坐标发生了改变,当手指抬起时发 Button#onClick 事件。 解决⽅方案: 实现策略—父 View、子 View 谁来消费事件可以实时协商 换成 NestedScrollView:可以 实现 NestedScrollingChild3 接口来实现自定义的嵌套逻辑 自定义单 View 的反馈 View.onTouchEvent() 当用户按下(ACTION_DOWN): 如果不在控件中,切换至按下状态,并注册长按计时器 如果在控件中,切换至预按下状态 可以注册很多事件监听器,事件的调度顺序是onTouchListener> onTouchEvent>onLongClickListener> onClickListener 自定义 ViewGroup 的反馈 这俩个方法都是快速,是瞬间移的。注意:滚的并不是viewgroup内容本身,而是它的矩形边框。 在up的时候,判断应显示的页面位置,并计算距离、页面。

    49560

    View的方式 详细介绍

    onShowPress(MotionEvent e) { //手指的状态,由1个DOWN发,强调的是没有拖的状态,就是按着没。 = 到的坐标 - 开始的坐标 (都是相对于view本身) int offsetX = x - mLastX; int offsetY = 到的坐标 - 开始的坐标 (都是相对于view本身) int offsetX = x - mLastX; int offsetY = 到的坐标 - 开始的坐标 (都是相对于view本身) int offsetX = x - mLastX; int offsetY 代码使用方法: case MotionEvent.ACTION_MOVE: //的距离 = 到的坐标 - 开始的坐标 (都是相对于

    26900

    Android 监听的实例详解

    Android 监听的实例详解 摘要: ScollBy,ScollTo是对内容的移,view.ScollyBy是对view的内容的移 ? view,ScollTo是对内容的移(移到指定位置),view.ScollyBy是对view的内容的移(移距离) ? Log.i(TAG, "rawY: "+rawY+",____"+y); break; } return super.onTouchEvent(event); } 在textView中添加监听 先响应textView的事件,在响应Activity事件 当activity的事件返回值为true时: ? 同上 当TextView的事件返回值为true时: ? 只响应textView的事件 总结: OnTouhEvent的返回值 true表示事件不往上传递,消费此事件,false表示继续传递事件,不拦断(也消费事件).

    36151

    Android:完美解决ScrollView与嵌套EditText的冲突

    背景 一个 ScrollView 里嵌着一个 EditText(设置可)。 activity_main.xml <?xml version="1.0" encoding="utf-8"? ,但里面设置的 mEditText 不可。 ---- 原因分析 mScrollView把事件消费掉了,没有传递到EditText,从而导致没法使得 EditText 响应事件 ---- 解决思路 当的是EditText & 当前EditText (true)进行碰事件拦截 关于为什么可以拦截事件,可以看看我写的事件分发机制:Android事件分发机制 详解攻略,您值得拥有 public class MainActivity extends @Override public boolean onTouch(View v, MotionEvent event) { // 当的是

    84010

    Carson带你学Android:完美解决ScrollView与嵌套EditText的冲突

    背景 一个 ScrollView 里嵌着一个 EditText(设置可)。 activity_main.xml <?xml version="1.0" encoding="utf-8"? ,但里面设置的 mEditText 不可。 原因分析 mScrollView把事件消费掉了,没有传递到EditText,从而导致没法使得 EditText 响应事件 ---- 解决思路 当的是EditText & 当前EditText可滚时 (true)进行碰事件拦截 关于为什么可以拦截事件,可以看看我写的事件分发机制:Android事件分发机制 详解攻略,您值得拥有 public class MainActivity extends @Override public boolean onTouch(View v, MotionEvent event) { // 当的是

    8620

    React-native踩坑小记

    listview没有弹性边界,无法实现线上的下拉刷新效果: 因为android本身就没有滚到边界还能继续滚的策略。。这里使用一些java补丁代码(列表插件所提供),来实现弹性边界-。- 3. swiper插件和tab-view插件手势冲突 因为最外层tab和swiper,都用到了切换的特性,然而这个需求在android上边实现。。会导致直接外层tab,而不是swiper。。。 于是我们开始研究android事件到底是怎么个执行法。 大致是一个先捕获,再冒泡的过程: 最外层组件发回调,询问是否捕获事件,并阻止事件继续传递。 等到捕获阶段全部走完以后,最内层的组件会发回调,询问是否作为此次操作的事件执行者(消费者),返回true则表明对此次事件负责,返回false事件则继续向外层冒泡。 支持切换的tab页签,头部可自定义 目前支持度最高的一个Swiper插件 结束语: 目前研究ReactNative所遇到的坑就这么几个咯,所幸能够解决这种问题(其实已经耽误了很久了)。

    1.5K80

    屏事件

    比如屏事件 touch(也称事件),Android和 IOS 都有。 touch 对象代表一个点。点可能是一根手指,也可能是一根笔。 事件对象(TouchEvent) TouchEvent 是一类描述手指在平面(屏、板等)的状态变化的事件。 然后用盒子原来的位置 + 手指移的距离 手指移的距离:  手指中的位置 减去  手指刚开始的位置 拖元素三步曲: (1) 元素 touchstart: 获取手指初始坐标,同时获得盒子原来的位置 (2) 移手指 touchmove: 计算手指的距离,并且移盒子 (3) 离开手指 touchend: 注意: 手指移也会发滚屏幕所以这里要阻止默认的屏幕滚 e.preventDefault (); <script> // (1) 元素touchstart : 获取手指初始坐标,同时获得盒子原来的位置 // (2) 移手指 touchmove :计算手指的距离

    7920

    Android学习第七弹之手势操作

    在昨天我们讲了Android的OnTouch事件,有时候和手势是相互联系的,密不可分的关系,所以上节我们讲了事件,今天我们自然而然的就需要讲手势操作了。 ,手势操作已经很好的融入了我们的生活,那在Android开发中如何进行手势识别呢?下面我们就来讲讲。 什么是手势呢? 手势就是用户对手机屏幕进行连续碰,比如:从屏幕左边到手机右边,从屏幕上面到屏幕下面等等,手势可以是一笔,也可以是多笔,可以形成规则或不规则的图形。 手势是如何识别的呢? e) 手指按在屏上,它的时间范围在按下起效,在长按之前。 抬起 onSingleTapUp(MotionEvent e) 作用:检测单击事件,手指离开屏的那一刹那。

    28360

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

    剩下最后一个如何通知内层容器滚呢?先卖个关子,在解决这个问题之前,我们先来了解下Android中的View事件是如何传递的。 正所谓知己知彼,百战不殆,看看Android事件类型有哪些? 我们想下玩手机的时候手指的情况:落下手指,抬起手指,移手指是三种基本的操作,其实也是3种事件,分别代表着MotionEvent.ACTION_DOWN,MotionEvent.ACTION_UP, 根据手屏幕的y坐标差来判断手势往上还是往下。手指时会产生一系列事件,这里有两种情况:说明下屏幕的左上角是坐标原点,沿着右边是x轴,左边则是y轴。 . -> Move 记录Down事件的Y坐标值作为起始值,Move或者UP的Y坐标值作为末尾值,两者之差大于最小值则说明向上,小于最小值则说明向上(这里简化了条件,如果是实现OnGestureListener 参考: 讲讲Android事件拦截机制 Android 屏幕手势

    1.5K70

    解析6种常用View 的方法

    小编说:View 的Android 实现自定义控件的基础,实现View 有很多种方法,在这里主要讲解6 种方法,分别是layout()、offsetLeftAndRight()与offsetTopAndBottom 本文选自《Android进阶之光》 View 的Android 实现自定义控件的基础,同时在开发中我们也难免会遇到View 的处理。 其实不管是哪种方式,其基本思想都是类似的:当点击事件传到View 时,系统记下点的坐标,手指移时系统记下移的坐标并算出偏移量,并通过偏移量来修改View 的坐标。 首先我们要自定义一个View,在onTouchEvent()方法中获取点的坐标,代码如下所示: public boolean onTouchEvent(MotionEvent event) { //获取手指点的横坐标和纵坐标 int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction

    47430

    屏事件

    比如屏事件 touch(也称事件),Android和 IOS 都有。 touch 对象代表一个点。点可能是一根手指,也可能是一根笔。 事件对象(TouchEvent) TouchEvent 是一类描述手指在平面(屏、板等)的状态变化的事件。 事件对象重点我们看三个常见对象列表: 因为平时我们都是给元素注册事件,所以重点记住 targetTocuhes 3.案例:移端拖元素 touchstart、touchmove、touchend 然后用盒子原来的位置 + 手指移的距离 手指移的距离: 手指中的位置 减去 手指刚开始的位置 拖元素三步曲: (1) 元素 touchstart: 获取手指初始坐标,同时获得盒子原来的位置 (2) 移手指 touchmove: 计算手指的距离,并且移盒子 (3) 离开手指 touchend: 注意: 手指移也会发滚屏幕所以这里要阻止默认的屏幕滚 e.preventDefault

    22641

    相关产品

    • 直播 SDK

      直播 SDK

      直播 SDK 是腾讯云直播服务在移动场景的延伸,集成了腾讯云直播的推 / 拉流、主播观众互动连麦、主播跨房 PK 等能力,提供包括 iOS、Android、小程序、Web 等多种接入方式,为您提供针对移动场景的高质量直播服务,快速满足手机直播的需求。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券