android设置布局滑动,android中view的滑动策略

view的滑动

1.使用scrollTo/scollBy

从源码上看scollBy实际上也是调用了 scollTo方法,两者区别是,scollBy是实现了基于当前位置的相对滑动,scollTo是基于参数的绝对滑动。另外要理解两个参数mScollX和mScollY,mScollX是view内容左边缘和view的左边缘的距离,mScollY是view内容上边缘和view上边缘的距离。另外scrollTo的滑动只能将view的内容进行移动,不能将view本身移动。

2.使用动画

可以采用view动画和属性动画

view动画是针对view的影像做操作,并不能改变view的位置参数,如果希望动画后状态得以保留,必须将fillafter属性设置为true,否则动画后会瞬间恢复到原来状态。

由于只是针对影像做操作,会出现一个问题,给view设置监听以后,动画后单击新位置无法触发onclick事件。但是单击原来位置还会出现。因为在系统眼里这个view根本没有发生改变。这种问题可以在新位置创建一个和目标view一模一样的,动画以后隐藏旧目标,显现新目标。

属性动画不会出现以上问题,但是android3.0以下无法使用属性动画。只能使用动画兼容库nineoldandroids,本质上仍然是view动画。

3.改变布局参数

这种就是直接更改layoutparams。

三种方式优缺点:

scollTo/scollBy:操作简单适合对view内容滑动

动画:针对于android3.0以上的属性动画,是没有太大缺点的,针对于view动画,不能交互

更改参数:操作复杂

弹性滑动

1.使用scoller

原理:在scoller调用startscoll()方法时,会保存相应的参数(滑动起点,滑动距离,滑动时间等等),然后调用invalidate方法,会导致view重绘,然后再view的draw方法中调用computescoll方法,先获取滑动当前的scorllx和scolly。继而调用scoll方法滑动,然后又调用postinvalidate方法,进行第二次重绘。

e53a8898ab86

image.png

每一次重绘距离上次滑动都会有一个时间间隔,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值