动画倒计时

Myapp接口

 Myapp代码注意在清单文件中添加name:

package com.example.day10;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class MyView extends View {
    private Paint paint;//画笔

    private String titless;//用来记录绘制时间角度

    private int progress;//用来记录时间

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initPaint();
    }

    private void initPaint(){
        paint=new Paint();
        paint.setColor(Color.RED);
        paint.setStrokeWidth(5);//设置绘制线的宽度
        paint.setAntiAlias(true);//设置抗锯齿
        paint.setStyle(Paint.Style.STROKE);//Flll实心,STROKE空心;
        paint.setTextSize(30);//设置大小
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //绘制范围,距离左上10,边长是100的正方形
        RectF rectF = new RectF(10, 10, 110, 100);
        canvas.drawArc(rectF,270,progress,false,paint);
        canvas.drawText(titless,50,65,paint);
    }

    public void start(int time){
        ValueAnimator valueAnimator=ValueAnimator.ofArgb(0,360);
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(@NonNull ValueAnimator animation) {
                progress=(int)valueAnimator.getAnimatedValue();
                invalidate();//刷新
            }
        });
        valueAnimator.setDuration(time*1000);//动画持续的时长
        valueAnimator.start();//开启
        ValueAnimator valueAnimatorText = ValueAnimator.ofArgb(time, 0);
        valueAnimatorText.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(@NonNull ValueAnimator animation) {
                titless=String.valueOf(valueAnimatorText.getAnimatedValue());
                invalidate();
            }
        });
        valueAnimatorText.setDuration(time*1000);
        valueAnimatorText.start();

        valueAnimator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                //接口调用
                 onanimEnd.animatnd();
            }
        });
    }
    //创建接口
    interface OnanimEnd{
        void animatnd();
    }

    public void setOnanimEnd(OnanimEnd onanimEnd) {
        this.onanimEnd = onanimEnd;
    }

    OnanimEnd onanimEnd;
}

activity布局:

 activity主页面:

    activity主页面代码:

package com.example.day10;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Intent;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity2 extends AppCompatActivity {

    private MyView myview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        initView();
        //设置时间
        myview.start(5);
        //设置平移消失效果
        ObjectAnimator translationX= ObjectAnimator.ofFloat(myview,"translationX",0,180,20,0,-600);
        translationX.setDuration(3000);
        translationX.start();
        myview.setOnanimEnd(new MyView.OnanimEnd() {
            @Override
            public void animatnd() {
                //跳转
                Intent integer = new Intent(MainActivity2.this, MainActivity.class);
                startActivity(integer);
            }
        });
    }

    private void initView() {
        myview = (MyView) findViewById(R.id.myview);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值