View的滑动

View的滑动使用场景很多,下拉刷新也是滑动的一种。掌握View的滑动使用非常重要。

View的滑动实现可分为三种,各有缺失点。

  • 通过View本身提供的scrollTo/scrollBy的方法实现滑动
  • 通过动画给View施加平移效果实现滑动
  • 通过改变View的LayoutParams使View重新布局从而实现View的滑动


1. 使用scrollTo/scrollBy
这种滑动只是实现了当前位置的相对滑动,只能改变View的内容的位置变化,不能改变View的布局变化。值得注意的是如果从左向右滑动和从上往下滑动,那么对应的mScrollX和mScrollY是负值。
这里写图片描述

2. 使用动画
使用动画移动View,主要是通过对View的translationX和translationY属性改变来实现。因为translationX和translationY属性是Android 3.0以上才提供的属性值,所以为了在Android 3.0以下实现这种动画效果。需要采用nineoldandroids(http://nineoldandroids.com
V我的动画是对View的影像进行操作,并不能该变View真正的位置信息,如果希望动画之后的状态得到保留,,必须将fillAfter属性设置为true。尽管这样,View的位置信息也没改变,只是它的影像发生位置变化,这样就带来了一个问题,如果这个View是一个Button,滑动以后再次点击Button,发现点击效果无效,如果点击Button原来的位置,点击事件就能触发,这是因为这是View影像发生位移,View本身还在原来的位置。如果在Android3.0 以下使用属性动画,就能解决以上问题,因为3.0以下使用的开源库兼容,本质就是使用了View的scrollTo/scrollBy实现滑动效果。

3. 改变布局参数
改变布局参数,就是改变LayoutParams。比如我们要把一个Button右移100dp,只需要在Button的Layoutparams里面的marginLeft参数值增加一百。或者在Button的左边放置一个空的View,让后改变View的宽度。(假设布局为LinearLayout)。代码示例如下:

MarginLayoutParams params = (MarginLayoutParams)mButton1.getLayoutParams();
params.width += 100;
params.leftMargin += 100;
mButton1.requestLayout();
//或者mButton1.setLayoutParams(params);

三者的区别和总结:

  • scrollTo/scrollBy:操作简单,只对View的内容滑动,适合View的内容滑动
  • 动画:操作简单,主要适合用于没有交互的View和实现复杂的动画效果
  • 改变布局参数:操作先稍微复杂,适用于有交互的View
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值