Android 如何清空 Canvas ?(找了好久的答案)
来源:互联网 发布:大数据时代 百度网盘 编辑:程序博客网 时间:2024/04/28 19:29
Android 如何清空 Canvas ?
似乎一直未找到好的解决办法,有的方法限制使用纯色背景,但无论怎么尝试,都未见效果,
终于在 http://stackoverflow.com/questions/4650755/clearing-canvas-with-canvas-drawcolor 上面找到了答案:
经过尝试,结果如下:
之前的不理想图片 想要的效果
(注,图示方向为最顶层)
此类如下:
package com.test.move;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.PorterDuff.Mode;import android.graphics.PorterDuffXfermode;import android.util.AttributeSet;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView;import com.test.R;public class GlobalMove extends SurfaceView implements Callback, Runnable {public final static String TAG = "GlobalMove";public static int count = 0;private boolean bSurfaceRun = true;private SurfaceHolder sh;private Thread th; private Paint p; private Canvas canvas; //objects to be moved...private Bitmap bmp;private int lastX = 0;public GlobalMove(Context context, AttributeSet attrs) {//这种写法。。。super(context, attrs);sh = this.getHolder();sh.addCallback(this);th = new Thread(this);p = new Paint();initComponents(context);}private void initComponents(Context context){bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon); }private void draw(){canvas = sh.lockCanvas();if(canvas != null){
//取消如下四行注释看效果。//Paint paint = new Paint();//paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));//canvas.drawPaint(paint);//paint.setXfermode(new PorterDuffXfermode(Mode.SRC));canvas.drawBitmap(bmp, lastX+10, 50, p);}lastX += 10;if(lastX > 400)lastX = 0;sh.unlockCanvasAndPost(canvas);}@Overridepublic void run() {while(bSurfaceRun){draw();try{Thread.sleep(100);} catch(InterruptedException e){ e.printStackTrace(); }}}///////////////////////////////////////////////////////////////////////////////////////////////////@Overridepublic void surfaceCreated(SurfaceHolder holder) {th.start();}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {bSurfaceRun = false;} }
- Android 如何清空 Canvas ?(找了好久的答案)
- Android 如何清空Canvas ?(找了好久的答案)
- android canvas的清空 !!!!!!头痛,,,,,,,哎
- android canvas的sava、restore、rotate,canvas清空
- Android canvas 清空内容
- Android 如何清空 Canvas 清屏只需三句话
- 如何得到GPU的运行状态,这个找了好久
- 清空回收站之后如何找删除的文件
- 请问,Canvas画布如何清空
- SurfaceView清空Canvas如何操作
- 哇!!!找了好久Java的课程
- 清空canvas内容
- 找了好久
- redhat linux上的samba服务器配置(成功了的,找了好久好久,终于解决了,)
- html5 canvas 如何清空之前绘制的…
- DotNetBar Ribbon 2007汉化快速工具栏(找了好久找到的,收藏了)
- canvas画布清空问题
- canvas中的清空画布
- Spring控制反转和依赖注入两个概念以及容器
- 一个博士的悲情经历~失败的经验最美···小木虫上的系列精华帖(科研的、被科研的,共勉。转载,个人整理)
- 扩展和定制Heritrix2
- 14周任务2
- 设计模式之状态模式学习
- Android 如何清空 Canvas ?(找了好久的答案)
- 522
- 常用的MySQL数据类型
- OpenCV控制摄像头实现拍照
- zoj1543
- 看java设计模式感想①,谈谈自己对于接口用法的认识
- 随机生成10个数
- 数据库系统
- 黑马程序员-深入研究java.lang.Class类