RecycleView刷新 齿轮转动动画效果

穿插一篇自定义view 的动画效果,偶然看到的一个gif刷新齿轮效果图片,原图如下:
这里写图片描述

感觉挺有意思的,就想自己也做一个,发费了一番功夫,算是做出了基本效果,但原谅我使其美观尽毁,做出的效果如下:
这里写图片描述
gif录制有些掉帧

好了,放源码了:

public class GearView extends View {
   
    private Context context;
    private Paint paint;
    private float PI = 3.1415926f;
    private int circleGrade = 1;//圆的齿轮个数 9+circleGrade 个
    private float gearWidth = 40;
    private float gearHeight = 50;
    private float length = 60;//弧长
    private List<Circle> circles;//存储圆的参数
    private Map<Float, Bitmap> bitmaps;//把已经绘制好的bitmap存储起来,循环利用
    private int speedArgu = 20;//旋转速度参数
    private int viewWidth;//所在view 的宽度
    private int viewHeight;//所在view 的高度
    private boolean startRotato = true;//是否开始动画
    private int r1;
    private int r2;
    private int r3;
    private int r4;
    private int r5;

    private float fTran = 0;//平移基本数
    private float translationArgu = 4.0f;//平移乘数
    private float fRotate = 0;//平移后中心旋转基本数
    private float transientRotate = 70.0f;//平移后中心旋转乘数
    private float scale = 0.001f;//平移后中心缩放 程度
    private float scaleBase = 1.0f;//平移后中心缩放基本数

    public boolean isStartRotato() {
        return startRotato;
    }

    public void setStartRotato(boolean startRotato) {
        this.startRotato = startRotato;
    }

    public int getSpeedArgu() {
        return speedArgu;
    }

    public void setSpeedArgu(int speedArgu) {
        if(speedArgu > 70){
            speedArgu = 70;
        }
        if(speedArgu < 5 && speedArgu > 0){
            speedArgu = 5;
        }
        if(speedArgu < -70){
            speedArgu = -70;
        }
        if(speedArgu <0 && speedArgu > -5){
            speedArgu = -5;
        }
        this.speedArgu = speedArgu;
    }

    public GearView(Context context) {
        super(context);
        this.context = context;

        init();
    }

    public GearView(Context context, AttributeSet attrs) {
        super(context, attrs);
        context = context;
        init();
    }

    public GearView(Context context, AttributeSet attrs, int defStyleAt
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值