android开发PathEffect问题处理

 更新时间:2017年11月17日 10:12:07   投稿:laozhang  
本文主要整理了关于android中PathEffect的问题汇总以及处理方式,以及给大家做了关于PathEffect类的详细解释。

我要画出一块由不规则path组成的区域,并且这个path因为视觉效果需要设置圆角,我就通过Paint.setPathEffect(new CornerPathEffect(300)); 给设置了圆角,但是在通过这个path组合成区域的时候因为这个圆角的设置整个区域都有圆角的效果了,这不是我想要的。

如图,黑色是我的path,红色是我设置了圆角的由path组成的区域。四个角落都有了圆角的效果,这不是我想要的。

而蓝色区域是未设置圆角的,此时path一侧的区域就不符合标准了。

以下是我的全部代码

public class PathEffectView extends View {

  private Path line;
  private Paint linePaint;


  private Path range;
  private Paint rangePaint;
  private final Paint paint3;

  public PathEffectView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);

    linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);

    linePaint.setStrokeWidth(10);
    linePaint.setColor(Color.BLACK);
    linePaint.setStyle(Paint.Style.STROKE);
    linePaint.setPathEffect(new CornerPathEffect(300));

    rangePaint = new Paint(linePaint);

    rangePaint.setColor(Color.BLUE);
    rangePaint.setStyle(Paint.Style.FILL);


    paint3 = new Paint(linePaint);
    paint3.setColor(Color.RED);

  }

  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    line = new Path();
    range = new Path();

    line.moveTo(0,1000);
    line.rLineTo(200,-150);
    line.rLineTo(200,300);
    line.rLineTo(200,-350);
    line.rLineTo(200,320);
    line.rLineTo(200,-370);
    line.lineTo(w,800);


    range.addPath(line);
    range.lineTo(w,h);
    rangePaint.setPathEffect(null);
    range.lineTo(0,h);
    range.close();
  }

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.save();
    canvas.translate(0,-20);
    canvas.drawPath(line, linePaint);
    canvas.restore();


    canvas.drawPath(range, rangePaint);
    canvas.drawPath(range,paint3);
  }
}

相关文章

  • Android 触摸事件监听(Activity层,ViewGroup层,View层)详细介绍

    Android 触摸事件监听(Activity层,ViewGroup层,View层)详细介绍

    这篇文章主要介绍了Android 触摸事件监听(Activity层,ViewGroup层,View层)详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • Kotlin中Suppress的非常规用法示例

    Kotlin中Suppress的非常规用法示例

    这篇文章主要给大家介绍了关于Kotlin中Suppress的非常规用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 详解ViewBinding用法

    详解ViewBinding用法

    这篇文章主要介绍了ViewBinding用法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Android编程之单元测试实例分析

    Android编程之单元测试实例分析

    这篇文章主要介绍了Android编程之单元测试,结合具体实例分析了Android单元测试的具体实现步骤与相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android开发中ImageLoder进行图片加载和缓存

    Android开发中ImageLoder进行图片加载和缓存

    这篇文章主要介绍了Android开发中ImageLoder进行图片加载和缓存的相关资料,需要的朋友可以参考下
    2016-04-04
  • Android App设计规范深入讲解

    Android App设计规范深入讲解

    随着安卓智能手机不停的更新换代,安卓手机系统越来越完美,屏幕尺寸也越来越大啦,下面这篇文章主要给大家介绍了关于Android App设计规范的相关资料,需要的朋友可以参考下
    2022-10-10
  • Flutter 实现进度条效果

    Flutter 实现进度条效果

    在一些上传页面炫酷的进度条效果都是怎么实现的,今天小编通过本文给大家分享Flutter 一行代码快速实现你的进度条效果,感兴趣的朋友一起看看吧
    2020-05-05
  • Android开发悬浮按钮 Floating ActionButton的实现方法

    Android开发悬浮按钮 Floating ActionButton的实现方法

    这篇文章主要介绍了Android开发悬浮按钮 Floating ActionButton的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 百度地图实现小车规划路线后平滑移动功能

    百度地图实现小车规划路线后平滑移动功能

    这篇文章主要介绍了百度地图实现小车规划路线后平滑移动功能,本文是小编写的一个demo,通过效果图展示的非常直白,需要的朋友可以参考下
    2020-01-01
  • java反射android的r文件的示例

    java反射android的r文件的示例

    这篇文章主要介绍了java反射android的r文件的示例,动态取得R文件的int值,需要的朋友可以参考下
    2014-04-04

最新评论