动画其他
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