前言
这一一系列的关于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在设定的时间段内修改对象的属性值来创建动画
视图动画:使用视图动画的时候可以创建两种类型的动画
- 补间动画 通过使用Animation 对单张图片执行一系列转化来创建动画
- 桢动画 通过使用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()
}