Property动画示例
来源:互联网 发布:截面数据多重共线性 编辑:程序博客网 时间:2024/04/29 19:40
1、概述
Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。
View Animation比较简单,支持简单的缩放、平移、旋转、透明度基本的动画,有一定的局限性。比如:你希望View有一个颜色的切换动画;你希望可以使用3D旋转动画;你希望当动画停止时,View的位置就是当前的位置;这些View Animation都无法做到。这就是Property Animation产生的原因。
Drawable Animation叫帧动画,多个图片连续播放,类型gif,用法比较简单。
Property Animation叫做属性动画,故名思议就是通过改变对象的属性的方式实现动画效果,Property功能比另外两种都要强大,目前学会这一种动画,基本就够用了。属性动画本质上就是,动画的执行类来设置动画操作的对象的属性、持续时间,开始和结束的属性值,时间差值等,然后系统会根据设置的参数动态的变化对象的属性。下面就property属性动画举个栗子:
重点掌握两个核心类:
ObjectAnimator 动画的执行类(详见例子)
ValueAnimator 动画的执行类(相对复杂)
MainActivity中的代码:
/** * 属性动画(主要通过改变控制点的值,实现动画) */public class MainActivity extends AppCompatActivity { private ImageView img; private ObjectAnimator objectAnimator1; private ObjectAnimator objectAnimator2; private ObjectAnimator objectAnimator3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { img = (ImageView) findViewById(R.id.img); //下面的三个初始化,为了属性动画集合animatorSet()方法准备。 objectAnimator1 = ObjectAnimator.ofFloat(img, "alpha", new float[]{0.0f, 0.9f, 0.3f, 1.0f}); objectAnimator2 = ObjectAnimator.ofFloat(img, "rotation", new float[]{0f, 90f, 45f, 180f, 360f, 45f}); objectAnimator2.setDuration(2000); objectAnimator3 = ObjectAnimator.ofFloat(img, "translationY", new float[]{0f, 180f, 360f}); } //点击事件 public void onClick(View view) { switch (view.getId()) { case R.id.bt_alpha: alphaProperty(); break; case R.id.bt_rotate: rotateProperty(); break; case R.id.bt_set: animatorSet(); break; default: break; } } /** * 1.创建一个ObjectAnimator对象 * 2.设置动画点基本属性 * 3.调用动画的开启方法 */ //透明度动画 private void alphaProperty() { ObjectAnimator objectAnimatorAlpha = ObjectAnimator.ofFloat(img,//动画设置的控件 "alpha",//view中有的属性方法,此处是设置的透明度, // 该字符串一定要查询API中存在的属性(最好拷贝过来), // 后面的数组是改变该属性的数值,有的属性用的是float,有的是int,具体查询api new float[]{0.0f, 0.9f, 0.3f, 1.0f}//可变参数,对于属性值的改变 ); //设置动画持续时间 objectAnimatorAlpha.setDuration(2000); //设置动画重复次数 objectAnimatorAlpha.setRepeatCount(1); //设置动画重复类型,从头开始,原路返回等。 objectAnimatorAlpha.setRepeatMode(Animation.RESTART); //动画启动 objectAnimatorAlpha.start(); } //旋转动画 private void rotateProperty() { ObjectAnimator objectAnimatorRotate = ObjectAnimator.ofFloat(img, "rotation", new float[]{0f, 45f, 135f, 90f, 45f, 180f}); objectAnimatorRotate.setDuration(2000); objectAnimatorRotate.setRepeatCount(0); objectAnimatorRotate.setRepeatMode(Animation.REVERSE); objectAnimatorRotate.start(); } //创建一个属性动画集合 //AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等 private void animatorSet() { AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(objectAnimator1).with(objectAnimator2).with(objectAnimator3); animatorSet.setTarget(img); animatorSet.start(); }}
布局文件中的代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.myapplication.property.MainActivity" > <Button android:id="@+id/bt_alpha" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="属性动画透明度" /> <Button android:id="@+id/bt_rotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="属性动画旋转" /> <Button android:id="@+id/bt_set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="属性动画集合" /> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/rose" /></LinearLayout>
界面展示如下
1 0
- Property动画示例
- Property Animator 属性动画概述与示例
- Property Animation(属性动画)用法示例
- Android中属性动画Property Animation使用示例(四)
- Android中属性动画Property Animation使用示例(三)
- Android中属性动画Property Animation使用示例(二)
- Android中属性动画Property Animation使用示例(一)
- 动画(Property Animation)(闪闪星光示例+知识点)
- property动画
- Android Property Animation示例
- Android Property Animation动画
- Android Property Animation动画
- Property Animation(属性动画)
- Android Property Animation动画
- android动画-Property Animation
- 属性动画(Property Animation)
- 属性动画(Property Animation)
- android属性动画Property
- OC内存管理
- 博弈各类题目
- hdoj 1588 学好线代与数学
- 轻巧的jQuery提示框插件Tipso演示
- 如何在Eclipse中一个简单程序
- Property动画示例
- 每题错三次,三次会一题
- U盘里面的东西看不到了
- Androidx学习笔记(73)--- 在内存中创建图片的副本
- group by 和order by 的区别
- android的checkBox属性
- qt在嵌入式板子上的移植
- 推荐系统
- Android卡片式布局的简单实现方法