android动画具体解释六 XML中定义动画
动画View
属性动画系统同意动画View对象并提供非常多比view动画系统更高级的功能。view动画系统通过改变绘制方式来变换View对象,view动画是被view的容器所处理的,由于View本身没有要操控的属性。结果就是View被动画了。但View对象本身并没有变化。
在Android3.0中,新的属性和对应的getter和setter方法被增加以克服此缺点。
属性动画系统能够通过改变View对象的真实属性来动画Views。
并且。View也会在其属性改变时自己主动调用invalidate()方法来刷新屏幕。View类中的能促进属性动画能力的的新属性有:
translationX和translationY:这两个属性控制View的位置。它们是View被layout容器所设置的坐标位置的增量。
rotation,rotationX,和rotationY:这些属性控制着在在2D(rotation属性)和3D上的旋转。
scaleX和scaleY:这些属性控制View的2D缩放。
pivotX和pivotY:这些属性控制着中心点的位置,旋转和缩放变化对是环绕它进行的。默认下。中心点在对象的中心位置。
x和y:这些代表了View在container中的终于位置。它是left和top与translationX和translationY的和。
alpha:代表了View的透明度。1(不透明)是默认值,0表示全然透明(看不见了)。
要动画一个View对象的属性。比方它的颜色或旋转值,你全部须要做的就是创建一个属性animator 然后指定你想动画的View属性。比如:
ObjectAnimator.ofFloat(myView,"rotation", 0f, 360f);
用ViewPropertyAnimator进行动画
ViewPropertyAnimator提供了一个同一时候动画某个View中的多个属性的简便方法,仅仅需使用一个Animator对象。它的行为非常像ObjectAnimator,由于它改动了真正的view属性,可是它对于同一时候动画多个属性更在行。另外。使用ViewPropertyAnimator的代码更加简洁易懂。以下的代码片段演示了当同一时候动画一个View的x和y属性时使用多个ObjectAnimator对象、单个ObjectAnimator、和ViewPropertyAnimator的不同。
多个ObjectAnimator 对象
ObjectAnimatoranimX = ObjectAnimator.ofFloat(myView, "x", 50f); ObjectAnimatoranimY = ObjectAnimator.ofFloat(myView, "y", 100f); AnimatorSetanimSetXY = new AnimatorSet(); animSetXY.playTogether(animX,animY); animSetXY.start();
一个ObjectAnimator
PropertyValuesHolderpvhX = PropertyValuesHolder.ofFloat("x", 50f);
PropertyValuesHolderpvhY = PropertyValuesHolder.ofFloat("y", 100f);
ObjectAnimator.ofPropertyValuesHolder(myView,pvhX, pvyY).start();
ViewPropertyAnimator
myView.animate().x(50f).y(100f);
在XML中声明动画
属性动画系统使你能够使用XML声明属性动画而不用写代码。
通过在XML中定义动画。你能够轻易的在多个activity中重用你的动画,并且能够更easy的改动动画顺序。
为了区分使用了新的属性动画API和使用了旧的view动画框架的文件。从Android3.1開始,你应该将属性动画XML文件保存到res/animator/目录下(而不是res/anim/)。使用animator时。其目录的名字是可选的。可是当你要使用EclipseADT plugin (ADT 11.0.0+)中的layout编辑工具时就是必须的了,由于ADT仅仅去res/animator/目录下搜寻属性动画资源。
以下的属性动画类具有支持XML中声明的能力:
ValueAnimator- <animator>
ObjectAnimator- <objectAnimator>
AnimatorSet- <set>
以下的样例顺序的播放两个objectanimation动画的集合,第一个也是一个set。这个子set同一时候播放两个objectanimation:
<setandroid:ordering="sequentially"> <set> <objectAnimator android:propertyName="x" android:duration="500" android:valueTo="400" android:valueType="intType"/> <objectAnimator android:propertyName="y" android:duration="500" android:valueTo="300" android:valueType="intType"/> </set> <objectAnimator android:propertyName="alpha" android:duration="500" android:valueTo="1f"/> </set>
要播放此动画,你必须在你的代码中inflateXML 资源成一个AnimatorSet对象,然后设置全部动画的目标对象。再開始动画。调用setTarget()为全部的子集AnimatorSet设置单个对象非常easy。以下的代码演示了怎样做:
AnimatorSetset = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator); set.setTarget(myObject); set.start();
property_animator是XML文件的名字。
android动画具体解释六 XML中定义动画的更多相关文章
- Android——inflate 将一个xml中定义的布局找出来
通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组 ...
- applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.
我用的jeesite框架,在使用定时任务时,出现一些问题,,1.在windows上项目可以在tomcat下,运行2.在linux下项目在tomcatgh下,却出现问题: 15-Dec-2017 15: ...
- Android strings.xml中定义字符串显示空格
<string name="str">字 符 串</string> 其中 就表示空格.如果直接在里面键入空格,无论多少空格都只会显示一个. 用的XML转 ...
- Tomcat web.xml中定义了文件扩展名到MIME类型的对应关系
Tomcat在返回静态资源时,会根据资源文件的扩展名产生对应的content-type头(也即MIME类型)添加到response header中. 在Tomcat的web.xml规定了扩展名及相应M ...
- 在properties.xml中定义变量,在application.xml中取值问题
如果为application.xml中的变量赋默认值,同时又在properties.xml中变量赋值,而加载后是取不到properties.xml中的值的问题. 解决这个问题需要加上黑体部分配置: & ...
- Android使用xml中定义的动画效果
Animation animation = AnimationUtils.loadAnimation(getActivity(), R.anim.zqrl_out); animation.setFil ...
- Android各种颜色dawable.xml中定义
< drawable name="white">#FFFFFF< /drawable>< !--白 --> < drawable name ...
- 利用XMl标签定义动画
渐变透明度动画 <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android=&qu ...
- 在strings.xml中定义html标签
在项目的开发过程中,需要用到把html内容放到strings.xml文件中,然后再读取到TextView中.原本以为像普通文本一样直接SetText就行了,结果行不通,大大超出我的预料.经过网上搜索, ...
随机推荐
- 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind
在使用SpringMVC测试的时候, 遇到了这样一个问题, 说的是端口已经被使用了. 代理抛出异常错误: java.rmi.server.ExportException: Port already i ...
- Android Studio中删除无效的字符串资源
1.定位到当前项目中的strings.xml文件 1.菜单栏找到"Analyze"->"Run Inspection By Name..."->输入 ...
- git 超时 时长 设置?
[Pipeline] { (Checkout) [Pipeline] checkout > git.exe rev-parse --is-inside-work-tree # timeout=1 ...
- 时间函数datetime time
time模块 time翻译过来就是时间,有我们其实在之前编程的时候有用到过. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取 ...
- spoj-TSUM Triple Sums
题目描述 题解: 很吊的容斥+$FFT$,但是并不难. 首先,由于有重复,我们要容斥. 怎么办? 记录三个多项式, 只取一个:$w1$; 相同物体拿两个:$w2$; 相同物体拿三个:$w3$; 然后答 ...
- c++_凑算式(最新方法)
凑算式 B DEFA + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比如:6+8/3 ...
- Django之学员管理三
Django之学员管理三 web框架的本质: 本质是客户端和服务端的交互.用socket实现. socket客户端(浏览器) 2.发送ip和端口,http://www.baidu.com:80/ind ...
- 基于flask的网页聊天室(二)
基于flask的网页聊天室(二) 前言 接上一次的内容继续完善,今天完成的内容不是很多,只是简单的用户注册登录,内容具体如下 具体内容 这次要加入与数据哭交互的操作,所以首先要建立相关表结构,这里使用 ...
- [NOI2001] 炮兵阵地 (状压Dp经典例题)
如果您的电脑比较优秀能在 1sec 内跑过 2^1000 的时间复杂度,不妨你可以尝试一下,其实实际时间复杂度远远少于 2^1000,作为骗分不错的选择QAQ,然后我们来分析一下正解: 很显然此题是一 ...
- Java学习之Math类理解
Math类包含用于几何和三角运算的所有浮点函数,以及一些用于通用目的的方法.Math类定义了两个double常量:E(约等于2.72)和PI(约等于3.14) 1.三角函数 表中的方法接收double ...