package com.example.bch_7_7_rikao;
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.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
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 android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
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;
/**
* aiuthor Ender 鲍晨华
* email 15011462696@163.com
* created 2018/7/7 11:15
*/
* aiuthor Ender 鲍晨华
* email 15011462696@163.com
* created 2018/7/7 11:15
*/
/**
* 实现定时跳转
* 1.重写onDraw方法将图片和右上角的红色圆绘制到屏幕上
* 2.新建一个画布,在这个画布上倒计时数字
* 3.
*/
public class MyTaiozhaunView 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 Canvas mcanvas; //
private int time; //
private Bitmap mbitmap;
private int width;
private int height;
private Paint mpaint;
* 实现定时跳转
* 1.重写onDraw方法将图片和右上角的红色圆绘制到屏幕上
* 2.新建一个画布,在这个画布上倒计时数字
* 3.
*/
public class MyTaiozhaunView 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 Canvas mcanvas; //
private int time; //
private Bitmap mbitmap;
private int width;
private int height;
private Paint mpaint;
public MyTaiozhaunView(Context context) {
super(context);
}
super(context);
}
public MyTaiozhaunView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
super(context, attrs);
}
public MyTaiozhaunView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
super(context, attrs, defStyleAttr);
}
public MyTaiozhaunView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
super(context, attrs, defStyleAttr, defStyleRes);
}
@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.ic_dd);
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.ic_dd);
Log.e("Bitmap", bitmap.toString());
//讲背景图片画到屏幕上
canvas.drawBitmap(bitmap, 0, 0, paint);
//讲背景图片画到屏幕上
canvas.drawBitmap(bitmap, 0, 0, paint);
//根据屏幕确定圆的位置
//不是根据控件的大小
width = getWidth() - 80;
height = 80;
//圆的直径
float radius = 80;
Log.e("HH",getHeight() +"..." +getWidth());
//不是根据控件的大小
width = getWidth() - 80;
height = 80;
//圆的直径
float radius = 80;
Log.e("HH",getHeight() +"..." +getWidth());
//画圆
canvas.drawCircle(width, height, radius, paint);
canvas.drawCircle(width, height, radius, paint);
//将第二层的画布画到屏幕上
canvas.drawBitmap(mbitmap,0,0,null);
//初始化显示数字 ,如果将这行注释掉,就不会显示5s这个数字
mcanvas.drawText(time +"s", width - 30, height +10, mpaint);
canvas.drawBitmap(mbitmap,0,0,null);
//初始化显示数字 ,如果将这行注释掉,就不会显示5s这个数字
mcanvas.drawText(time +"s", width - 30, height +10, mpaint);
}
/**
* //初始化控件
* 设置倒计时的数字
* @param i
*/
void init (int i){
if (i< 3){
time = 3;
}else {
time = i;
}
//设置第二支画笔
mpaint = new Paint();
// mpaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
* //初始化控件
* 设置倒计时的数字
* @param i
*/
void init (int i){
if (i< 3){
time = 3;
}else {
time = i;
}
//设置第二支画笔
mpaint = new Paint();
// mpaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
//设置文字大小颜色
mpaint.setTextSize(80);
mpaint.setColor(Color.BLACK);
mpaint.setTextSize(80);
mpaint.setColor(Color.BLACK);
draw();
handler.sendEmptyMessageDelayed(0,1000);
}
/**
* 初始化mbitmap 和 mcanvas
* 并且画上倒计时数字
*这里画的东西都是画到了第二层画布上
*/
* 初始化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);
// invalidate();
, getLayoutParams().height, Bitmap.Config.ARGB_8888);
//初始化第二个画布,将所有的东西画到mbitmap上
mcanvas = new Canvas(mbitmap);
//将数字画到第二个画布上
mcanvas.drawText(time +"s", width - 30, height +10, mpaint);
// invalidate();
}
}