Android动画2

本文深入解析Android动画机制,包括ValueAnimator、ObjectAnimator、PropertyValuesHolder、Keyframe等核心组件的使用方法,以及ViewPropertyAnimator和LayoutTransition的高级特性,探讨SVG动画在Android中的应用。
摘要由CSDN通过智能技术生成

动画其他

ValueAnimator、ObjectAnimator其他创建函数方法 ofPropertyValuesHolder(控件,PropertyValuesHolder... values)。

PropertyValuesHolder保存了动画过程中所需操作的属性和对应的值。将创建好的多个PropertyValuesHolder实例传入,构造Animator,可同时实现多个动画

PropertyValuesHolder构造方法有:

1.ofFloat、ofInt(String propertyName,float/int... values),传入要操作属性名,和属性对应参数

2.ofObject(String propertyName,TypeEvaluator te,object... values)

3.ofKeyframe(String propertyName,Keyframe values)

 Keyframe 关键帧
创建方式
    1.ofFloat、ofInt(float fraction,float/int  value),或ofFloat、ofInt(float fraction)
        fraction传入 当前显示进度,插值器getInterpolation返回值;表示当前关键帧所在进度位置
        value表示动画当前位置对于值
    2.ofObject(float fraction),ofObject(float fraction,Object value)

Keyframe 其他方法
    setFraction、setValue
Keyframe可以设置插值器
    setInterpolator

PropertyValuesHolder其他函数

setEvaluator(TypeEvaluator)

setFloatValues(float... )设置ofFloat对于的动画值列表

setIntValues(int...)

setKeyframes(Keyframe...)

setObjectValues(Object...)

setPropertyName(String)设置动画属性名

ViewPropertyAnimator,View的animate()函数

使用View的animate()函数操作动画如 btn.animate().alpha(0f);

没有想ObjectAnimator一样使用反射JNI技术,根据动画每帧计算出对应属性值给控件再调用invalidate重绘。相对ObjectAnimator性能有所提升

alpha(float)透明度
alphaBy(float)透明度增量
scaleY(float)Y轴缩放
scaleX(float)X轴缩放
scaleYBy(float)Y轴缩放增量
scaleXBy(float)X轴缩放增量
translationY(float)设置Y轴方向移动值
translationX(float)设置X轴方向移动值
translationYBy(float)设置Y轴方向移动值增量
translationXBy(float)设置X轴方向移动值增量
rotation(float)绕Z轴旋转度数
rotationX(float)绕X轴旋转度数
rotationY(float)绕Y轴旋转度数
rotationBy(float)绕Z轴旋转增量
rotationXBy(float)绕X轴旋转增量
rotationYBy(float)绕Y轴旋转增量
x(float)相对父容器左上角坐标在X轴方向最终位置
y(float)相对父容器左上角坐标在Y轴方向最终位置
xBy(float)相对父容器左上角坐标在X轴方向最终位置增量
yBy(float)相对父容器左上角坐标在Y轴方向最终位置增量
setInterpolator(TimeInterpolator)设置插值器
setStartDelay(long)设置开始延长
setDuration(long)设置动画时长

animateLayoutChanges 在xml里使用,属性为true时添加一个控件时透明度从0到1,删除时从1到0

LayoutTransition 使用方法:

1.创建实例

2.创建动画,并用实例设置 layouttransition.setAnimator(LayoutTransition.XXX,animtor);

  XXX中内容可以为:

APPEARING            元素在容器中出现时定义的动画
DISAPPENARING        元素在容器中消失时定义的动画
CHANGE_APPEARING        容器中要显示一个新元素,其他需要变换元素对应动画
CHANGE_DISAPPEARING    容器中要某个元素消失时,其他需要变换元素对应动画

3.设置到ViewGroup中  linearLayout.setLayoutTransition(LayoutTransition)

可以设置监听,监听开始、结束

其他

PathMeasure 可用来

截取路径、截取路径,结果传给新路径、计算路径;

截取方向和Path设置方向一致、

获取路径长度的正切值

SVG动画,可缩放矢量图形

比之Bitmap,可以使用xml格式图形;由点储存,不会失真,无需根据分辨率适配多套图标;空间比bitmap小;可转换成Path路径,与Path动画组合

使用vector标签显示,标签里使用path标签;group标签

AndroidStudio引入SVG

   1.新建Vector Asset生成Vector图像

   2.在Gradle下添加对Vector兼容的支持  

2.0以上
android{
    defaultConfig{
        vectorDrawables.useSupportLibrary=true
    }
}

动态Vector:定义一个Animator的xml文件,再定义一个xml文件,使用animated-vector标签,关联vector和animator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值