android 之View 一
来源:互联网 发布:淘宝网页登陆 编辑:程序博客网 时间:2024/04/29 19:54
1.MotionEvent
ACTION_DOWN,ACTION_UP,ACTION_MOVE
getX/getY相对当前View 左上角X ,Y
getRawX/getRawY 相对手机屏幕左上角X,Y
2. TouchSlop(常量跟设备有关,Android源码中定义为8dp)
系统所能识别的最小滑动距离
获取方式: ViewConfiguration.get(getBaseContext()).getScaledTouchSlop();返回的是像素
3. VelocityTracker
用于追踪手指在屏幕的滑动速度(有X,Y两个方向)速度可以是负值
用法:在View的onTouchEvent()
@Overridepublic boolean onTouchEvent(MotionEvent event) { //创建 VelocityTracker velocityTracker=VelocityTracker.obtain(); velocityTracker.addMovement(event); //计算 velocityTracker.computeCurrentVelocity(1000);//设定计算时间,毫秒为单位 float XVelocity=velocityTracker.getXVelocity(); float YVelocity=velocityTracker.getYVelocity(); Log.d(TAG, "XVelocity: "+XVelocity+" YVelocity: "+YVelocity); return super.onTouchEvent(event);}
注意:不需要使用时要回收占用的内存
velocityTracker.clear();velocityTracker.recycle();
4. GestureDetector
检测单击,滑动,双击等行为
使用方法:
1. 创建一个GestureDetector对象并实现OnGestureListener()接口,根据需求也可以实现OnDoubleTapListener().
2. 监听自定义View的onTouchEvent方法,返回mGestureDetector.onTouchEvent
5. Scroller
用于实现View的弹性滑动
scrollerTo(),scrollerBy()只能改变view中内容位置,不能改变view在布局的位置
一个简单View 滑动例子:
int mLastX=0,mLastY=0;@Overridepublic boolean onTouchEvent(MotionEvent event) { // 相对本身来滑动,也可以相对手机屏幕来滑动 int x=(int)event.getX(); int y=(int)event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int deltaX=x-mLastX; int deltaY=y-mLastY; int translationX=(int)getTranslationX()+deltaX; int translationY=(int)getTranslationY()+deltaY; setTranslationX(translationX); setTranslationY(translationY); break; case MotionEvent.ACTION_UP: //松手后回到初始位置 setTranslationX(0); setTranslationY(0); break; } mLastX=x; mLastY=y; return true;}
0 0
- android 之View 一
- android 之 custom view(一)
- Android 之 View(一)简单详述
- Android 动画学习(一)之View Animation
- android自定义View之(一)------基本篇
- Android 动画学习(一)之View Animation
- Android学习之自定义view(一)
- Android 系统源码分析之View(一)
- Android View之组合控件实例(一)
- android自定义view之地图(一)
- Android动画学习之View动画一
- Android 面试题总结之View(一)
- Android进阶之自定义view(一)
- Android View 绘制流程之测量(一)
- 【Android进阶之自定义View(一)】
- Android事件分发之View(一)
- Android 面试题总结之View(一)
- Android自定义控件之自定义View(一)
- 常用的Git代码托管平台
- HashSet,TreeSet和LinkedHashSet的区别
- nginx一个fastcgi的demo错误
- Android Fragment 真正的完全解析(上)
- PAT (Advanced Level) Practise 1074 Reversing Linked List (25)
- android 之View 一
- Python版shadowsocks服务优化和开机启动
- 第4周项目5 (1)用递归方法求解
- 代码片段的备份
- markdown 简明语法
- Win32窗口程序实例
- CoreAnimation 详解
- 仿win8菜单的按下缩小抬起恢复大小的效果
- Android WebView与JavaScript 交互