Android 属性动画详解 一、属性动画与属性动画组
来源:互联网 发布:淘宝店换行业有影响吗 编辑:程序博客网 时间:2024/05/07 04:30
一、属性动画详解:
translationX : 指的是View距离其原始位置的距离
即,首先这个属性要有get和set方法,get方法是用来得到当前的属性值,set是用来在动画过程中设置对应属性值。其次,要知道set这个属性传入的类型。
所以,上面的如果想改变translationX来实现动画效果的话,应该这么写:
4、一些常用的可以直接用于属性动画的:
translationX:指的是View距离其原始位置的距离
X:View距离父View最左边的距离
rotation,rotationX,rotationY:这三个属性控制View对象围绕支点进行2D和3D旋转
scaleX:控制着View对象围绕它的指点进行2D缩放
pivotX:这两个属性控制着View对象的支点位置,围绕这个支点进行旋转和缩放变换处理,默认情况下,该支点的位置就是View对象的中心点
1.通过自定义一个属性类或者包装类,来间接的给这个属性增加get,set方法。
2.通过ValueAnimator来实现,这个会在下一节讲解。
1、首先明确一个概念,属性动画是通过不停的改变View的属性然后产生动画效果。所以,不像基础动画,属性动画可以真实的改变View的位置。
2、简单介绍一下translationX,translationY与 X,Y属性:translationX : 指的是View距离其原始位置的距离
X : View距离父View最左边的距离
在弄懂了属性动画是通过改变View的属性来显示动画的原理后,即ObjectAnimator是不停的set View的一个属性,即是使用java的反射机制来实现,所以,拿下面的例子:
view . setTranslationX(float);这个View如果想改变translationX的值的话,要往里面传入一个float类型的参数。
即,首先这个属性要有get和set方法,get方法是用来得到当前的属性值,set是用来在动画过程中设置对应属性值。其次,要知道set这个属性传入的类型。
所以,上面的如果想改变translationX来实现动画效果的话,应该这么写:
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(animationBt, "translationY”,100.0); objectAnimator.setDuration(500); objectAnimator.start();
4、一些常用的可以直接用于属性动画的:
translationX:指的是View距离其原始位置的距离
X:View距离父View最左边的距离
rotation,rotationX,rotationY:这三个属性控制View对象围绕支点进行2D和3D旋转
scaleX:控制着View对象围绕它的指点进行2D缩放
pivotX:这两个属性控制着View对象的支点位置,围绕这个支点进行旋转和缩放变换处理,默认情况下,该支点的位置就是View对象的中心点
alpha:表示View的透明度。默认值是1(不透明),0代表完全透明(不可见)。
1.通过自定义一个属性类或者包装类,来间接的给这个属性增加get,set方法。
2.通过ValueAnimator来实现,这个会在下一节讲解。
二、属性动画组详解:
1、PropertyValuesHolder:
如果针对同一View的多个属性要做出属性动画,可以使用PropertyValuesHolder来实现;
eg:
PropertyValuesHolder holder1 = PropertyValuesHolder.ofFloat("translationX", 300); PropertyValuesHolder holder2 = PropertyValuesHolder.ofFloat("scaleX", 1.0f, 0.1f); PropertyValuesHolder holder3 = PropertyValuesHolder.ofFloat("scaleY", 1.0f, 0.1f); ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(animationBt, holder1, holder2, holder3); animator.setDuration(1000); animator.start();
二、AnimatorSet与AnimatorSet.Builder:
PropertyValuesHolder的缺点是不能实现精确的顺序控制,而AnimatorSet可以。AnimatorSet可以通过playTogether,playSequentially,AnimatorSet.Builderd的with(),before(),after()来实现动画组合。
eg:
ObjectAnimator animator1 = ObjectAnimator.ofFloat(animationBt,"translationX",300); animator1.setDuration(500); ObjectAnimator animator2 = ObjectAnimator.ofFloat(animationBt,"scaleX",0.5f); animator2.setDuration(500); ObjectAnimator animator3 = ObjectAnimator.ofFloat(animationBt,"scaleY",0.5f); animator3.setDuration(500); AnimatorSet set = new AnimatorSet(); //1.按先后顺序执行动画 set.setDuration(1500); set.playSequentially(animator1,animator2,animator3); set.start(); //2.一起执行动画 set.setDuration(500); set.playTogether(animator1,animator2,animator3); set.start(); //3.先在500ms完成第一个,在一起完成第2个和第3个 set.setDuration(1000); set.play(animator2).with(animator3); set.play(animator1).before(animator2); set.start();
1 0
- Android 属性动画详解 一、属性动画与属性动画组
- android属性动画详解一
- android动画 属性动画详解
- Android属性动画详解(一),属性动画基本用法
- Android属性动画详解(一),属性动画基本用法
- Android属性动画一
- Android动画属性一
- Android:属性动画详解
- Android 属性动画详解
- Android 属性动画 详解
- Android 属性动画详解
- Android属性动画详解
- Android属性动画详解
- Android 动画属性详解
- Android 属性动画 详解
- Android 属性动画详解
- Android动画--属性动画
- android动画 -- 属性动画
- maven : Failed to execute goal org.apache.maven.plugin错误Generating project in Interactive mode提示解决方案
- hd 2073 无限的路
- SICP 练习1.32
- codeforce之Magic Powder
- 设计模式之工厂模式
- Android 属性动画详解 一、属性动画与属性动画组
- C++上机作业7
- 斯坦福大学机器学习笔记(5)-logistic回归的优化
- iOS 提交报错 Error ITMS-90635 - Invalid Mach-O in bundle - submitting to App store
- 使用github和hexo搭建静态博客
- Alda
- 太原网络营销师揭秘O如何玩转网站SEO关键字description的选择?
- 有关二进制中原码,反码,补码的小知识
- 【leetcode】100. Same Tree