安卓设置菊花动画_Android 加载菊花图 自定义

本来想找一个ios的菊花加载图旋转一下搞定这个的,但是发现使用图片后由于图片的不对称导致动画时有抖动现象,不能忍,于是搜了下自定义菊花图,额,然后就没有然后了,都不是想要的,于是开始了苦逼的自定义View...

先来张效果图:

菊花图.png

再来张动画效果图:

嗯是的我动起来了.gif

看图说话:

1、12条颜色线,带圆角

2、动画起来后12个颜色跟着变化

需要解决的问题:

1、12个颜色,也太多了吧!!!!我可不想吸这么多次,有毒的!(嗯,我为吸管代言)

于是愉快的决定了只是用两种颜色,即开始颜色和结束颜色,其余使用渐变获取。(额,好吧,我是懒了!)

2、动画

什么,动画是问题吗?一个旋转搞定了!嗯,你大佬,你来,反正我做不来!!

由于旋转动画是转动的,难以实现颜色跟着变化的效果,所以我使用了ValueAnimator,

嗯,是的,你猜对了,既然使用了ValueAnimator,就要调用 invalidate(); 或 postInvalidate(); 来实现重绘。

嗯,看起来还是挺简单的,来试试吧:

先定义一下属性:

/**

* 线圆角及宽度

*/

private int mLineBold;

/**

* 线条开始颜色 默认白色

*/

private int mStartColor = Color.parseColor("#FFFFFF");

/**

* 线条结束颜色 默认灰色

*/

private int mEndColor = Color.parseColor("#9B9B9B");

/**

* view的宽度 高度

*/

private int mWidth;

/**

* view的高度

*/

private int mHeight;

/**

* 线条长度

*/

private int mLineLength;

/**

* 线条个数 默认12条

*/

private int mLineCount = 12;

/**

* 背景画笔

*/

private Paint mBgPaint;

/**

* 渐变颜色

*/

private int[] mColors;

/**

* 动画是否已开启

*/

private boolean isAnimationStart;

/**

* 开始index

*/

private int mStartIndex;

/**

* 动画

*/

private ValueAnimator mValueAnimator;

>>>>>>>>>>>>>>> 然后继续 >>>>>>>>>>>>>>>>>

1.第一步:

自定义属性:

// 由于考虑到后续可能使用更多数量的线,所以索性加了个线个数的属性

2.第二步,初始化:

public ChrysanthemumView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

loadAttrs(context, attrs);

initPaint();

initColor();

}

/**

* 加载自定义的属性

*/

private void loadAttrs(Context context, AttributeSet attrs) {

TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.ChrysanthemumView);

mStartColor = array.getColor(R.styleable.ChrysanthemumView_startColor, mStartColor);

mEndColor = array.getColor(R.styleable.ChrysanthemumView_endColor, mEndColor);

mLineCount = array.getInt(R.styleable.ChrysanthemumView_lineCount, mLineCount);

//TypedArray回收

array.recycle();

}

/**

* 初始化画笔

*/

private void initPaint() {

mBgPaint = new Paint();

//使得画笔更加圆滑

mBgPaint.setAntiAlias(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值