安卓动画入门教程 Animation in Android(2)
2016-08-28 00:25
477 查看
使用ViewPropertyAnimator
我们可以简简单单的使用ViewPropertyAnimator 系统,这个是建立在ObjectAnimator之上的。这个提供了一个更快的展示动画,提供了一个简单方法去应用动画不使用支持库
如果我们不去适配3.0之前的设备,我们可以直接在view上运用animate方法Button btnExample = (Button) findViewById(R.id.btnExample); btnExample.animate().alpha(0.2f).xBy(-100).yBy(100);
animate 方法有众多的属性,大部分属性都ViewPropertyAnimator有对应的属性。比如说旋转,扩展大小,换位置等等,比如说下面这个复杂一点的例子
btnExample.animate().alpha(0.5f).rotation(90f). scaleX(2).xBy(100).yBy(100).setDuration(1000).setStartDelay(10). setListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { Toast.makeText(MainActivity.this, "Started...", Toast.LENGTH_SHORT).show(); }; });
它支持多个动画的属性,你可以平行的设置他,比如说透明度的变化、喧杂混等等。这里我们同来那个可以设置周期,延迟开始动画甚至是设置一个listener。
使用支持库
如果你打算在3.0之前的是悲伤使用,你可以使用支持库的静态方法ViewCompat.animate,如果你是用sudio,你首先要加上依赖compile 'com.android.support:support-v4:23.1.0'
我们现在可以这样做
Button btnExample = (Button) findViewById(R.id.btnExample); ViewCompat.animate(btnExample).alpha(0.2f).xBy(-100).yBy(100);
使用xml
我们可以使用xml来定义动画属性,我需要做的只是创建一个xml文件燃火把动画的属性加上,比如说我们打算给button加上淡出的效果,我们可以把xml加入res/animator/fade_out.xml:<?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:propertyName="alpha" android:duration="1000" android:valueTo="0" />
在activity中这样使用
Animator anim = AnimatorInflater.loadAnimator(this, R.animator.fade_out); anim.setTarget(btnExample); anim.start();
定义一系列的动画
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together" > <objectAnimator android:propertyName="alpha" android:valueTo="0.5" > </objectAnimator> <objectAnimator android:propertyName="rotation" android:valueTo="90.0" > </objectAnimator> <objectAnimator android:propertyName="scaleX" android:valueTo="2.0" > </objectAnimator> <objectAnimator android:propertyName="translationX" android:valueTo="100.0" > </objectAnimator> <objectAnimator android:propertyName="translationY" android:valueTo="100.0" > </objectAnimator> </set>
Animator anim = AnimatorInflater.loadAnimator(this, R.animator.multi_button); anim.setTarget(tvBlah); anim.setDuration(1000); anim.setStartDelay(10); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { Toast.makeText(MainActivity.this, "Started...", Toast.LENGTH_SHORT).show(); }; }); anim.start();
结果如下
![](https://i.imgur.com/0AB0E2Q.gif)
自定义动画
在某些情境下,除了直接给一个对象指定动画外,我们还需要对每一步进行细微的控制,在这种情况下,我们可以使用ValueAnimator,建立一个监听者去进行动画的调整// Construct the value animator and define the range ValueAnimator valueAnim = ValueAnimator.ofFloat(0, 1); // Animate over the course of 700 milliseconds valueAnim.setDuration(700); // Choose an interpolator valueAnim.setInterpolator(new DecelerateInterpolator()); // Define how to update the view at each "step" of the animation valueAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float animatedValue = (float) animation.getAnimatedValue(); // Use the animated value to affect the view } }); // Start the animation if not already running if (!valueAnim.isStarted()) { valueAnim.start(); }
看官方文档可以去过的更多的信息,注意,在大多数情况下我们可以使用ObjectAnimator 来展示动画,但是value animator更底层,我们可以在不想直接对一个对象增加动画属性的时候去使用它。
相关文章推荐
- 安卓动画入门教程 Animation in Android(1)
- android最全学习资料及路线整理分享 (安卓视频教程 从入门到大师 android开发环境搭建 windows和MAC 安卓源码大全4000套)
- Android入门教程五之使用AndroidStudio+SDK开发安卓APP
- Android 安卓开发入门教程,
- Android动画入门教程之kotlin
- Android基础入门教程——8.4.3 Android动画合集之属性动画-初见
- Android入门教程三之使用Eclipse+ADT+SDK开发安卓APP
- 我的Android前生今世之缘-学习经验-安卓入门教程(六)
- Android基础入门教程——8.4.4 Android动画合集之属性动画-又见
- Android基础入门教程——8.4.1 Android动画合集之帧动画
- Word入门动画教程82:图形对象的对齐与分布
- Expression Blend实例中文教程(10) - 缓冲动画快速入门Easing 推荐
- Expression Blend实例中文教程(8) - 动画设计快速入门StoryBoard
- Expression Blend实例中文教程(10) - 缓冲动画快速入门Easing
- Expression Blend实例中文教程(10) - 缓冲动画快速入门Easing
- Expression Blend实例中文教程(7) - 动画基础快速入门Animation
- HSRP 入门教程图解 (案例、动画过程、配套仿真)
- Expression Blend实例中文教程(7) - 动画基础快速入门Animation
- Expression Blend实例中文教程(7) - 动画基础快速入门Animation
- Android 模拟器入门教程【转】