学习|Android属性动画的基础介绍

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为2779,预计阅读7分钟


Android属性动画的简介

最近在产品迭代中发现有些系统的提示不够醒目,让用户容易忽略,为了不影响原来的界面布局,所以考虑到用动画的效果来加大提醒的效果,正好以前也没用到过动画这块,所谓边学边做嘛。

Android属性动画

Animation

Android的动画总体可以分为三类:View动画、帧动画、属性动画

我们这里主要就是介绍属性动画,主要原画是现在属性动画是使用率最高的,并且可以实现一个按钮的背景色从绿色到红色的效果,而View动画和帧动画这个是无法实现的。属性动画不仅仅针对View对象,还可以对任意对象的属性进行动画效果,在某一段时间内,实现对象的属性值从起始值到最终值的变化。

属性动画也分为动画的组合动画,我们这篇主要先讲一下动画(ValueAnimator),组合动画会在后面的文章中介绍。

ValueAnimator 算不上实现动画,ObjectAnimator 和TimeAnimator 继承自 ValueAnimator,一般由前者 ObjectAnimator 和 TimeAnimator 来实现动画,一般动画的实现过程如下图

ValueAnimator相关参数

方法参数名
说明
setEvaluatorTypeEvaluator value设置估值器
setDurationlong duration设置持续时间
setInterpolatorInterpolator value设置插值器
setTargetObject target

设置目标对象    ‍

setRepeatCountint value设置重复次数    ‍
setRepeatMode
int value
设置重复模式    ‍
setStartDelay
long startDelay设置启动延时    ‍
setCurrentPlayTimelong playTime设置当前执行时间

上面表格中的方法我只列出来比较常用的,其余的可以在实际操作中自己查找应用。

ViewAnimator的变化值类型确定主要有是下面四种:

public static ValueAnimator ofInt(int... values) public static ValueAnimator ofFloat(int... values)public static ValueAnimator ofObject(TypeEvaluator evaluator, Object... values) 
public static ValueAnimator ofPropertyValuesHolder(PropertyValuesHolder... values)

实现ViewAnimator的方法我们用到最多的就是ObjectAnimator,ObjectAnimator 有很多实现动画的方法,一般我们使用 ofFloat() 方法:

public static ObjectAnimator ofFloat(Object target, String propertyName, float... values) {
        throw new RuntimeException("Stub!");
}

参数名
说明
target属性动画作用的对象
propertyName属性名,代表要做什么动画
values形参,一般来说是传入两个参数,代表从..到..

代码实现

Code implementation

上面介绍了这么多,下面我们就自己创建个项目来做一个简单的实现。新建一个Android的程序名为Animation的项目,布局文件中加入两个Button和一个TextView。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/tvshow"
        android:layout_below="@+id/btntest1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test1"
        android:id="@+id/btntest1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/btntest1"
        android:text="test2"
        android:id="@+id/btntest2"/>



</RelativeLayout>

然后我们在MainActivity中定义TextView名为tvshow,下面是创建一个动画的函数AnimationOne(),下面方法我们就是让tvshow在X轴方法(横向)从1缩放到40的效果,播放时长为2秒,播放完后再回放变为最初效果。

private void AnimationOne() {
        ValueAnimator animator=ObjectAnimator.ofFloat(tvshow, "scaleX", 1f, 40f);

        //设置动画的基础属性
        animator.setDuration(2000);//播放时长
        animator.setStartDelay(300);//延迟播放
        animator.setRepeatCount(1);//重放次数
        //重放模式
        //ValueAnimator.START:正序
        //ValueAnimator.REVERSE:倒序
        animator.setRepeatMode(ValueAnimator.REVERSE);

        animator.start();
    }

点击第一个按钮加入调用事件

接下来我们看看运行效果

扫描二维码

获取更多精彩

微卡智享

「 往期文章 」

实战|OpenCV图片修复配合鼠标简单使用

学习|OpenCV图片修复函数inpaint

OpenCV二值化adaptiveThreshold与threshold的对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vaccae

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

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

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

打赏作者

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

抵扣说明:

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

余额充值