Skip to content

liuwei1993/AndroidAnimationTools

Repository files navigation

Android动画工具箱

预览

使用方法

导入 

Step 1. 添加JitPack repository到你的主项目build.gradle文件

allprojects {
    repositories {
	...
	maven { url 'https://jitpack.io' }
    }
}

Step 2. 添加依赖

dependencies {
    compile 'com.github.liuwei1993:AndroidAnimationTools:1.0'
}

示例:

示例使用:

java中:

ImageView imageView = (ImageView) itemView.findViewById(R.id.image);
AnimationDrawable drawable = new WavingBars();
imageView.setImageDrawable(drawable);
drawable.start();

layout中:

<!-- 如果动画需要超出View边界,则需要将ImageView的父View的 android:clipChildren属性设置为false -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false">

    <ImageView
        android:id="@+id/image"
        android:layout_width="160dp"
        android:layout_height="160dp"
        android:clipChildren="false"
        android:layout_gravity="center"/>

</FrameLayout>

效果:

实现原理

核心类:

该库主要有两个重要部分组成一个是drawable系列,用于绘制图形,一个是animator系列,用于方便的构造Animator.

drawable包下

animator包下

继承AnimatonDrawable类后使用DrawableAnimatorBuilder可以使Drawable具备动画效果,而AnimDrawableContainer自身继承于AnimationDrawable并且可以管理多个AnimatonDrawable从而实现复杂动画效果. 而interpolator包下的工具类可以帮助我们高效的创建复杂的Interpolator. 使用者可参考示例代码来自定义各种复杂动画效果.