java setpaintmode 用法_Android学习笔记(四):android画图之paint之setXfermode

该博客介绍了一个名为GameView1的Android自定义View的实现,该View在onDraw()方法中进行图形绘制,包括圆形弧度的动态更新,颜色变化和矩形圆角的绘制。同时,它实现了触摸事件和键盘事件的处理,如onTouchEvent()和onKeyDown()等,以响应用户输入。通过postInvalidate()更新界面,并在后台线程中运行。
摘要由CSDN通过智能技术生成

packagecom.k.gameview;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.PorterDuff.Mode;importandroid.graphics.PorterDuffXfermode;importandroid.graphics.Rect;importandroid.graphics.RectF;importandroid.graphics.Region;importandroid.view.KeyEvent;importandroid.view.MotionEvent;importandroid.view.View;public class GameView1 extends View implementsRunnable {/*声明Paint对象*/

private Paint mPaint = null;publicGameView1(Context context) {super(context);/*构建对象*/mPaint= newPaint();/*开启线程*/

new Thread(this).start();

}floatarc;public voidonDraw(Canvas canvas) {super.onDraw(canvas);if(arc>360)

arc=0;/*设置画布的颜色*/canvas.drawColor(Color.BLACK);/*设置取消锯齿效果*/mPaint.setAntiAlias(true);

mPaint.setAlpha(255);if(arc>200){

mPaint.setColor(Color.YELLOW);

}else{

mPaint.setColor(Color.GREEN);

}

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setStrokeWidth(5);

RectF rf= new RectF(10, 10, 90, 140);

canvas.drawRoundRect(rf,10, 10, mPaint);

mPaint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));

mPaint.setAlpha(0);

mPaint.setStyle(Paint.Style.FILL);

canvas.drawArc(new RectF(-100, -75, 200, 225), 240, arc, true, mPaint);

arc+=2.5;

}//触笔事件

public booleanonTouchEvent(MotionEvent event) {return true;

}//按键按下事件

public boolean onKeyDown(intkeyCode, KeyEvent event) {return true;

}//按键弹起事件

public boolean onKeyUp(intkeyCode, KeyEvent event) {return false;

}public boolean onKeyMultiple(int keyCode, intrepeatCount, KeyEvent event) {return true;

}public voidrun() {while (!Thread.currentThread().isInterrupted()) {try{

Thread.sleep(100);

}catch(InterruptedException e) {

Thread.currentThread().interrupt();

}//使用postInvalidate可以直接在线程中更新界面

postInvalidate();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值