Android的应用资源-动画资源基本语法

前言

这一一系列的关于android官网的知识的学习,通过博客自己记录一下,

资源的类型

  • 动画资源
    定义预先确定的动画,补间动画保存在res/anim中 并通过R.anim类访问,桢动画保存在res/drawable 中并通过R.drawable类访问。

  • 颜色状态列表资源
    定义根据View状态而变化的颜色资源,保存在res/color中并且通过R.color 类来访问

  • 可绘制资源
    使用位图或XML定义的各种图形,保存在res/drawable中通过R.drawable类访问

  • 布局资源
    定义应用的界面布局,保存在res/layout中并通过R.layout类来访问

  • 菜单资源
    定义应用的菜单内容,保存在res/menu中并通过R.menu类访问

  • 字符串资源
    定义字符串,字符串数组和复数形式保存在res/values中通过 R.string ,R.array等类访问。

  • 样式资源
    定义界面元素的外观和格式。保存在 res/values/ 中并通过 R.style 类访问。

  • 字体资源
    在 XML 中定义字体系列并包含自定义字体。保存在 res/font/ 中并通过 R.font 类访问。

  • 更多资源类型
    将其他原始值定义为静态资源,具体包括:
    Bool
    包含布尔值的 XML 资源。
    颜色
    包含颜色值(十六进制颜色)的 XML 资源。
    维度
    包含维度值(及度量单位)的 XML 资源。
    ID
    为应用资源和组件提供唯一标识符的 XML 资源。
    整数
    包含整数值的 XML 资源。
    整数数组
    提供整数数组的 XML 资源。
    类型化数组
    提供 TypedArray(可用于可绘制对象数组)的 XML 资源。

动画

  • 动画资源

属性动画:通过使用Animator在设定的时间段内修改对象的属性值来创建动画
视图动画:使用视图动画的时候可以创建两种类型的动画

  1. 补间动画 通过使用Animation 对单张图片执行一系列转化来创建动画
  2. 桢动画 通过使用AnimatorDrawable 按顺序显示一系列图片来创建动画
  • 属性动画具体的使用语法

         <set
         指定此集合中动画的播放顺序
      android:ordering=["together" | "sequentially"]>
         在特定的一段时间内为对象的特定属性创建动画
        <objectAnimator
             属性动画操作的属性
            android:propertyName="string"
            动画的持续时间
            android:duration="int"
            动画的开始数值
            android:valueFrom="float | int | color"
            动画的结束数值
            android:valueTo="float | int | color"
            调用start之后延迟的毫秒数
            android:startOffset="int"
            动画的重复次数
            android:repeatCount="int"
            动画的重复模式
            android:repeatMode=["repeat" | "reverse"]
            android:valueType=["intType" | "floatType"]/>
           在指定的时间段内执行动画。代表 ValueAnimator。
        <animator
            android:duration="int"
            android:valueFrom="float | int | color"
            android:valueTo="float | int | color"
            android:startOffset="int"
            android:repeatCount="int"
            android:repeatMode=["repeat" | "reverse"]
            android:valueType=["intType" | "floatType"]/>

        <set>
            ...
        </set>
    </set>


  • 属性动画Android中的具体使用
 属性动画文件
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <set>
        <objectAnimator
            android:duration="500"
            android:propertyName="x"
            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:valueFrom="0.6f"
        android:valueTo="0f"/>
</set>

activity中的代码

  val set = AnimatorInflater.loadAnimator(this, R.animator.animator_file).apply {
            setTarget(button)
            start()
        }
  • 补间动画具体的使用语法
