A012-anim资源

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

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 MASM 汇编语言编写的程序,可以实现上述功能: ``` ; 定义数据区 dat SEGMENT A DW 0A012H B DW 01024H C DW 0FFFFH MAX DW ? dat ENDS ; 定义代码区 code SEGMENT ASSUME CS:code, DS:dat START: MOV AX, dat ; 将数据区地址存入 AX MOV DS, AX ; 将 AX 中的地址存入 DS MOV AX, A ; 将 A 的值存入 AX MOV BX, B ; 将 B 的值存入 BX CMP AX, BX ; 比较 AX 和 BX JGE CHECK_C ; 如果 AX >= BX 则跳转到 CHECK_C MOV AX, BX ; 否则将 BX 的值存入 AX CHECK_C: MOV BX, C ; 将 C 的值存入 BX CMP AX, BX ; 比较 AX 和 BX JGE STORE_MAX ; 如果 AX >= BX 则跳转到 STORE_MAX MOV AX, BX ; 否则将 BX 的值存入 AX STORE_MAX: MOV MAX, AX ; 将 AX 的值存入 MAX MOV AX, 4C00H ; 结束程序 INT 21H code ENDS END START ``` 程序首先定义了一个数据区,其中包含三个有符号数 A012H、1024H、FFFFH,以及一个用于保存最大值的字变量 MAX。然后定义了一个代码区,将数据区的地址存入 DS 寄存器中,并使用 MOV 指令将 A 和 B 的值分别存入 AX 和 BX 寄存器中,然后使用 CMP 指令比较两个寄存器的值,如果 AX >= BX,则跳转到 CHECK_C 标签处。否则将 BX 的值存入 AX 中。然后使用 MOV 指令将 C 的值存入 BX 寄存器中,再次使用 CMP 指令比较 AX 和 BX 的值,如果 AX >= BX,则跳转到 STORE_MAX 标签处。否则将 BX 的值存入 AX 中。最后使用 MOV 指令将 AX 的值存入 MAX 变量中,然后使用 INT 21H 中断结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小巫技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值