Android清楚canvas清除文字,Android 如何清空 Canvas ?(找了好久的答案)

Android 如何清空 Canvas ?

似乎一直未找到好的解決辦法,有的方法限制使用純色背景,但無論怎么嘗試,都未見效果,

bbd7ef9fafea57af928037b815b0e4a7.jpe

經過嘗試,結果如下:

c98768d58bc0c621997d394e2663823f.jpe     

c2c008fb20ffb044d211dc5cc8b0bf67.jpe

之前的不理想圖片                     想要的效果

(注,圖示方向為最頂層)

此類如下:

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;} }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值