相对于在Android2.x版本上出现的长按、点击事件的效果,不得不说,滑动操作具有更好的用户体验。因此,从Android 4.X版本开始,出现了更多滑动操作的效果。越来越多第三方应用模仿这样的效果,来改善自己的应用。本文,我们刨根问底来探寻滑动效果的产生。

滑动效果如何产生

滑动一个View,其本质就是移动一个View。便是改变它的坐标位置,它的原理与动画产生的效果原理应该是如出一辙的。其最终本质都是改变其坐标。所以,我们要实现View滑动的效果,就只需要监听用户的触摸事件,动态改变View的坐标。

这里,说道监听触摸事件,改变View坐标。我们因此因此要了解窗口坐标系与屏幕触摸事件motionEvent。

Android坐标系

为什么会有滑动一说了,初中的物理告诉我们,是相对于坐标系发生了运动。在Android中,我们将屏幕左上角定为坐标原点,从这个点向右为x轴的正方向,向下为y轴的正方向。如图所示:

除了这个系统坐标系之外,还有一个视图坐标系。与系统坐标系类似,以也是以原点向下为y轴的正方向,以原点向右为x轴的正方向。只不过,这个坐标原点是父控件左上角。如图所示:

我们了解了坐标系,下面我们就了解触摸事件——MotionEvent。

别小看这个MotionEvent事件,在与用户进行交互的过程中,这个东东必不可少。首先,看他封装那些常量代表不同的事件类型,如下所示:

//单点触摸属性按下事件

public static final int ACTION_DOWN = 0;

//单点触摸属性抬起事件

public static final int ACTION_UP = 1;

//触摸点移动的事件

public static final int ACTION_MOVE = 2;

//触摸动作取消

public static final int ACTION_CANCEL = 3;

//触摸越界事件

public static final int ACTION_OUTSIDE = 4;

//多点触摸按下事件

public static final int ACTION_POINTER_DOWN = 5;

//多点触摸抬起事件

public static final int ACTION_POINTER_UP = 6;

通常情况下,我们会用这样的模板方法,来监听OnTouchEvent(MotionEvent ev)方法,然后使用switch-case方法进行判断处理,这些都是固定格式,代码如下:

switch (event.getAction()){

//触摸按下事件

case MotionEvent.ACTION_DOWN:

break;

//触摸移动状态

case MotionEvent.ACTION_MOVE:

break;

//触摸抬起状态

case MotionEvent.ACTION_UP:

break;

}

一般情况,不涉及到多点触控的操作,一般用这个代码的模板都能够完成相应事件的监听。

除此之外,Android系统提供很多方法获取坐标值与相对距离。给我们初学者带来很少困惑,这里一张图就让你搞明白。如图所示:

各种方法解释:

getLeft()——获取view自身左边到其父控件左边距离。

getRight()——获取view自身右边到其父控件左边距离。

getTop()——获取view自身上边到其父控件上边距离。

getBottom()——获取view自身下边到其父控件上边距离。

getX()——获取点击事件距离控件左边的距离,即视图坐标。

getY()——获取点击事件距离控件上边的距离,即视图坐标。

getRawX()——获取点击事件距离控件屏幕左边的距离,即绝对坐标。

getRawY()——获取点击事件距离屏幕上边的距离,即绝对坐标。

这就是对滑动效果产生知识补充。

以上就是本文的全部内容,希望对大家的学习有所帮助。

