Android 滑动实现七种方式总结
74 浏览量
更新于2024-09-02
收藏 167KB PDF 举报
Android 中实现滑动的七种方式总结
Android 中实现滑动的七种方式总结是指在 Android 系统中实现滑动的多种方法的总结,旨在帮助开发者更好地理解和实现滑动功能。本文将从 Android 坐标体系、layout 方法、onTouchEvent 方法、Scroller 类、VelocityTracker 类、GestureDetector 类、动画实现滑动七个方面进行概括,详细介绍每种方式的实现原理和代码示例。
一、Android 坐标体系
Android 坐标体系是指在 Android 系统中用于描述视图位置和大小的坐标系统。Android 坐标系的原点位于屏幕的左上角,而视图坐标系的原点位于父视图的左上角。了解 Android 坐标体系是实现滑动的基础,因为滑动的实质就是坐标的不断改变。
二、layout 方法
layout 方法是指在 View 进行绘制时调用 onLayout() 方法来确定 View 的位置的。同样,我们也可以调用 layout() 方法来传入我们滑动后的坐标,以实现 View 的滑动。坐标的获取我们可以在触控事件中进行获取。下面是一个简单的示例代码:
public class DragView extends View {
private int mLastX;
private int mLastY;
public DragView(Context context) {
this(context, null);
}
public DragView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public DragView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
int lastX = 0, lastY = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = x;
lastY = y;
break;
case MotionEvent.ACTION_MOVE:
int offsetX = x - lastX;
int offsetY = y - lastY;
layout(lastX + offsetX, lastY + offsetY, lastX + offsetX + getWidth(), lastY + offsetY + getHeight());
lastX = x;
lastY = y;
break;
default:
break;
}
return true;
}
}
三、onTouchEvent 方法
onTouchEvent 方法是指在 View 中重写 onTouchEvent() 方法来处理触控事件。在 onTouchEvent() 方法中,我们可以根据触控事件的类型来实现不同的滑动效果。
四、Scroller 类
Scroller 类是 Android 系统中提供的一个滑动工具类,通过使用 Scroller 类,我们可以实现 View 的滑动。Scroller 类提供了 startScroll() 方法和 fling() 方法来实现滑动。
五、VelocityTracker 类
VelocityTracker 类是 Android 系统中提供的一个速度追踪器类,通过使用 VelocityTracker 类,我们可以追踪 View 的滑动速度。
六、GestureDetector 类
GestureDetector 类是 Android 系统中提供的一个手势检测器类,通过使用 GestureDetector 类,我们可以检测用户的手势动作,并实现滑动效果。
七、动画实现滑动
动画实现滑动是指使用 Animation 类或 Animator 类来实现 View 的滑动。通过设置动画的起始和结束值,我们可以实现 View 的滑动。
Android 中实现滑动的七种方式总结了多种实现滑动的方法,每种方法都有其特点和应用场景,掌握这些方法可以帮助开发者更好地实现滑动功能。
191 浏览量
2021-01-04 上传
2020-09-01 上传
2013-09-02 上传
2021-01-20 上传
2020-08-18 上传
2021-01-20 上传
2020-08-26 上传
weixin_38562085
- 粉丝: 6
- 资源: 964
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常