欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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/androidandroid: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,结束睡觉去