安卓开发之自定义粒子旋转动画加载控件

本文介绍如何在安卓开发中自定义一个粒子旋转动画加载控件,控件能根据颜色数组生成不同数量旋转的小球,小球颜色和距离中心点的距离会随动画变化,详细涵盖自定义控件的属性、动画实现及使用方法。
摘要由CSDN通过智能技术生成

先上效果图:

这里写图片描述

控件可以根据颜色数组的长度来绘制不同数量的小球。小球旋转同时,距控件中心的距离也跟着不断变化。

还有个小细节就是,小球的颜色也会随着变化(颜色变为后一个小球的颜色)。

一、自定义控件的属性

定义了小球的半径、小球偏移控件中心的最大距离和最小距离、动画的执行周期(决定旋转的速度)和一个存放各个颜色的数组(int 数组)。

<declare-styleable name="CircleLoadingView">
    <attr name="radius" format="dimension"/>
    <attr name="maxOffset" format="dimension"/>
    <attr name="minOffset" format="dimension"/>
    <attr name="colors" format="reference"/>
    <attr name="duration" format="integer"/>
</declare-styleable>

二、自定义动画控件

package com.cxmscb.cxm.circleloadingview;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Build;
import android.support.v4.view.animation.LinearOutSlowInInterpolator;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.BounceInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;

import java.util.ArrayList;
import java.util.Collection;

/**
 * Created by cxm on 2016/9/24.
 */

public class CircleLoadingView extends View {

    private int centerX; // 控件x轴的中心
    private int centerY; // 控件y轴的中心

    private int radius;  // 小球的半径
    private int[] colors;  // 颜色数组
    private int maxOffset ; // 小球偏移的最大值
    private in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值