Android 自定义View 模仿豆瓣App加载中Loading(也类似支付宝AppLoading)
上面是实现效果gif,下面是豆瓣App的gif录制图示::
思路(其中一种):
1、一个停止的笑脸
2、笑脸从左侧脸颊开始旋转,吸收眼睛,同时弧线变长
3、然后转圈
4、转到横向时释放眼睛,然后旋转回正
然后 动作往复循环
github :https://github.com/louisgeek/LouisDoubanLoadingView
具体见完整代码:
package com.louisgeek.louiscustomviewstudy;import android.animation.Animator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.RectF;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;import static android.content.ContentValues.TAG;/*** 支付宝的稍微和豆瓣有点区别,下面是仿豆瓣App加载中loading,支付宝自行调整下即可。* Created by louisgeek on 2016/10/24.*/public class LikeDouBan_AlipaySmileLoadingView extends View {private final int STATE_STOP = 0;private final int STATE_START_LOAD = 1;private final int STATE_LOADING = 2;private final int STATE_END_LOADING = 3;private final int STATE_TURN_SMILE = 4;private int mCurrenState = STATE_STOP;private Paint mPaint;private int mScreenWidth, mScreenHeight, mViewWidth, mViewHeight;private ValueAnimator mValueAnimatorStartLoad;private ValueAnimator mValueAnimatorLoading;private ValueAnimator mValueAnimatorTurnSmile;private ValueAnimator mValueAnimatorEndLoading;private ValueAnimator mValueAnimatorHoldSimle;private float mLoadingProgress;private float mStartLoadProgress;private float mTurnSmileProgress;private float mEndLoadingProgress;private float mHoldSimleProgress;private float mRaidus = this.dp2px(30);private int mCircleFrameHeight = this.dp2px(10);private int flagLoadingCount;private int flagHoldSmileCount;private boolean mStopLoading=true;private int START_END_DURATION=800;private ValueAnimator.AnimatorListener mAnimatorListener;public LikeDouBan_AlipaySmileLoadingView(Context context) {this(context, null);}public LikeDouBan_AlipaySmileLoadingView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public LikeDouBan_AlipaySmileLoadingView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {mPaint = new Paint();mPaint.setStrokeWidth(mCircleFrameHeight);mPaint.setStyle(Paint.Style.STROKE);mPaint.setAntiAlias(true);mPaint.setColor(Color.parseColor("#2d832e"));mPaint.setStrokeCap(Paint.Cap.ROUND);mAnimatorListener = new Animator.AnimatorListener() {@Overridepublic<
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
