使用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() {@Overridepublic 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() {@Overridepublic void onAnimationStart(Animator animation) {Toast.makeText(MainActivity.this, "Started...", Toast.LENGTH_SHORT).show();};
});
anim.start();

结果如下

自定义动画

在某些情境下,除了直接给一个对象指定动画外,我们还需要对每一步进行细微的控制,在这种情况下,我们可以使用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() {@Overridepublic 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(2)相关推荐

  1. 安卓动画入门_网络动画入门

    安卓动画入门 无论您是刚刚开始使用基础知识还是想探索更高级的技术,我们已经构建了完整的指南来帮助您学习CSS和为CSS 设置动画 . 网络动画入门 近年来,Motion已成为Web设计领域中非常重要的 ...

  2. 安卓开发入门教程-UI控件_EditText

    什么是EditText EditText是用于进行文本输入的UI控件. 基础样例 1.普通输入 效果图 代码 <EditTextandroid:layout_width="wrap_c ...

  3. Android基础入门教程——7.4 Android调用WebService

    Android基础入门教程--7.4 Android调用WebService 标签(空格分隔): Android基础入门教程 本节引言: 经过前面的学习,数据请求,数据解析,文件上传下载等,应该满足大 ...

  4. Android 安卓开发入门教程,

    Android开发使用控件入门 V6.0版 一.环境搭建: 1. 下载Android SDK (1) http://developer.android.com/sdk/index.html,该网址访问 ...

  5. 安卓开发入门教程-安装开发工具(Android Studio)

    本文简介 搭建Android Studio安卓开发环境. 目标用户 安卓初学者 操作步骤 一.下载Android Studio 下载迅雷加速下载(网速快的,直接略过本步骤).预计耗时:1分钟 在浏览器 ...

  6. android studio 安卓制作app入门教程,Android开发:AndroidStudio安卓APP入门教程

    轻松学会Android,让工作主动找你 即使你是零基础,也能掌握真正的技术 低风险.低投入,随时随地学习 全方位的技术支持:高清视频.源码.资料.技术指导 课程目录 章节1:初识篇 课时1开发环境搭建 ...

  7. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

  8. android 获取控件高度_安卓开发入门教程UI控件_ProgressBar

    什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...

  9. 安卓开发入门教程!Android高级工程师必看系列,赶紧收藏!

    前言 Android开发前几年火爆一时,市场饱和后Android程序员每一名程序员都想成为架构师,但这期间,需要付出的辛苦和努力远超过我们的想象. 我对Android工程师的调研发现:97% 的And ...

  10. android ui组件开发教程,安卓开发入门教程-UI控件_Switch

    什么是Switch Switch是一种用于显示开关状态的UI控件. 基础样例 1.普通开关 效果图 代码 android:layout_width="wrap_content" a ...

最新文章

  1. 一个有趣的实验:用0.1f 替换 0,性能提升 7 倍!
  2. java链式栈_Java栈之链式栈存储结构实现
  3. python安全编码问题_浅谈Python中的编码问题
  4. Python代码打包成exe文件
  5. 零基础可以学习java吗_零基础真的可以学习java吗?
  6. 蓝牙小电池图标_提高MacBook电池寿命的15个技巧
  7. 休眠后gpio状态_STM32中GPIO的8种工作模式总结
  8. 怎么创建PHP函数,如何创建 PHP 函数
  9. CSS 的导入方式 (link or import ?)
  10. mysql clr_SQLCLR Tips: 配置数据库使其支持SQLCLR
  11. 《推荐系统笔记(一)》线性回归方法的数学推导
  12. java无头浏览器_Java + Selenium 无头浏览器模式
  13. 非技术/汇报措辞:你懂得怎样向领导汇报吗(审阅、审批、批阅、批示、查阅)
  14. cmd命令打开文本文档_win7定时关机命令 【处置技巧】
  15. 职场上被人针对要不要告诉领导
  16. 【office】Visio 2016 画大括号(花括号) + 调整花括号尖角居中
  17. strcpy 运用及其实现
  18. javaweb出现Exception invoking method manageApp java.lang.IllegalStateException: ContainerBase.addChild
  19. 红米note9 android10,红米note9pro和红米note10pro区别
  20. matlab中 图像是几维的,matlab中关于图像的维数

热门文章

  1. CSS Sprite雪碧图
  2. win10系统文件拖拽卡顿_win10系统下移动鼠标卡顿如何解决
  3. mysql mpm_zabbix+mysql mpm监控
  4. Jquery获取所有子元素
  5. 计算机主机有异响,电脑主机有异响怎么办 电脑主板有异响解决方法【详解】...
  6. Mac之系统中各个文件夹详细介绍
  7. 微信跳转手机默认浏览器实现微信扫一扫功能扫码直接下载apk
  8. 1075c语言程序设计答案,山东理工大学ACM平台题答案关于C语言 1075 Doubles
  9. 【Axure原型分享】冻结首行首列的中继器表格
  10. java面试宝典-抱你过岸