雙緩沖技術(shù)實(shí)現(xiàn)Android 畫(huà)板應(yīng)用
什么是雙緩沖技術(shù)?雙緩沖技術(shù)就是當(dāng)用戶操作界面完成后,會(huì)有一個(gè)緩沖區(qū)保存用戶操作的結(jié)果。
為什么要使用雙緩沖技術(shù)?拿Android 游戲開(kāi)發(fā)來(lái)說(shuō),界面貞每次都是全部重畫(huà)的,也就說(shuō)畫(huà)了新的,舊的就沒(méi)了,所以需要使用雙緩沖技術(shù)保存之前的內(nèi)容。
如何實(shí)現(xiàn)雙緩沖?使用一個(gè)Bitmap對(duì)象保留之前的畫(huà)布即可。
package com.example.phonegaptest; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class DrawView extends View { float preX; float preY; private Path path; public Paint paint = null; final int VIEW_WIDTH = 320; final int VIEW_HEIGHT = 480; Bitmap cacheBitmap = null; Canvas cacheCanvas = null; public DrawView(Context context, AttributeSet set) { super(context, set); cacheBitmap = Bitmap.createBitmap(VIEW_WIDTH, VIEW_HEIGHT, Config.ARGB_8888); cacheCanvas = new Canvas(); path = new Path(); cacheCanvas.setBitmap(cacheBitmap); paint = new Paint(Paint.DITHER_FLAG); paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(1); paint.setAntiAlias(true); paint.setDither(true); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.moveTo(x, y); preX = x; preY = y; break; case MotionEvent.ACTION_MOVE: path.quadTo(preX, preY, x, y); preX = x; preY = y; break; case MotionEvent.ACTION_UP: cacheCanvas.drawPath(path, paint); path.reset(); break; } invalidate(); return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint bmpPaint = new Paint(); canvas.drawBitmap(cacheBitmap, 0, 0, bmpPaint); canvas.drawPath(path, paint); } }
以上就是對(duì)Android雙緩沖技術(shù)實(shí)現(xiàn)畫(huà)板應(yīng)用實(shí)例,有需要的朋友可以參考下。
- Android畫(huà)板開(kāi)發(fā)之添加文本文字
- Android畫(huà)板開(kāi)發(fā)之添加背景和保存畫(huà)板內(nèi)容為圖片
- Android畫(huà)板開(kāi)發(fā)之撤銷反撤銷功能
- Android畫(huà)板開(kāi)發(fā)之基本畫(huà)筆功能
- Android畫(huà)板開(kāi)發(fā)之橡皮擦功能
- Android自定義SurfaceView實(shí)現(xiàn)畫(huà)板功能
- Android多媒體之畫(huà)畫(huà)板開(kāi)發(fā)案例分享
- Android采用雙緩沖技術(shù)實(shí)現(xiàn)畫(huà)板
- android實(shí)現(xiàn)簡(jiǎn)單的畫(huà)畫(huà)板實(shí)例代碼
- Android實(shí)現(xiàn)畫(huà)畫(huà)板案例
相關(guān)文章
Android中使用Toast.cancel()方法優(yōu)化toast內(nèi)容顯示的解決方法
做程序員的,基本一看api就知道,用這個(gè)可以取消上一個(gè)toast的顯示,然后顯示下一個(gè),這樣就能解決出現(xiàn)的問(wèn)題。可是在測(cè)試的過(guò)程中,發(fā)現(xiàn)卻沒(méi)有想象中的那么簡(jiǎn)單,不信可以百度一下,很多很多人發(fā)現(xiàn)toast的cancel()方法不起作用2013-05-05Android數(shù)字華容道小游戲開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了Android數(shù)字華容道小游戲開(kāi)發(fā)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01Android開(kāi)發(fā)之ListView、GridView 詳解及示例代碼
本文主要介紹Android開(kāi)發(fā)之ListView、GridView,這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,幫助大家學(xué)習(xí)參考,有需要的小伙伴可以參考下2016-08-08關(guān)于Android Device Monitor 無(wú)法打開(kāi)問(wèn)題
大家好,本篇文章主要講的是關(guān)于Android Device Monitor 無(wú)法打開(kāi)問(wèn)題,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Android軟件啟動(dòng)動(dòng)畫(huà)及動(dòng)畫(huà)結(jié)束后跳轉(zhuǎn)的實(shí)現(xiàn)方法
這篇文章主要介紹了Android軟件啟動(dòng)動(dòng)畫(huà)及動(dòng)畫(huà)結(jié)束后跳轉(zhuǎn)的實(shí)現(xiàn)方法,實(shí)例分析了Android圖片播放及定時(shí)器的相關(guān)使用技巧,非常具有使用價(jià)值,需要的朋友可以參考下2015-10-10android高仿小米時(shí)鐘(使用Camera和Matrix實(shí)現(xiàn)3D效果)
這篇文章主要介紹了android高仿小米時(shí)鐘(使用Camera和Matrix實(shí)現(xiàn)3D效果),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-01-01