【View基础知识】View滑动之动画
程序员文章站
2024-03-26 08:12:53
...
本系列文章部分摘自《Android开发艺术探索》,目的是提取精干知识点加上自己部分理解作为备忘笔记,如有侵权请及时联系我,再次感谢作者,如喜欢请支持购买作者正版书籍
目录
View的滑动方式
View 的滑动主要通过三种方式实现:
- 通过View本身提供的scrollTo/scrollBy
- 通过动画实现View的滑动
- 通过改变View的LayoutParams使View重新布局实现滑动
View动画
通过动画我们能够让一个View进行平移,而平移就是一种滑动。使用动画来操移动View,主要是操作View的translationX和translationY属性,既可以采用传统的View动画也可以用属性动画(3.0一下现在基本上没有了所以不用考虑属性动画的兼容性问题)。
使用方法
在anim中定义动画animation.xml
<?xml version=”1.0” encoding=”utf-8”?>
<set xmlns:android=”http://schemas.android.com/apk/res/android”
android:fillAfter = "true"
android:zAdjustment = "normal">
<translate
android:duration="100"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100"
android:toYDelta="100"
android:interpolator="@android:anim/linear_interpolator"/>
</set>
或者代码定义
TranslateAnimation translateAnimation = newTranslateAnimation (0,0,100,100);
translateAnimation.setDuration(100);
translateAnimation.setFillAfter(true);
调用方法
view.startAnimation(AnimationUtils.loadAnimation(this,R.anim.animation));
属性动画
属性动画稍微写法稍微简单些
ObjectAnimator.ofFloat(targetView,"translationX",0,100).setDuration(100).start();
需要注意几点:使用传统的View动画来进行滑动,View动画是对View的影像做操作,并不能真正改变View的位置参数,包括宽高(比如动画结束后点击区域依然还在原来的位置响应,新位置不会响应该View的点击事件),并且如果希望动画后的状态得到保留必须把fillAfter设置为true,否则动画完成后就会消失变为原来的初始状态。使用属性动画并不会带来上面一系列的问题
ok,结束睡觉去
推荐阅读