Android 自定义控件----属性动画

本文详细介绍了Android中ObjectAnimator类的使用方法,包括平移、旋转、缩放和透明度变化等基本动画效果的实现,以及如何组合这些动画来创建更复杂的动画序列。此外,还介绍了如何使用XML文件定义动画,提供了具体的代码示例和XML结构,帮助开发者更好地理解和应用Android动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ObjectAnimator类:

根据 setTranslationX(),setTranslationY(),setRotation(),setAlpha(),setScaleX(),setScaleY()

“translationX”  //横向平移

“translationY”  //纵向平移

"rotation"  //旋转

"alpha"  //缩放

"scaleX"  //横向缩放

"scaleY"  //纵向缩放

ObjectAnimator animator;

//平移
animator = ObjectAnimator.ofFloat(textview,"translationX",0f,400f);
animator.setDuration(1000);
animator.start();
//旋转
animator = ObjectAnimator.ofFloat(textview,"rotation",0f,300f);
animator.setDuration(1000);
animator.start();
////0为透明 1为恢复到原来状态
animator = ObjectAnimator.ofFloat(textview,"alpha",0f,1f);
animator.setDuration(1000);
animator.start();
//从控件里面缩放到外面
animator = ObjectAnimator.ofFloat(textview,"scaleX",0f,1f);
animator.setDuration(1000);
animator.start();

组合动画:

after(Animator anim)   将现有动画插入到传入的动画之后执行
after(long delay)   将现有动画延迟指定毫秒后执行
before(Animator anim)   将现有动画插入到传入的动画之前执行
with(Animator anim)   将现有动画和传入的动画同时执行

//平移 旋转+透明 缩放
ObjectAnimator animator1 = ObjectAnimator.ofFloat(textview,"translationX",0f,200f,0f);
ObjectAnimator animator2 = ObjectAnimator.ofFloat(textview,"rotation",0f,360f);
ObjectAnimator animator3 = ObjectAnimator.ofFloat(textview,"alpha",0f,1f);
ObjectAnimator animator4 = ObjectAnimator.ofFloat(textview,"scaleX",0f,1f);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(animator2).after(animator1).before(animator4).with(animator3);
animatorSet.setDuration(3000);
animatorSet.start();

使用XML编写动画:

在res下创建animator文件夹,创建objectanimator.xml

<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:valueFrom="0"
    android:valueTo="1"
    android:valueType="floatType"
    android:propertyName="alpha"
    />

在代码中将文件加载进来并启动动画:

Animator animator = AnimatorInflater.loadAnimator(MainActivity.this,R.animator.objectanimator);
animator.setTarget(textview);
animator.start();

组合动画:

<animator>  对应代码中的ValueAnimator

<objectAnimator>  对应代码中的ObjectAnimator

<set>  对应代码中的AnimatorSet

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially">
<!--平移 旋转+透明 缩放 -->
    <set android:ordering="sequentially">
        <objectAnimator
            android:propertyName="translationX"
            android:valueType="floatType"
            android:valueFrom="0"
            android:valueTo="200"
            android:duration="3000"
            />
    <set android:ordering="together">
        <objectAnimator
            android:propertyName="rotation"
            android:valueType="floatType"
            android:valueFrom="0"
            android:valueTo="360"
            android:duration="3000"
            />
    <objectAnimator
        android:propertyName="alpha"
        android:valueType="floatType"
        android:valueFrom="0"
        android:valueTo="1"
        android:duration="3000"
        />
    </set>
    <set android:ordering="sequentially">
        <objectAnimator
            android:propertyName="scaleX"
            android:valueType="floatType"
            android:valueFrom="0"
            android:valueTo="1"
            android:duration="3000"
            />

    </set>
    </set>
</set>
Animator animator10 = AnimatorInflater.loadAnimator(MainActivity.this,R.animator.objectanimator2);
animator10.setTarget(textview);
animator10.start();

参考链接:https://blog.youkuaiyun.com/guolin_blog/article/details/43536355

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值