短视频带货源码,模仿点我达开频页加载动画

软件工具
0 909


短视频带货源码中关于模仿点我达开频页加载动画的代码如下:

package com.example.custome_view.diwoda;
 
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
 
import com.example.custome_view.R;
import com.fudaojun.fudaojunlib.utils.LibCalcUtil;
 
/**
 * Created by ZhijunHong on 2018/7/5.
 * 一个简单的自定义View + 动画集合
 */
 
public class DiWoDaView extends View {
    //控件宽度
    private int mWidth;
    //控件高度
    private int mHeight;
    //外部圆画笔
    private Paint mOutCirclePaint;
    //外部圆半径
    private float mOutCircleRaduis;
    //外部圆透明度
    private int mTransparency;
    //外部圆颜色
    private int mCircleColor;
 
    //内部圆画笔
    private Paint mInCirclePaint;
    //内部圆半径
    private float mInCicleRadius;
 
    //handler
    private Handler mHandler;
 
    //动画集合
    private AnimatorSet mAnimationSet;
 
    public DiWoDaView(Context context) {
        this(context, null);
    }
 
    public DiWoDaView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }
 
    public DiWoDaView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
 
        init();
    }
 
    /**
     * 初始化资源
     */
    private void init() {
        mOutCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.LINEAR_TEXT_FLAG);
        mOutCirclePaint.setStyle(Paint.Style.FILL);
        mOutCirclePaint.setColor(Color.YELLOW);
 
        mInCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.LINEAR_TEXT_FLAG);
        mInCirclePaint.setStyle(Paint.Style.FILL);
        mInCirclePaint.setColor(getResources().getColor(R.color.orange));
 
        mOutCircleRaduis = LibCalcUtil.dp2px(getContext(), 80);
        mInCicleRadius = LibCalcUtil.dp2px(getContext(), 40);
    }
 
    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mWidth = w;
        mHeight = h;
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.translate(mWidth / 2, mHeight / 2);
        //画外围大圆
        canvas.drawCircle(0, 0, mOutCircleRaduis, mOutCirclePaint);
        //画里面小圆
        canvas.drawCircle(0, 0, mInCicleRadius, mInCirclePaint);
    }
 
    /**
     * 开始动画
     */
    public void playAnimation() {
        if (mAnimationSet == null) {
            mAnimationSet = new AnimatorSet();
 
            //大圆半径变更动画
            ValueAnimator anim1 = ValueAnimator.ofFloat(0, mOutCircleRaduis);
            //大圆透明度变更动画
            ValueAnimator anim2 = ValueAnimator.ofInt(256, 0);
 
//            //沿Y轴旋转动画
//            ObjectAnimator anim3 = ObjectAnimator.ofFloat(this, "rotationY", 0f, 360f);
//            //设置一起执行动画
//            mAnimationSet.playTogether(anim1, anim2, anim3);
//            anim3.setRepeatCount(ValueAnimator.INFINITE);
 
            mAnimationSet.playTogether(anim1, anim2);
 
            //设置重复执行动画
            anim1.setRepeatCount(ValueAnimator.INFINITE);
            anim2.setRepeatCount(ValueAnimator.INFINITE);
 
            anim1.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    if (animation != null) {
                        //改变外围大圆半径
                        mOutCircleRaduis = (float) animation.getAnimatedValue();
                    }
                }
            });
 
            anim2.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    //改变外围大圆透明度
                    mTransparency = (int) animation.getAnimatedValue();
                }
            });
        }
 
        //启动动画
        mAnimationSet.setDuration(2000).start();
 
        if (mHandler == null) {
            mHandler = new Handler();
        }
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mCircleColor = Color.argb(mTransparency, 255, 143, 5);
                mOutCirclePaint.setColor(mCircleColor);
 
                //重绘
                postInvalidate();
                mHandler.postDelayed(this, 50);
            }
        }, 50);
 
    }
}


以上就是短视频带货源码中关于模仿点我达开频页加载动画的全部代码,更多信息欢迎关注之后的文章


精选帖子
Android 可可影视 v3.3.6无广告纯净版 2435
Android QQ音乐 v11.3.7 定制版解锁免费听歌无广告版 2910
Android 草图大师SKP v1.5 解锁会员版 8341
Android OmoFun追漫神器 v4.2.1 无广告绿色版 5324
AdobeGenP Adobe全家桶系列激活工具 v3.5.0/3.4.14.1 绿色版 5925
Android 七猫免费听书 v1.4 解锁高级版 4371
超良心的抢票神器——Bypass1.16 3998
Android 玲珑加速器 v6.10.9.40 解锁无限时间 2734
Android 大师兄影视 v3.3.8 去广告会员版 1844
热门帖子
靠 AI 写商业计划书,一单赚 3000+,给专属接单渠道,越做越稳,告别打工 249
AI漫剧全链路增效课:从小说到成片,成本、分镜、角色、配音全优化,效率提升300% 234
Android 漫天星漫画 v3.2.5 去广告清爽版 234
12306抢票软件 Bypass分流抢票 春节提高高铁火车抢票成功率 226
街机模拟器完全整合版 FB Neo 25000+街机游戏 怀旧PC单机游戏 164
AI业务自动化实战课,20款AI机器人搭建,覆盖文案、播客、销售与数据分析,打造自动化业务 71
即梦豆包AI绘画指令大全:海量关键词库一键复制,出图效率提升10倍,轻松日更百图 70
2026AI漫剧全流程变现实战:快手百万博主亲授,吃透90%分账红利,单人居家轻松月入过万 68
【公众号流量主】红利回归!AI四步法每天3分钟,实测稳定日入2000+ 64