一: Paint 類(lèi)
**1.圖形繪制 **
setAntiAlias();
設(shè)置畫(huà)筆的鋸齒效果
setColor();
設(shè)置畫(huà)筆的顏色
setARGB();
設(shè)置畫(huà)筆的A芬沉、R雌团、G、B值
setAlpha();
設(shè)置畫(huà)筆的Alpha值
setTextSize();
設(shè)置字體的尺寸
setStyle();
設(shè)置畫(huà)筆的風(fēng)格(空心Fill 或?qū)嵭膕troke)
setStrokeWidth();
設(shè)置空心邊框的寬度
setDither()
設(shè)定是否使用圖像抖動(dòng)處理甚颂,會(huì)使繪制出來(lái)的圖片顏色更加平滑和飽滿(mǎn)蜜猾,圖像更加清晰
setStrokeCap(Paint.Cap cap);
當(dāng)畫(huà)筆樣式為STROKE或FILL_OR_STROKE時(shí),設(shè)置筆刷的圖形樣式振诬,如圓形樣式 Cap.ROUND,或方形樣式Cap.SQUARE
setSrokeJoin(Paint.Join join);
設(shè)置繪制時(shí)各圖形的結(jié)合方式蹭睡,如平滑效果等
setXfermode(Xfermode xfermode);
設(shè)置圖形重疊時(shí)的處理方式,如合并赶么,取交集或并集肩豁,經(jīng)常用來(lái)制作橡皮的擦除效果
setFilterBitmap(boolean filter);
如果該項(xiàng)設(shè)置為true,則圖像在動(dòng)畫(huà)進(jìn)行中會(huì)濾掉對(duì)Bitmap圖像的優(yōu)化操作辫呻,加快顯示速度清钥,本設(shè)置項(xiàng)依賴(lài)于dither和xfermode的設(shè)置
setMaskFilter(MaskFilter maskfilter);
設(shè)置MaskFilter,可以用不同的MaskFilter實(shí)現(xiàn)濾鏡的效果放闺,如濾化祟昭,立體等
setColorFilter(ColorFilter colorfilter);
設(shè)置顏色過(guò)濾器,可以在繪制顏色時(shí)實(shí)現(xiàn)不用顏色的變換效果
setPathEffect(PathEffect effect);
設(shè)置繪制路徑的效果怖侦,如點(diǎn)畫(huà)線(xiàn)等
setShader(Shader shader);
設(shè)置圖像效果篡悟,使用Shader可以繪制出各種漸變效果
setShadowLayer(float radius ,float dx,float dy,int color);
在圖形下面設(shè)置陰影層谜叹,產(chǎn)生陰影效果,radius為陰影的角度搬葬,dx和dy為陰影在x軸和y軸上的距離荷腊,color為陰影的顏色
**2.文本繪制 **
setFakeBoldText(boolean fakeBoldText);
模擬實(shí)現(xiàn)粗體文字,設(shè)置在小字體上效果會(huì)非常差
setSubpixelText(boolean subpixelText);
設(shè)置該項(xiàng)為true急凰,將有助于文本在LCD屏幕上的顯示效果
setTextAlign(Paint.Align align);
設(shè)置繪制文字的對(duì)齊方向
setTextScaleX(float scaleX);
設(shè)置繪制文字x軸的縮放比例女仰,可以實(shí)現(xiàn)文字的拉伸的效果
setTextSize(float textSize);
設(shè)置繪制文字的字號(hào)大小
setTextSkewX(float skewX);
設(shè)置斜體文字,skewX為傾斜弧度
setTypeface(Typeface typeface);
設(shè)置Typeface對(duì)象抡锈,即字體風(fēng)格疾忍,包括粗體,斜體以及襯線(xiàn)體企孩,非襯線(xiàn)體等
setUnderlineText(boolean underlineText);
設(shè)置帶有下劃線(xiàn)的文字效果
setStrikeThruText(boolean strikeThruText);
設(shè)置帶有刪除線(xiàn)的效果
二:重點(diǎn)講解幾個(gè)方法
setStyle(Style style)
置畫(huà)筆樣式锭碳,如果不設(shè)置,默認(rèn)是全部填充(FILL)勿璃。可選項(xiàng)為:FILL推汽,F(xiàn)ILL_OR_STROKE补疑,或STROKE
畫(huà)筆樣式分三種:
1.Paint.Style.STROKE:描邊
2.Paint.Style.FILL_AND_STROKE:描邊并填充
3.Paint.Style.FILL:填充
**setStrokeCap(Paint.Cap cap); **
該方法用來(lái)設(shè)置我們畫(huà)筆的 筆觸風(fēng)格 ,比如:ROUND歹撒,表示是圓角的筆觸莲组。那么什么叫筆觸呢,其實(shí)很簡(jiǎn)單暖夭,就像我們現(xiàn)實(shí)世界中的筆锹杈,如果你用圓珠筆在紙上戳一點(diǎn),那么這個(gè)點(diǎn)一定是個(gè)圓迈着,即便很小竭望,它代表了筆的筆觸形狀,如果我們把一支鉛筆筆尖削成方形的裕菠,那么畫(huà)出來(lái)的線(xiàn)條會(huì)是一條彎曲的“矩形”咬清,這就是筆觸的意思。除了ROUND奴潘,Paint.Cap還提供了另外兩種類(lèi)型:SQUARE和BUTT
**setSrokeJoin(Paint.Join join); **
這個(gè)方法用于設(shè)置接合處的形態(tài)旧烧,就像你用代碼畫(huà)了一條線(xiàn),但是這條線(xiàn)其實(shí)是由無(wú)數(shù)條小線(xiàn)拼接成的画髓,拼接處的形狀就由該方法指定掘剪。可選參數(shù)是:BEVEL奈虾,MITER夺谁,ROUND肆汹。
**setXfermode(Xfermode xfermode); **
設(shè)置圖形重疊時(shí)的處理方式,如合并予权,取交集或并集昂勉,經(jīng)常用來(lái)制作橡皮的擦除效果
上面這個(gè)方法的功能很強(qiáng)大,它的主要原理就是:
可以使用圖像合成的16條Porter-Duff規(guī)則的任意一條來(lái)控制Paint如何與已有的Canvas圖像進(jìn)行交互扫腺。
16條Porter-Duff規(guī)則
1.PorterDuff.Mode.CLEAR
所繪制不會(huì)提交到畫(huà)布上岗照。
2.PorterDuff.Mode.SRC
顯示上層繪制圖片
3.PorterDuff.Mode.DST
顯示下層繪制圖片
4.PorterDuff.Mode.SRC_OVER
正常繪制顯示,上下層繪制疊蓋笆环。
5.PorterDuff.Mode.DST_OVER
上下層都顯示攒至。下層居上顯示。
6.PorterDuff.Mode.SRC_IN
取兩層繪制交集躁劣。顯示上層迫吐。
7.PorterDuff.Mode.DST_IN
取兩層繪制交集。顯示下層账忘。
8.PorterDuff.Mode.SRC_OUT
取上層繪制非交集部分志膀。
9.PorterDuff.Mode.DST_OUT
取下層繪制非交集部分。
10.PorterDuff.Mode.SRC_ATOP
取下層非交集部分與上層交集部分
11.PorterDuff.Mode.DST_ATOP
取上層非交集部分與下層交集部分
12.PorterDuff.Mode.XOR
異或:去除兩圖層交集部分
13.PorterDuff.Mode.DARKEN
取兩圖層全部區(qū)域鳖擒,交集部分顏色加深
14.PorterDuff.Mode.LIGHTEN
取兩圖層全部溉浙,點(diǎn)亮交集部分顏色
15.PorterDuff.Mode.MULTIPLY
取兩圖層交集部分疊加后顏色
16.PorterDuff.Mode.SCREEN
取兩圖層全部區(qū)域,交集部分變?yōu)橥该魃?/p>
實(shí)踐才是真正的道理蒋荚,推薦兩個(gè)為hongyang的csdn博客,
使用規(guī)則6: PorterDuff.Mode.SRC_IN
Android 完美實(shí)現(xiàn)圖片圓角和圓形(對(duì)實(shí)現(xiàn)進(jìn)行分析)
使用規(guī)則9 : PorterDuff.Mode.DST_OUT
Android 自定義控件實(shí)現(xiàn)刮刮卡效果 真的就只是刮刮卡么