A012-anim资源

作者: IT_xiao小巫 | 来源:发表于2015-09-17 09:09 被阅读76次

anim资源这里特指Android中的View Animation(视图动画),然而视图动画分为:

  • Tween Animation(补间动画)
  • Frame Animation(逐帧动画)

Tween Animation

文件路径:res/anim/filename.xml
这样的一个资源指向一个Animation对象
资源引用:

  • Java中引用:R.anim.filename
  • XML中引用:@anim/filename

语法

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@[package:]anim/interpolator_resource"
    android:shareInterpolator=["true" | "false"] >
    <alpha
        android:fromAlpha="float"
        android:toAlpha="float" />
    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float" />
    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float" />
    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float" />
    <set>
        ...
    </set>
</set

<set> <alpha> <scale> <translate> <rotate>
这些标签都可以作为根标签,代表一种动画,其中<set> 可以包含以上所有标签,我们可以通过 <set> 和其他标签组合设计多种多样的动画效果。
下面逐个解析标签的作用:

<set>

代表一个AnimationSet
属性:

  • android:interpolator (插值器)
  • android:shareInterpolator(是否在所有的元素中分享插值器)

<alpha>

代表一个AlphaAnimation,淡入淡出动画
属性:

  • android:fromAlpha(开始透明度,0.0-完全透明 1.0-不完全透明)
  • android:toAlpha(结束透明度,0.0-完全透明 1.0-不完全透明)

<scale>

代表一个ScaleAnimation,缩放动画
属性:

  • android:fromXScale(开始时X方向上相对自身的缩放比例,1.0表示没有变化)
  • android:toXScale(结束时X方向上相对自身的缩放比例)
  • android:fromYScale(开始时Y方向上相对自身的缩放比例)
  • android:toYScale(结束时Y方向上相对自身的缩放比例)
  • android:pivotX(缩放X轴位置,50表示绝对位置,50%表示相对自身,50%p表示相对父控件)
  • android:pivotY(缩放Y轴位置,取值同上)

<translate>

代表一个TranslateAnimation,偏移动画

  • android:fromXDelta(动画起始时 X坐标上的位置 )
  • android:toXDelta(动画结束时 X坐标上的位置)
  • android:fromYDelta(动画起始时 Y坐标上的位置 )
  • android:toYDelta(动画结束时 Y坐标上的位置 )

取值举例:
android:toXDelta="100%",表示自身的100%,也就是从View自己的位置开始
android:toXDelta="80%p",表示父层View的80%,是以它父层View为参照的

<rotate>

代表一个RotateAnimation, 旋转动画
属性:

  • android:fromDegrees(动画开始时角度)
  • android:toDegrees(动画结束时角度)
  • android:pivotX(旋转中心的X坐标)
  • android:pivotY(旋转中心的Y坐标)

补间动画例子:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
    </set>
</set>

代码中使用:

ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);

Frame Animation

文件路径:res/drawable/filename.xml
这样的一个资源指向一个AnimationDrawable对象
资源引用:

  • Java中引用:R.drawable.filename
  • XML中引用:@drawable/filename

语法

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource_name"
        android:duration="integer" />
</animation-list>

属性:

  • android:oneshot(是否只播放一次)

例子:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

一个item表示一帧,一帧对应一张图片,duration表示持续的时间。

代码中使用:

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);

rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
rocketAnimation.start();

本节课主要讲解了Android中anim资源的知识点和具体使用方法,如需要获取更详细的资料,可以访问以下地址:
http://www.android-doc.com/guide/topics/resources/animation-resource.html

欢迎关注我的公众号:wwjblog

相关文章

  • A012-anim资源

    anim资源这里特指Android中的View Animation(视图动画),然而视图动画分为: Tween A...

  • 资源呀资源

    为啥今天资源不好要呢,走了大半天也没要到一个。走到海枯石烂也没要到。好奇怪的一天。睡觉明天加油

  • 想要获得好的的职场发展,你盘点过你有的资源吗?

    资源分为显性资源和隐性资源。 其中显性资源包括了:财产资源,人脉资源、时间资源。 隐性资源包括了:健康资源和家庭关...

  • 读书分享

    学会整合,我们每个人可以整合的资源包括:时间资源,学识资源,人际资源,健康资源,金钱资源。还有网络资源,硬件资源。

  • 项目管理知识9

    资源管理 资源包括很多:人力资源,货币资源,政治资源等资源管理包括识别,获取和管理完成项目所需要的各类资源。 资源...

  • 2017-09-17

    资源,资源,努力要资源。

  • 发现资源,舍弃资源

    每天都会留一些时间来批阅朋友圈,和朋友们的联系不甚很多,但是通过看朋友圈,还是能够从中了解大家的动态,也能间接学习...

  • 没有资源,创造资源

    小岛活动开启,发现申请时间较长,昨天突然想,专题我能达到我优质资源共享的目的,至少自己可以将资源逐步整合起来。 由...

  • 06:项目管理进度21

    资源优化(P211)资源优化技术----根据资源供需情况,来调整进度模型的技术。包括“资源平衡”和“资源平滑”资源...

  • 穷人没资源富人有资源,怎样才能有资源

    穷人没资源富人有资源,怎样才能有资源穷人没有丰富资源或只有少量的资源,而富人有大量的资源,穷人因为缺少资源而贫穷,...

网友评论

    本文标题:A012-anim资源

    本文链接:https://www.haomeiwen.com/subject/jkjbcttx.html