Android自定义控件之二 使用path绘图

在上一篇博客中。我们探索了onDraw方法。使用Ondraw方法在屏幕上画了三个圆。并且实现了与用户的交互。不了解得同学可以看这里:点击打开链接

接下来我们使用path进行绘图。一个path可能包含很多线,点,甚至图形

定义一个path

public class SimpleDrawingView extends View {
  // ...
  private Path path = new Path();
  // ...
}

path就是路径的含义。我们可以定义一些点。然后把这些点连接起来,就形成了图形

修改上一篇博文中的onTouchEvent方法

public class SimpleDrawingView extends View {
    private Path path = new Path();

    // 得到x和y。并将他们加入path
    public boolean onTouchEvent(MotionEvent event) {
        float pointX = event.getX();
        float pointY = event.getY();
        // 每当事件发生时
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            //起点
            path.moveTo(pointX, pointY);
            break;
        case MotionEvent.ACTION_MOVE:
            // 画一条线,连接这一个点和上一个
            path.lineTo(pointX, pointY);
            break;
        default:
            return false;
       }

       postInvalidate(); // 指明需要重绘
       return true; 
    }

   // ...
}

然后修改上一篇博文中的onDraw方法。把圆去掉。把我们的path绘制出来

public class SimpleDrawingView extends View {
  // ... 触摸事件...

  // 画出path
  @Override
  protected void onDraw(Canvas canvas) {
      canvas.drawPath(path, drawPaint);
  }

  private void setupPaint() {
    // 与之前相同
    drawPaint.setStyle(Paint.Style.STROKE); // 修改成stroke
    // ...
  }
}


结果如图。

怎么样,是不是流畅多了。需要完整的代码请留言。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值