安卓动画入门教程 Animation in Android(2)
使用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)相关推荐
- 安卓动画入门_网络动画入门
安卓动画入门 无论您是刚刚开始使用基础知识还是想探索更高级的技术,我们已经构建了完整的指南来帮助您学习CSS和为CSS 设置动画 . 网络动画入门 近年来,Motion已成为Web设计领域中非常重要的 ...
- 安卓开发入门教程-UI控件_EditText
什么是EditText EditText是用于进行文本输入的UI控件. 基础样例 1.普通输入 效果图 代码 <EditTextandroid:layout_width="wrap_c ...
- Android基础入门教程——7.4 Android调用WebService
Android基础入门教程--7.4 Android调用WebService 标签(空格分隔): Android基础入门教程 本节引言: 经过前面的学习,数据请求,数据解析,文件上传下载等,应该满足大 ...
- Android 安卓开发入门教程,
Android开发使用控件入门 V6.0版 一.环境搭建: 1. 下载Android SDK (1) http://developer.android.com/sdk/index.html,该网址访问 ...
- 安卓开发入门教程-安装开发工具(Android Studio)
本文简介 搭建Android Studio安卓开发环境. 目标用户 安卓初学者 操作步骤 一.下载Android Studio 下载迅雷加速下载(网速快的,直接略过本步骤).预计耗时:1分钟 在浏览器 ...
- android studio 安卓制作app入门教程,Android开发:AndroidStudio安卓APP入门教程
轻松学会Android,让工作主动找你 即使你是零基础,也能掌握真正的技术 低风险.低投入,随时随地学习 全方位的技术支持:高清视频.源码.资料.技术指导 课程目录 章节1:初识篇 课时1开发环境搭建 ...
- android 获取控件高度_安卓开发入门教程UI控件_ImageView
什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...
- android 获取控件高度_安卓开发入门教程UI控件_ProgressBar
什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...
- 安卓开发入门教程!Android高级工程师必看系列,赶紧收藏!
前言 Android开发前几年火爆一时,市场饱和后Android程序员每一名程序员都想成为架构师,但这期间,需要付出的辛苦和努力远超过我们的想象. 我对Android工程师的调研发现:97% 的And ...
- android ui组件开发教程,安卓开发入门教程-UI控件_Switch
什么是Switch Switch是一种用于显示开关状态的UI控件. 基础样例 1.普通开关 效果图 代码 android:layout_width="wrap_content" a ...
最新文章
- 一个有趣的实验:用0.1f 替换 0,性能提升 7 倍!
- java链式栈_Java栈之链式栈存储结构实现
- python安全编码问题_浅谈Python中的编码问题
- Python代码打包成exe文件
- 零基础可以学习java吗_零基础真的可以学习java吗?
- 蓝牙小电池图标_提高MacBook电池寿命的15个技巧
- 休眠后gpio状态_STM32中GPIO的8种工作模式总结
- 怎么创建PHP函数,如何创建 PHP 函数
- CSS 的导入方式 (link or import ?)
- mysql clr_SQLCLR Tips: 配置数据库使其支持SQLCLR
- 《推荐系统笔记(一)》线性回归方法的数学推导
- java无头浏览器_Java + Selenium 无头浏览器模式
- 非技术/汇报措辞:你懂得怎样向领导汇报吗(审阅、审批、批阅、批示、查阅)
- cmd命令打开文本文档_win7定时关机命令 
【处置技巧】
- 职场上被人针对要不要告诉领导
- 【office】Visio 2016 画大括号(花括号) + 调整花括号尖角居中
- strcpy 运用及其实现
- javaweb出现Exception invoking method manageApp java.lang.IllegalStateException: ContainerBase.addChild
- 红米note9 android10,红米note9pro和红米note10pro区别
- matlab中 图像是几维的,matlab中关于图像的维数
热门文章
- CSS Sprite雪碧图
- win10系统文件拖拽卡顿_win10系统下移动鼠标卡顿如何解决
- mysql mpm_zabbix+mysql mpm监控
- Jquery获取所有子元素
- 计算机主机有异响,电脑主机有异响怎么办 电脑主板有异响解决方法【详解】...
- Mac之系统中各个文件夹详细介绍
- 微信跳转手机默认浏览器实现微信扫一扫功能扫码直接下载apk
- 1075c语言程序设计答案,山东理工大学ACM平台题答案关于C语言 1075 Doubles
- 【Axure原型分享】冻结首行首列的中继器表格
- java面试宝典-抱你过岸