动画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中声明的能力:

以下的样例顺序的播放两个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中定义动画的更多相关文章

  1. Android——inflate 将一个xml中定义的布局找出来

    通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组 ...

  2. applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.

    我用的jeesite框架,在使用定时任务时,出现一些问题,,1.在windows上项目可以在tomcat下,运行2.在linux下项目在tomcatgh下,却出现问题: 15-Dec-2017 15: ...

  3. Android strings.xml中定义字符串显示空格

    <string name="str">字 符 串</string> 其中   就表示空格.如果直接在里面键入空格,无论多少空格都只会显示一个. 用的XML转 ...

  4. Tomcat web.xml中定义了文件扩展名到MIME类型的对应关系

    Tomcat在返回静态资源时,会根据资源文件的扩展名产生对应的content-type头(也即MIME类型)添加到response header中. 在Tomcat的web.xml规定了扩展名及相应M ...

  5. 在properties.xml中定义变量,在application.xml中取值问题

    如果为application.xml中的变量赋默认值,同时又在properties.xml中变量赋值,而加载后是取不到properties.xml中的值的问题. 解决这个问题需要加上黑体部分配置: & ...

  6. Android使用xml中定义的动画效果

    Animation animation = AnimationUtils.loadAnimation(getActivity(), R.anim.zqrl_out); animation.setFil ...

  7. Android各种颜色dawable.xml中定义

    < drawable name="white">#FFFFFF< /drawable>< !--白 --> < drawable name ...

  8. 利用XMl标签定义动画

    渐变透明度动画 <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android=&qu ...

  9. 在strings.xml中定义html标签

    在项目的开发过程中,需要用到把html内容放到strings.xml文件中,然后再读取到TextView中.原本以为像普通文本一样直接SetText就行了,结果行不通,大大超出我的预料.经过网上搜索, ...

随机推荐

  1. 跑RFCN

    按照这个来http://blog.csdn.net/sinat_30071459/article/details/53202977

  2. Crashlytics Android 异常报告统计管理

    http://www.infoq.com/cn/articles/crashlytics-crash-statistics-tools 简介 Crashlytic 成立于2011年,是专门为移动应用开 ...

  3. IOS学习笔记37——ViewController生命周期详解

    在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它.ViewContro ...

  4. 用Jenkins构建项目实战

    登录Jenkins,新建任务 输入一个任务名称,选择一个项目类型 使用自定义工作空间:使该项目独立于系统的工作空间 自动从Git下载源码,点击添加可以增加凭证 日程表的参数: 第一个参数代表的是分钟 ...

  5. RHEL6.5 DHCP服务器搭建

    RHEL6.5 DHCP服务器搭建: DHCP服务器是用来分配给其它客户端IP地址用的,在RHEL 6.5中DHCP服务器搭建方法如下: 第一步,通过yum安装dhcp服务: 命令:yum insta ...

  6. pwntools使用简介3

    连接 本地process().远程remote().对于remote函数可以接url并且指定端口. IO模块 下面给出了PwnTools中的主要IO函数.这个比较容易跟zio搞混,记住zio是read ...

  7. LeetCode(27)Remove Element

    题目 Given an array and a value, remove all instances of that value in place and return the new length ...

  8. 【HIHOCODER 1601】 最大得分(01背包)

    描述 小Hi和小Ho在玩一个游戏.给定一个数组A=[A1, A2, ... AN],小Hi可以指定M个不同的值S1,S2, S3 ... SM,这样他的总得分是 ΣSi × count(Si).(co ...

  9. CSS3 pointer-events:none 让你摆脱事件的烦恼

    以前没遇到这个属性,在一个偶然的博文下发现该属性真的好用,你是否遇到过写鼠标移入显示文本的效果时,鼠标在元素内的每一次移动都会造成要显示文本的闪烁或是突然的消失?只要在被控制的元素中加上这个属性完美解 ...

  10. 【Ts 4】ftp服务器搭建

    一.为什么需要ftp? 分布式环境一般都有一个专门的图片服务器存放图片.我们使用虚拟机搭建一个专门的服务器来存放图片.在此服务器上安装一个nginx来提供http服务,安装一个ftp服务器来提供图片上 ...