前言
之前在看别人写自定义view作绘制的时候,看到别人家的view自带发光效果,看起来也是蛮炫酷的,于是自己也抽出时间来试用一下,这里做了一个模仿太阳的各种状态样式。
先上效果先上效果:
实现方式:
public blurmaskfilter(float radius, blur style) {
实现是使用的paint类的setmaskfilter()方法,传入blurmaskfilter对象实现高斯模糊发光。
贴上代码
public class maskfilterview extends view { private paint lightpaint; private int centerx, centery; /** 发光范围 */ 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); } }
总结
到此这篇关于android如何绘制发光效果的文章就介绍到这了,更多相关android绘制发光效果内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!
如对本文有疑问, 点击进行留言回复!!
android -- ndk (stack corruption detected)
Android Span富文本图文混排 - ImageSpan(图文垂直居中)
Element DateTimePicker日期时间选择器的使用示例
【Appium踩坑】小米手机,启动报错:exited with code 255 writing to settings requires:android.permission.WRITE_SECUR
android 拍照 预览图与 照片分辨率(可视区域)不一致
[PAT顶级]1025 Keep at Most 100 Characters (35分)
网友评论