android 涂鴉功能

項(xiàng)目突然用到涂鴉的功能伺帘,網(wǎng)上的Demo背景都是空白的昭躺,還有好多BUG,就自己搞了一個(gè)伪嫁,好了不多說(shuō)了领炫,進(jìn)入正題,所謂涂鴉就是利用安卓的繪畫(huà)功能在畫(huà)布上進(jìn)行操作,直接上代碼吧

/**

*初始化組件

*/

private void init() {

mPaint=newPaint();

mPaint.setAntiAlias(true);//去除鋸齒

mPaint.setStrokeWidth(5);//默認(rèn)畫(huà)筆粗細(xì)

mPaint.setStyle(Paint.Style.STROKE);//這只畫(huà)筆的風(fēng)格為空心的

mPaint.setColor(Color.BLACK);//設(shè)置畫(huà)筆的默認(rèn)顏色

mPath=newPath();

//穿件一個(gè)空白的畫(huà)板背景

mBitmap= Bitmap.createBitmap(screenWidth,screenHeight, Bitmap.Config.ARGB_8888);

Log.i("gaodu",screenHeight+"a");

mCanvas=newCanvas(mBitmap);

mCanvas.drawColor(bg);//設(shè)置畫(huà)板背景的顏色张咳,默認(rèn)為白色

}

創(chuàng)建畫(huà)布背景所需的Bitmap后需要給他drawColor否則得到的圖片是透明的

然后就是

@Override

protected voidonDraw(Canvas canvas) {

canvas.drawBitmap(mBitmap,0,0,null);

canvas.drawPath(mPath,mPaint);

}

此處不做過(guò)多的描述帝洪,應(yīng)該都懂;

以下是最重要的一點(diǎn),通過(guò)onTouchEvent方法劃線

@Override

public booleanonTouchEvent(MotionEvent event) {

floatx = event.getX();//得到點(diǎn)擊的位置相對(duì)于該組件左上角的位置的X坐標(biāo)

floaty = event.getY();//得到點(diǎn)擊的位置相對(duì)于該組件左上角的位置的Y坐標(biāo)

switch(event.getAction()) {

caseMotionEvent.ACTION_DOWN:

currentX= x;

currentY= y;

mPath.moveTo(currentX,currentY);//設(shè)置畫(huà)筆的位置

break;

caseMotionEvent.ACTION_MOVE:

currentX= x;

currentY= y;

mPath.quadTo(currentX,currentY, x, y);//畫(huà)線

break;

caseMotionEvent.ACTION_UP:

mCanvas.drawPath(mPath,mPaint);

Log.i("高度", y +" c");

break;

}

invalidate();

return true;

}

畫(huà)完后就剩下取得畫(huà)板上面的圖片了脚猾,往下看:

//縮放生成圖片

publicBitmap resizeImage(Bitmap bitmap,intwidth,intheight) {

intoriginWidth = bitmap.getWidth();

intoriginHeight = bitmap.getHeight();

floatscaleWidth = ((float) width) / originWidth;

floatscaleHeight = ((float) height) / originHeight;

Matrix matrix =newMatrix();

matrix.postScale(scaleWidth, scaleHeight);

Bitmap resizedBitmap = Bitmap.createBitmap(bitmap,0,0,screenWidth,

getBottom() - getTop(), matrix,true);//截取圖像

returnresizedBitmap;

}

截取圖像需要特別注意葱峡,需要用坐標(biāo)截取龙助;

然后需要清除功能的不要錯(cuò)過(guò):

if(mCanvas!=null) {

mPath.reset();

mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

mCanvas.drawColor(bg);

invalidate();

}


OK族沃,準(zhǔn)備搞定了,接下來(lái)調(diào)用它吧:

mPaintView=newTuYaView(this, screenWidth, screenHeight);

mPaintView.setPaintColor(Color.BLACK);

mPaintView.setPaintSize(20);

mPaintView.setBackGround(Color.WHITE);

mFrameLayout.addView(mPaintView);

mPaintView.requestFocus();

好了泌参,完了,希望對(duì)大家有幫助常空,寫(xiě)的不好多多包涵沽一。。漓糙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铣缠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子昆禽,更是在濱河造成了極大的恐慌蝗蛙,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醉鳖,死亡現(xiàn)場(chǎng)離奇詭異捡硅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)盗棵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)壮韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人纹因,你說(shuō)我怎么就攤上這事喷屋。” “怎么了瞭恰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵屯曹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)恶耽,這世上最難降的妖魔是什么密任? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮驳棱,結(jié)果婚禮上批什,老公的妹妹穿的比我還像新娘。我一直安慰自己社搅,他們只是感情好驻债,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著形葬,像睡著了一般合呐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笙以,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天淌实,我揣著相機(jī)與錄音,去河邊找鬼猖腕。 笑死拆祈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的倘感。 我是一名探鬼主播放坏,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼老玛!你這毒婦竟也來(lái)了淤年?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜡豹,失蹤者是張志新(化名)和其女友劉穎麸粮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體镜廉,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弄诲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娇唯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片威根。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖视乐,靈堂內(nèi)的尸體忽然破棺而出洛搀,到底是詐尸還是另有隱情,我是刑警寧澤佑淀,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布留美,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谎砾。R本人自食惡果不足惜逢倍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望景图。 院中可真熱鬧较雕,春花似錦、人聲如沸挚币。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妆毕。三九已至慎玖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛粘,已是汗流浹背趁怔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留薪前,地道東北人润努。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像示括,于是被迫代替她去往敵國(guó)和親任连。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章例诀,未經(jīng)博主允許不得轉(zhuǎn)載 前言 Canvas 本意是畫(huà)布的意思,然而將它理解為繪制工具一...
    cc榮宣閱讀 41,547評(píng)論 1 47
  • 之前,項(xiàng)目中需要一個(gè)和界面風(fēng)格匹配的課展開(kāi)的懸浮按鈕裁着。在嘗試了多個(gè)第三方庫(kù)無(wú)果后繁涂,看起來(lái)只能自己寫(xiě)一個(gè)了。下面開(kāi)始...
    7dollars閱讀 3,526評(píng)論 1 9
  • //通過(guò)獲得資源文件進(jìn)行設(shè)置二驰。根據(jù)不同的情況R.color.red也可以是R.string.red或者R.draw...
    gogoingmonkey閱讀 1,933評(píng)論 0 2
  • Android中使用圖形處理引擎扔罪,2D部分是android SDK內(nèi)部自己提供,3D部分是用Open GL ES ...
    溫暖的外星閱讀 3,163評(píng)論 2 10
  • 上周在簡(jiǎn)書(shū)朋友里看到一個(gè)人記孩子生病之后的自己桶雀,內(nèi)容大半是描寫(xiě)孩子生病狀態(tài)矿酵,祈愿孩子早日康復(fù)不再難受,自己一直陪在...
    江河rl閱讀 151評(píng)論 2 3