Android 滑动
来源:互联网 发布:汕头有淘宝代运营 编辑:程序博客网 时间:2024/06/10 00:03
在Android 开发中 由于手机大小的限制,必定很多时候都会遇到需要自定义 滑动来展示所有内容, 如使用自带控件 ListView scrollview 属性动画等
首先 简单的介绍下 正常情况下在Android 中 实现滑动的几种方法
1.layout LayoutParams
上面这两种方法使用比较类似 都是在在onTouchEvent 中 获取 手指的偏移量 (假定为moveX moveY) 重新设置view的坐标来实现的
layout 方法 :
layout(getLeft()+moveX , getTop()+moveY , getRight()+moveX , getBottom+moveY)layoutParams 方法
ViewGroup.MarginLayoutParams layoutParas =(ViewGroup.MarginLayoutParams)getLayoutParams();layoutParams.leftMargin=getLeft()+moveX;layoutParams.topMargin=getTop()+moveY;setLayoutParams(layoutParams);
2.offsetLeftAndRight() 和 offsetTopAndBottom()
这种方法使用非常简单,就像方法名字一样 直接设置偏移量即可
示例:
offsetLeftAndRight(moveX) offsetTopAndBottom(moveY)
3.scrollTo ScrollBy
scroll'to 和scrollBy 在实际使用中是存在一定的区别的
scrollTo 是移动到具体的坐标 他的移动和 layout LayoutParams 是类似的
scrollBy 是增量移动 他的使用与 offsetLeftAndRight() 和 offsetTopAndBottom() 是类似的
同时scrollTo 和scrollBy使用的时候与上述 2种方法存在着差异
在View中:
上面两种方案 移动的是view 本身(画布固定不动) 而scrollTo 和scrollBy 移动的是view的内容
在ViewGroup 中:
上面两种方案 移动的是viewGroup 整体(画布固定不动) 而scrollTo 和scrollBy 移动的是子view
因此 想要正常使用scrollTo 和 scrollBy需要在父控件中使用
同时scrollTo和scrollBy的参数都是偏移量 举个简单的例子 现在坐标点是(0,0) 我想要把view移动到(100,100) 需要执行代码 scrollTo(-100,-100);
由于scrollTo和scrollBy 所选取的坐标原点不同,在实际使用的时候也存在着差异 scrollTo是使用的 绝对坐标 即手机屏幕左上角为(0,0)原点 而scrollBy采用的相对坐标 即父控件左上角为(0,0)原点
4.Scroller 类
Scroller 类的实现原理和scrollTo scrollBy 类似 他是把scrollTo 的一下子移动到目的坐标 改为一步步移动过去给人以一种平滑的感觉(帧动画)
Scroller 类的使用 :
----1.初始化
Scroller scroller = new Scroller(context);Scroller在初始化的时候需要传入一个Context ,便于获屏幕的属性
----2.模拟滑动
模拟滑动 需要重写该类的computeScroll()方法 在该方法中书写滑动逻辑
例子:
@Override public void computeScroll() { super.computeScroll(); if(scroller.computeScrollOffset()){ scrollTo(0,scroller.getCurrY()); postInvalidate(); }}需要注意的是 上述代码是在一个自定义viewGroup 中复制过来的 如果在view中 应该是父控件调用scrollTo方法 。
computeScrollOffset 是判断 是否滑动完成postInvalidate 重绘view 在重绘的时候会再次调用该方法 实现循环----3.开始模拟
使用Scroller 类的startScroll方法即可 该方法有一个重载方法 它们一个规定了时间 一个没有
5.ViewDragHelper 类
其实google 为我们提供的DeawerLayout 和SildingPaneLayout两个布局中就是使用了ViewDragHelper 。ViewDragHelper虽然功能最为强大 但是他的使用比较复杂。
----1.初始化
----2.拦截事件
----3.处理computeScroll
----4.处理回调
以上便是Android 中实现滑动的几种方案(ViewDragHelper 在其他篇章中详细介绍)
0 0
- android滑动
- Android:滑动
- Android 滑动
- Android 滑动
- android 滑动效果---左右滑动
- android滑动---锯齿状左右滑动
- android 滑动分页
- android滑动分页
- Android 判断屏幕滑动
- Android 屏幕滑动事件
- android滑动分页
- android 手势左右滑动
- android滑动按钮事件
- android滑动基础篇
- android滑动解锁
- Android 左右滑动 控件
- Android--Listview横向滑动
- Android滑动切换activity
- 【蓝桥杯】试题集入门训练第二题
- python学习-3.一些常用模块用法
- LeetCode OJ-49.Group Anagrams
- Effective Java : 方法
- 抓包工具Fiddler的使用教程(五): 修改response的数据
- Android 滑动
- 77. Combinations 难度:medium
- JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
- Fedora 25U盘启动盘的制作
- windows10安装Scrapy
- 我最近用Python写了一个算法,不需要写任何规则就能自动识别一个网页的内容
- 分布式文件系统FastDFS设计原理
- 用WebStorm开发TypeScript
- python构造字典的dict()函数理解