广告
返回顶部
首页 > 资讯 > 移动开发 >Android自定义View实现动画效果详解
  • 289
分享到

Android自定义View实现动画效果详解

Android自定义View实现动画Android 动画Android自定义View 2023-02-02 12:02:51 289人浏览 泡泡鱼
摘要

目录帧动画补间动画属性动画帧动画 帧动画就是给定一个完整动画的所有关键帧,由大脑想象中间的变化过程的一种动画。 <?xml version="1.0" encoding="ut

帧动画

帧动画就是给定一个完整动画的所有关键帧,由大脑想象中间的变化过程的一种动画。

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:Android="Http://schemas.android.com/apk/res/android" android:oneshot="false">
    <item android:drawable="@drawable/ic_loading_0" android:duration="100"/>
    <item android:drawable="@drawable/ic_loading_1" android:duration="100"/>
    <item android:drawable="@drawable/ic_loading_2" android:duration="100"/> 
    <item android:drawable="@drawable/ic_loading_3" android:duration="100"/> 
    <item android:drawable="@drawable/ic_loading_4" android:duration="100"/> 
    <item android:drawable="@drawable/ic_loading_5" android:duration="100"/> 
    <item android:drawable="@drawable/ic_loading_6" android:duration="100"/>
    <item android:drawable="@drawable/ic_loading_7" android:duration="100"/>
</animation-list>

将这个xml文件放到drawable文件夹下,就可以引用上了。

补间动画

补间动画就是指定动画开始和结束的状态,中间的变化,由计算机自动补齐。补间动画有4种类型,平移动画(Translate)、透明度动画(Alpha)、旋转动画(Rotate)、缩放动画(Scale)。

旋转动画

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000"
        android:fillAfter="true"
        android:fromDegrees="0"
        android:pivotX="50%" 
        android:pivotY="50%"
        android:repeatCount="1"
        android:toDegrees="180">
</rotate>

透明度动画

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000"
       android:fromAlpha="1.0"
       android:toAlpha="0.5">
</alpha>

平移动画

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000"
           android:fromXDelta="0"
           android:fromYDelta="0"
           android:toXDelta="100%"
           android:toYDelta="100%">
</translate>

缩放动画

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

属性动画

属性动画,就是监听一个属性的变化值,来完成的动画。简言之,就是不断修改该对象的某个属性值,然后让动画框架来监听它。

ValueAnimator

ValueAnimator.ofFloat(0f, 1f)

创建一个从0逐渐变化到1点动画。

ObjectAnimator

new ObjectAnimator().addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationCancel(Animator animation) {
        super.onAnimationCancel(animation);
    }

    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
    }

    @Override
    public void onAnimationRepeat(Animator animation) {
        super.onAnimationRepeat(animation);
    }

    @Override
    public void onAnimationStart(Animator animation) {
        super.onAnimationStart(animation);
    }

    @Override
    public void onAnimationPause(Animator animation) {
        super.onAnimationPause(animation);
    }

    @Override
    public void onAnimationResume(Animator animation) {
        super.onAnimationResume(animation);
    }
});

监听动画的状态。

TypeEvaluator估值器

public interface TypeEvaluator<T> {

    
    public T evaluate(float fraction, T startValue, T endValue);

}

使用估值器来计算两个边缘状态的所有中间值。

ObjectAnimator.ofObject(target, propertyName, evaluator, values);

target参数为监听的对象,propertyName为监听的该对象的某个属性的名字,也可以监听该属性的setXxx()方法。evaluator传入一个估值器,values为你要估值的所有关键的点的值,然后通过这些给定的点,来估计一定时间内这个点在中间时刻的值。

Interpolator插值器

public interface Interpolator extends TimeInterpolator {
    // A new interface, TimeInterpolator, was introduced for the new android.animation
    // package. This older Interpolator interface extends TimeInterpolator so that users of
    // the new Animator-based animations can use either the old Interpolator implementations or
    // new classes that implement TimeInterpolator directly.
}

用它的实现类来决定动画的变化速率,比如先快后慢、先慢后快、匀速等。比较常用的有LinearInterpolator(匀速)、AccelerateInterpolator(加速)、DecelerateInterpolator(减速)。ValueAnimator和ObjectAnimator都可以通过调用

public abstract void setInterpolator(TimeInterpolator value);

设置插值器,因为这个方法是Animator抽象类的。

到此这篇关于Android自定义View实现动画效果详解的文章就介绍到这了,更多相关Android自定义View内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android自定义View实现动画效果详解

本文链接: https://www.lsjlt.com/news/193965.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作