IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android自定义控件动画篇之视觉动画 -> 正文阅读

[移动开发]Android自定义控件动画篇之视觉动画

Android的动画由5种类型组成:alpha,scale,translate,rotate,set

  • alpha:渐变透明度
  • scale:缩放尺寸
  • translate:画面变换位置
  • rotate:画面旋转
  • set:动画集

我们需要在res文件夹中创建anim文件夹

代码调用

 Animation animation = AnimationUtils.loadAnimation(this, R.anim.test);
 textView.startAnimation(animation);

一.文件调用

1.scale(缩放)

  • android:fromXScale:动画开始时,控件在X轴的缩放比例
  • android:toXScale:动画结束时,控件在X轴的缩放比例
  • android:fromYScale:动画开始时,控件在Y轴的缩放比例
  • android:toYScale:动画结束时,控件在Y轴的缩放比例
  • android:pivotX:缩放点X轴坐标
  • android:pivotY:缩放点Y轴坐标
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0"
    android:toXScale="0.4"
    android:fromYScale="1.2"
    android:toYScale="0.6"
    android:duration="700"
    android:pivotX="50"
    android:pivotY="50"
    >
</scale>

android:duration是动画时间
android:pivotX和android:pivotY都有三种取值方式,以50为例。分别有50,50%,50%p

android:pivotX="50"
android:pivotY="50"

以控件的左上角为坐标原点,向右移动50px,向下移动50px。

android:pivotX="50%"
android:pivotY="50%"

以控件的左上角为坐标原点,在原点坐标的基础上加上宽度的50%。

android:pivotX="50%p"
android:pivotY="50%p"

当取值在百分数后加上一个字母p时,表示在原点坐标的基础上加上宽度的100%。

2.alpha(透明)

  • android:fromAlpha:动画开始时的透明度,取值0.0-1.0
  • android:toAlpha:动画结束时的透明度,取值0.0-1.0
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.1"
    android:duration="700"
    >
</alpha>

3.rotate(旋转)

  • android:fromDegrees:开始时的角度
  • android:toDegrees:结束时的角度
  • android:pivotX:旋转中心点X轴坐标
  • android:pivotY:旋转中心点Y轴坐标
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="-650"
    android:pivotY="50"
    android:pivotX="50"
    >
</rotate>

4.translate(平移)

  • android:fromXDelta:起始点X轴,同样有三种格式
  • android:fromYDelta:起始点Y轴
  • android:toXDelta:终点X轴
  • android:toYDelta:终点Y轴
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:fromYDelta="-8"
    android:toXDelta="0"
    android:toYDelta="-80">
</translate>

5.set(集合)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="700">
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.1" />
    <rotate
        android:fromDegrees="0"
        android:pivotX="50"
        android:pivotY="50"
        android:toDegrees="-650" />
    <scale
        android:duration="700"
        android:fromXScale="1.0"
        android:fromYScale="1.2"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="0.4"
        android:toYScale="0.6" />
    <translate
        android:fromXDelta="0"
        android:fromYDelta="-8"
        android:toXDelta="0"
        android:toYDelta="-80" />
</set>

6.Animation属性

  • android:duration:一次动画的持续时间,以毫秒为单位
  • android:fillAfter:设置为true,动画结束时,保持状态
  • android:fillBefore:设置为true,动画结束时,恢复原来状态
  • android:fillEnabled:与android:fillBefore效果相同
  • android:repeatCount:重复动画的次数,当值为infinite时,表示无限
  • android:repeatMode:有两个值:reverse和restart。reverse表示倒放,restart表示回放。

二.代码调用

标签
alphaAlphaAnimation
scaleScaleAnimation
translateTranslateAnimation
rotateRotateAnimation
setAnimationSet
标签属性方法
android:durationvoid setDuration(long durationMillis)
android:fillAftervoid setFillAfter(boolean fillAfter)
android:fillBeforevoid setFillBefore(boolean fillBefore)
android:fillEnabledvoid setFillEnabled(boolean fillEnabled)
android:repeatCountvoid setRepeatCount(int repeatCount)
android:repeatModevoid setRepeatMode(int repeatMode)

对应android:pivotX和 android:pivotY也有相应方法。

xml代码
50Animation.ABSOLUTE
50%Animation.RELATIVE_TO_SELF
50%pAnimation.RELATIVE_TO_PARENT

Animation除了一些属性外,还有一些函数可以调用

取消动画

void cancel()

重置动画

void reset()

动画监听

animation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

三.插值器

当我们定义一个动画时,我们可以通过插值器改变动画的速度。

XML
AccelerateDecelerateInterpolator@android:anim/accelerate_decelerate_interpolator
AccelerateInterpolator@android:anim/accelerate_interpolator
AnticipateInterpolator@android:anim/anticipate_interpolator
AnticipateOvershootInterpolator@android:anim/anticipate_overshoot_interpolator
BounceInterpolator@android:anim/bounce_interpolator
CycleInterpolator@android:anim/cycle_interpolator
DecelerateInterpolator@android:anim/decelerate_interpolator
LinearInterpolator@android:anim/linear_interpolator
OvershootInterpolator@android:anim/overshoot_interpolator
意思
AccelerateDecelerateInterpolator加速减速插值器 ,在动画中间加速
AccelerateInterpolator加速插值器,在动画开始后加速
AnticipateInterpolator初始偏移插值器,动画开始时向前偏移一段距离,然后应用动画
AnticipateOvershootInterpolator是 AnticipateInterpolator与OvershootInterpolator 的结合
BounceInterpolator弹跳插值器,模拟控件自由落地后回弹的效果
CycleInterpolator循环插值器,动画想你换特定次数,速率沿正弦曲线改变
DecelerateInterpolator减速插值器,在动画开始后减速
LinearInterpolator线性插值器,匀速加速
OvershootInterpolator结束偏移插值器,在动画结束时,沿动画方向继续运动一段时间,在结束动画

调用的方法有两种
XML调用

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.1"
    android:duration="700"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator "
    >
</alpha>

代码调用

 animation.setInterpolator(new AccelerateDecelerateInterpolator());
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:16:17  更:2021-09-06 11:18:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:46:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码