android 滚动动画效果代码,Android Scroll滑动效果实例相关推荐

  1. android 滑动缩放监听,基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放...

    基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放 基于Android的ViewPager动画特效实现页面左右滑动效果(实现缩放和透明效果) 在上一个项目的基础上做修改,项目 ...

  2. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码

    用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...

  3. android 单行文本滚动,Android UI实现单行文本水平触摸滑动效果

    本文实例为大家分享了单行文本水平触摸滑动效果,通过edittext实现textview单行长文本水平滑动效果. 下一篇再为大家介绍 多行文本折叠展开效果,自定义布局view实现多行文本折叠和展开. 1 ...

  4. android 高仿 探探卡片滑动,Android自定义View仿探探卡片滑动效果

    Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天来换一种实现思路,只用一个自定义的ViewGroup来搞定这 ...

  5. android触摸效果,Android UI实现单行文本水平触摸滑动效果

    本文实例为大家分享了单行文本水平触摸滑动效果,通过EditText实现TextView单行长文本水平滑动效果. 下一篇再为大家介绍 多行文本折叠展开效果,自定义布局View实现多行文本折叠和展开. 1 ...

  6. android 实现 效果代码,Android实现雷达View效果的示例代码

    样式效果 还是先来看效果: 这是一个仿雷达扫描的效果,是之前在做地图sdk接入时就想实现的效果,但之前由于赶着毕业设计,就没有亲手去实现,不过现在自己撸一个发现还是挺简单的. 这里主要分享一下我的做法 ...

  7. android桌面雪花效果代码,Android营造雪花和雨滴浪漫效果

    本文在实现雪花效果的基础上,根据漫天飞舞雪花,实现下雨天场景的效果,使用eclipse android 版本,具体内容如下 雪花效果图: 具体代码: 1.漫天飞舞的雪花主要代码 SnowView pa ...

  8. Android高仿陌陌应用点点滑动效果

    效果图: 分析: 从效果上看图片的展示具有层次感,在数据结构上更像是stack,所以通过继承FrameLayout来实现(不清楚FrameLayout布局特点的可以先百度下哈),外面是通过继承Fram ...

  9. android带动画的饼图,Android部分源码资源共享(视屏转GIF图片工具、仿抖音、仿朋友圈、仿红包、饼状图、引导图,图灵源码等)...

    视屏转为gif图片工具: 下载地址:CSDN 下载 1.封装了各项工具类,例如,日志,打印,缓存等,可直接使用项目 百度网盘:下载    提取码:fq07 2.Android高仿抖音 1.项目 的bu ...

最新文章

  1. jQuery选择器之可见性过滤选择器
  2. 一个完整的Core Data应用
  3. 基于AIO的CS聊天室
  4. BUUCTF(pwn)铁人三项(第五赛区)_2018_rop
  5. android bitmap上传服务器,Android 上传图片到服务器时将bitmap转换为byte[]最后转换为String...
  6. ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解
  7. Query UI DateRangePicker自定义面板个数
  8. 谁说count(*) 性能最差,我需要跟你聊聊
  9. 执​行​o​r​a​c​l​e​函​数​的​四​种​方​法
  10. 计算机应用缺什么人才,中国缺少什么专业人才
  11. PHP设计模式——代理模式
  12. 使用Python语言实现凯撒密码的加密和解密
  13. 福利:推荐一个免费的抠图网站
  14. Python进阶之路(2):批量下载豆瓣FM红心音乐MP3到本地
  15. Green Screen Wizard Pro(绿幕摄影软件)官方正式版V12.1 | 绿屏拍摄有什么软件?
  16. layui表单提交时出现一闪而过的验证信息的原因
  17. 索爱E50收款蓝牙音箱,支持各种场合的商用收账音箱
  18. Promise的基本用法以及作用
  19. 【Java】有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
  20. C99中带声明的for语句

热门文章

  1. 如何快速简单粗暴地理解Python中的if __name__ == ‘__main__‘
  2. Python运算符可不只有加减乘除
  3. python中将函数赋值给变量时需要注意的一些问题
  4. php 汉字处理 json,php处理json时中文问题的解决方法
  5. 如何添加交叉编译工具链(toolchain)到环境变量?(--sysroot路径)(新:ubuntu交叉编译工具链环境变量的配置)
  6. hover如何改变子元素或其他同级元素?(用不了怎么回事?)
  7. 如何重命名磁盘盘符名?
  8. python 报错 too many values to unpack (expected 3) 的解决方案
  9. Yolo-v2_ Windows平台下如何配置darknet-yolov2?(安装CUDA)
  10. 详解java中Thread类,线程和进程的基本区别,多线程的好处,线程的五个生命周期,主线程和IDEA创建的Monitor Ctrl-Break守护线程;优雅地终止线程。死锁的产生