Animation 的XML属性
  android:detachWallpaper	窗口动画的特殊选项:如果此窗口位于墙纸的顶部,请不要使用该墙纸设置动画。
  android:duration	动画运行的时间(以毫秒为单位)。
  android:fillAfter	设置为true时,动画结束后将应用动画变换。
  android:fillBefore	设置为true或未将fillEnabled设置为true时,将在开始动画之前应用动画转换。
  android:fillEnabled	设置为true时,将考虑fillBefore的值。
  android:interpolator	定义用于平滑动画运动的插值器。
  android:repeatCount	定义动画应重复多少次。
  android:repeatMode	定义当动画到达终点并且重复计数大于0或无限时的动画行为。
  android:startOffset	一旦达到开始时间,动画运行之前的毫秒数延迟。
  android:zAdjustment	允许在动画期间调整要动画的内容的Z顺序。
      <?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"] >
        一个淡入淡出的动画 代表 AlphaAnimation
        <alpha
            起始的不透明度
            android:fromAlpha="float"
            结束的不透明度
            android:toAlpha="float" />
        一个调整视图大小的动画  对应ScaleAnimation
        <scale
            x轴的起始尺寸
            android:fromXScale="float"
            x轴的结束尺寸
            android:toXScale="float"
             y轴的起始尺寸
            android:fromYScale="float"
             y轴的结束尺寸
            android:toYScale="float"
            对像缩放的时候要保持不变的X坐标
            android:pivotX="float"
            对像缩放的时候要保持不变的Y坐标
            android:pivotY="float" />
         垂直或者是水平移动的动画  对用TranslateAnimation
        <translate
           浮动数或百分比。起始 X 偏移。表示方式:相对于正常位置的像素数(例如 "5"),相对于元素宽度的百分比(例如 "5%"),或相对于父项宽度的百分比(例如 "5%p")。
            android:fromXDelta="float"
           浮动数或百分比。结束 X 偏移。表示方式:相对于正常位置的像素数(例如 "5"),相对于元素宽度的百分比(例如 "5%"),或相对于父项宽度的百分比(例如 "5%p")。
            android:toXDelta="float"
            android:fromYDelta="float"
            android:toYDelta="float" />
          旋转动画 代表 RotateAnimation
        <rotate
           起始的角度
            android:fromDegrees="float"
            结束的角度
            android:toDegrees="float"
            浮动数或百分比。旋转中心的 X 坐标。表示方式:相对于对象左边缘的像素数(例如 "5"),相对于对象左边缘的百分比(例如 "5%"),或相对于父级容器左边缘的百分比(例如 "5%p")。
            android:pivotX="float"
            android:pivotY="float" />
        <set>
            ...
        </set>
    </set>

  • 补间动画在Android中的使用
<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>

activity中的代码

  image.setOnClickListener {
           val anim =  AnimationUtils.loadAnimation(this, R.anim.anim_file)
            image.startAnimation(anim)
        }

差值器Interpolator的类型

  <accelerateDecelerateInterpolator>
   变化率在开始和结束时缓慢,但在中间会加快。
   没有属性。
  <accelerateInterpolator>
   变化率在开始时较为缓慢,然后会加快。
   属性: android:factor 浮点数 加速率 默认为1
  <anticipateInterpolator>
  先反向变化,然后再急速正向变化。
  属性:android:tension 浮点数。要应用的张力(默认为 2)。
  <anticipateOvershootInterpolator>先反向变化,再急速正向变化并超过目标值,然后以最终值结束。
  属性:android:tension 浮点数。要应用的张力(默认为 2)。
       android:extraTension浮点数。张力要乘以的倍数(默认值为 1.5)。
 <bounceInterpolator>
  变化会在结束时退回。
  没有属性。
<cycleInterpolator>
  按指定的循环次数重复动画。变化率符合正弦曲线图。
  属性:android:cycles 整数。循环次数(默认值为 1)。
<decelerateInterpolator>
  变化率开始时很快,然后减慢。
  属性:android:factor 浮点数。减速率(默认值为 1)。
<linearInterpolator>
 变化率恒定不变。
 没有属性。
<overshootInterpolator>
先急速正向变化,再超过最终值,然后回到最终值。
属性:android:tension
浮点数。要应用的张力(默认为 2)。

差值器Interpolator的具体使用

<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:tension="7.0" />


<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0"
    android:interpolator = "@anim/intercaptor_file"
    android:toXScale="3.0"
    android:fromYScale="1.0"
    android:toYScale="3.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="700"
   />

  • 桢动画具体的使用语法
    <?xml version="1.0" encoding="utf-8"?>
     必需。此元素必须是根元素。包含一个或多个 <item>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        布尔值。如果您想要执行一次动画,则为“true”;如果要循环播放动画,则为“false”。
        android:oneshot=["true" | "false"] >
        <item
            可绘制资源。要用于此帧的可绘制对象。
            android:drawable="@[package:]drawable/drawable_resource_name"
            整数。显示此帧的持续时间,以毫秒为单位。
            android:duration="integer" />
    </animation-list>
  • 桢动画在Android中的使用

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/media" android:duration="200"/>
    <item android:drawable="@drawable/media" android:duration="200"/>
    <item android:drawable="@drawable/media" android:duration="200"/>
    <item android:drawable="@drawable/media" android:duration="200"/>

</animation-list>
 image.setBackgroundResource(R.drawable.animation_drawable_file)
        val animation = image.background
        if (animation is Animatable) {
            animation.start()
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值