Android如何繪制發(fā)光效果詳解
前言
之前在看別人寫自定義view作繪制的時(shí)候,看到別人家的view自帶發(fā)光效果,看起來(lái)也是蠻炫酷的,于是自己也抽出時(shí)間來(lái)試用一下,這里做了一個(gè)模仿太陽(yáng)的各種狀態(tài)樣式。
先上效果先上效果:
實(shí)現(xiàn)方式:
public BlurMaskFilter(float radius, Blur style) {
實(shí)現(xiàn)是使用的Paint類的setMaskFilter()方法,傳入BlurMaskFilter對(duì)象實(shí)現(xiàn)高斯模糊發(fā)光。
float radius 設(shè)置模糊半徑 Blur style 設(shè)置發(fā)光樣式,包括 Blur.INNER(內(nèi)發(fā)光),Blur.NORMAL(內(nèi)外發(fā)光) Blur.SOLID(外發(fā)光),Blur.OUTER(僅外發(fā)光可見(jiàn))貼上代碼
public class MaskFilterView extends View { private Paint lightPaint; private int centerX, centerY; /** 發(fā)光范圍 */ private int radioRadius = 70; public MaskFilterView(Context context) { super(context); init(); } public MaskFilterView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } private void init() { lightPaint = new Paint(); setLayerType(LAYER_TYPE_SOFTWARE, null); lightPaint.setColor(Color.parseColor('#EC3E3E')); lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.INNER)); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { centerX = getLeft() + getMeasuredWidth()/2; centerY = getTop() + getMeasuredHeight()/2; super.onMeasure(widthMeasureSpec, widthMeasureSpec); } public void setBlurType(int blurType) { switch (blurType) { case 0: lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.INNER)); break; case 1: lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.NORMAL)); break; case 2: lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.SOLID)); break; case 3: lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.OUTER)); break; } invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(centerX, centerY, 150, lightPaint); }}
總結(jié)
到此這篇關(guān)于Android如何繪制發(fā)光效果的文章就介紹到這了,更多相關(guān)Android繪制發(fā)光效果內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. XML入門的常見(jiàn)問(wèn)題(一)2. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案3. 不同瀏覽器對(duì)XML的解析是不同的4. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向5. IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案6. 使用XSL將XML文檔中的CDATA注釋輸出為HTML文本7. asp使用Weekday函數(shù)計(jì)算項(xiàng)目的結(jié)束時(shí)間8. 讀寫xml文件的2個(gè)小函數(shù)9. asp讀取xml文件和記數(shù)10. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單
