当前位置: 移动技术网 > 移动技术>移动开发>Android > Android如何绘制发光效果详解

Android如何绘制发光效果详解

2020年07月27日  | 移动技术网移动技术  | 我要评论

前言

之前在看别人写自定义view作绘制的时候,看到别人家的view自带发光效果,看起来也是蛮炫酷的,于是自己也抽出时间来试用一下,这里做了一个模仿太阳的各种状态样式。

先上效果先上效果:

实现方式:

public blurmaskfilter(float radius, blur style) {

实现是使用的paint类的setmaskfilter()方法,传入blurmaskfilter对象实现高斯模糊发光。

  • float radius 设置模糊半径
  • blur style 设置发光样式,包括
    • blur.inner(内发光),blur.normal(内外发光)
    • blur.solid(外发光),blur.outer(仅外发光可见)

贴上代码

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绘制发光效果内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网