package com.example.monizk.view; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.Toast; import com.example.monizk.R; /** * Created by 小薇 on 2018/7/8. */ public class AdTimeViewPager extends View { private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what==0){ if(time>1){ time--; //重新初始化第二个画布,将以前画的数字消除 //重新画 draw(); //更新界面 //调用ondraw invalidate(); handler.sendEmptyMessageDelayed(0,1000); }else{ Toast.makeText(getContext(),"跳转成功",Toast.LENGTH_SHORT).show(); } } } }; private int height; private int width; private Canvas mcanvas; private Bitmap mbitmap; private Paint mpaint; private int time; public AdTimeViewPager(Context context) { super(context); } public AdTimeViewPager(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public AdTimeViewPager(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //设置第一支画笔 Paint paint = new Paint(); //设置画笔颜色 paint.setColor(Color.RED); paint.setAntiAlias(true); //设置透明度 paint.setAlpha(240); //获取背景图片资源 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.dd); Log.i("aaa",bitmap.toString()); //将背景图片画到屏幕上 canvas.drawBitmap(bitmap,0,0,paint); //根据屏幕确定圆的位值,不是根据控件的大小 width = getWidth()-380; height = 80; //圆的半径 float radius=60; Log.i("bbbb",getHeight()+"...."+getWidth()); //画圆 canvas.drawCircle(width,height,radius,paint); //将第二层的画布画到屏幕上 canvas.drawBitmap(mbitmap,0,0,null); //初始化显示数字,如果将这行注释掉,就不会显示5s这个数字 // mcanvas.drawText(time+"s",width-30,height*10,mpaint); } public void init(int i){ if(i<3){ time=3; }else{ time=i; } //设置第二支画笔 mpaint = new Paint(); //设置文字颜色大小 mpaint.setTextSize(80); mpaint.setColor(Color.BLACK); draw(); handler.sendEmptyMessageDelayed(0,1000); } /* * 初始化mbitmap和mcanvas * 并且画上倒计时数字 * 这里画的东西都是画到了第二层画布上 */ private void draw(){ mbitmap = Bitmap.createBitmap(getLayoutParams().width, getLayoutParams().height, Bitmap.Config.ARGB_8888); //初始化第二个画布,将所有的东西画到mbitmap上 mcanvas = new Canvas(mbitmap); //将数字画到第二个画布上 mcanvas.drawText(time+"s",width-30,height+10,mpaint); } }
倒计时
最新推荐文章于 2020-12-02 22:12:51 发布