1.滑动效果是如何产生的

要实现View的滑动,就必须监听用户触摸的事件,并根据事件传入的坐标,动态且不断地改变View的坐标,从而实现View跟随用户触摸的滑动而滑动.
1.1 Android 坐标系
将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向.
系统提供了getLocationOnScreen(int location[])方法来获取Android坐标系中点的位置,即该视图左上角在Android坐标系中的坐标.
在触摸事件中使用getRawX() getRawY()方法所获得的坐标同样是Android坐标系中的坐标.

1.2视图坐标系

处理Android坐标系外,Android中还有视图坐标系,它表示子视图在父视图中的位置关系,视图坐标系同样是以原点向右为X轴正方向,向下为Y轴正方向,区别在于它的原点是以父视图左上角为坐标原点.
在触摸事件中,通过getX() getY()所获得的坐标就是视图坐标系中的坐标.

1.3触摸事件–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 event)方法中通过event.getAction()方法来获取触摸事件的类型,并使用switch-case方法来进行筛选:

//在onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触摸事件的类型,并使用switch-case方法来进行筛选:@Overridepublic boolean onTouchEvent(MotionEvent event){    //获取当前输入点的X/Y坐标(视图坐标)    int x=(int)event.getX();    int y=(int)event.getY();    switch(event.getAction()){        case MotionEvent.ACTION_DOWN:            //处理输入的按下事件            break;        case MotionEvent.ACTION_MOVE:            //处理输入的移动事件            break;        case MotionEvent.ACTION_UP:            //处理输入的离开事件            break;    }    return true;}

系统提供了获取坐标值,相对距离的方法,这些方法可以分为如下两个类型:

//View提供的获取坐标方法getTop()://获取到的是View自身的顶边到其父布局顶边的距离getLeft()://View自身的左边到其父布局左边的距离getRight()://View自身的右边到其父布局左边的距离getBottom()://View自身的底边到其父布局顶边的距离//MotionEvent()提供的方法getX()://获取点击事件距离控件左边的距离,即视图坐标getY()://距离控件顶边的距离,即视图坐标getRawX()://距离整个屏幕左边的距离,即绝对坐标getRawY()://距离整个屏幕顶边的距离,即绝对坐标

更多相关文章

  1. android2.3 View视图框架源码分析之一:android是如何创建一个vie
  2. 画廊视图Gallery
  3. 阅读《Android 从入门到精通》(21)——滚动视图
  4. Android sqlite约束-视图-检查
  5. android中的坐标变换
  6. Android在源图片上的XY坐标再画一个图片
  7. ANDROID L——Material Design详解(视图和阴影)
  8. Android23-视图坐标系以及MotionEvent事件
  9. [Android]ButterKnife-无尽之刃-绑定视图控件和事件的快速开发工

随机推荐

  1. Kotlin在Android studio上的环境配置和运
  2. android studio 首次进入问题 Internal e
  3. Android应用程序启动时发生AndroidRuntim
  4. Android Studio 中方法数65536 或超过64K
  5. android中的数据存储
  6. android实现侧滑SlidingMenu(XML或者新的A
  7. Android消息提示Toast的使用总结
  8. Android资源文件使用经验
  9. Android Internal和External Storage
  10. Android的EventBus和butterknife基本使用