Android 如何清空Canvas ?(找了好久的答案)
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);
- }
- @Override
- public void run() {
- while(bSurfaceRun){
- draw();
- try{
- Thread.sleep(100);
- } catch(InterruptedException e){
- e.printStackTrace();
- }
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- th.start();
- }
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- bSurfaceRun = false;
- }
- }
相關文章
- 安卓三指滑屏用哪個方法呢,找了好久沒找到安卓
- Android開發日記:好久沒寫的氣泡排序Android排序
- 如何清空idea的git資訊IdeaGit
- Android ImageView 清空背景圖片AndroidView
- Python中如何清空Queue?Python
- js如何將陣列中的元素清空JS陣列
- jQuery如何清空表單元素的內容jQuery
- Android: Bitmap/Canvas/DrawableAndroidCanvas
- Android 繪圖——CanvasAndroid繪圖Canvas
- 別找了,Android常用自動化工具全在這兒了!Android
- 教你Redis 如何清空所有資料Redis
- Android面試整理(附答案)Android面試
- Android自定義View之Canvas的使用AndroidViewCanvas
- 部落格,好久不見!
- javascript如何清空一個array陣列JavaScript陣列
- 如何清空select下拉選單的所有option項
- 【教程】如何清空一個 Git 分支的所有 CommitsGitMIT
- Android 利用 Canvas 畫畫板AndroidCanvas
- 如何使用echart中獲取canvas繪製到自己的canvas上去Canvas
- Linux系統裡如何徹底的清空螢幕?Linux
- 如何解決回收站無法清空的問題
- git如何清空所有的commit記錄GitMIT
- 如何清空DNS快取Windows&linuxDNS快取WindowsLinux
- Python中如何將列表資料清空?Python
- Android 面試題集 包含答案Android面試題
- 探究Android View 繪製流程,Canvas 的由來AndroidViewCanvas
- Android的Paint、Canvas和Path基本使用總結AndroidAICanvas
- Android 2D Graphics學習(二)、Canvas篇1、Canvas基本使用AndroidCanvas
- 好久沒有更新日誌了
- C#機房重構-如何一鍵清空C#
- 如何抓取canvas畫布中的圖片Canvas
- Android自定義View-Canvas基本操作AndroidViewCanvas
- android canvas 編輯bitmap畫虛線AndroidCanvas
- 快速清空埠上的配置
- 找了幾個 Solon 框架的商業落地專案案例!框架
- canvas進階——如何畫出平滑的曲線?Canvas
- Android 2D Graphics學習(二)、Canvas篇2、Canvas裁剪和Region、RegionIteratorAndroidCanvas
- git清空修改Git