效果图:
学之前请参考,总结《I》:
https://blog.csdn.net/qq_27494201/article/details/96476451
CustomView.java
public class CustomView extends View {
private Paint paint;
public CustomView(Context context, AttributeSet attributeSet) {
super(context);
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = canvas.getWidth();
int height = canvas.getHeight();
paint.setColor(Color.GRAY);
canvas.drawRect(0,0,width,height,paint); // 绘制背景
paint.setColor(Color.BLUE);
Path path = new Path();
// 设置多边形的点
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*2,0);
path.lineTo(width,height/2);
path.lineTo(width/3*2,height);
path.lineTo(width/3,height);
path.close(); // 使这些点构成封闭的多边形
canvas.drawPath(path,paint); // 绘制多边形
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
CustomView customView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
customView = findViewById(R.id.c_view);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ccv.turbosnail.drawfiguredemo.CustomView
android:id="@+id/c_view"
android:layout_width="150dp"
android:layout_height="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
</android.support.constraint.ConstraintLayout>
慢慢分析:
path.moveTo(0,height/2); // 设置起点坐标
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
此时还是跟上图 一样,绘制的是一条看不见的直线
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*2,0);
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*4,0);
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*7,0);
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*2,0);
path.lineTo(width,height/2);
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*2,0);
path.lineTo(width,height/2);
path.lineTo(width/3*2,height);
path.moveTo(0,height/2); // 设置起点坐标
path.lineTo(width/3,0); // 从前一个点到当前直线
path.lineTo(width/3*2,0);
path.lineTo(width,height/2);
path.lineTo(width/3*2,height);
path.lineTo(width/3,height);
如果有问题,可以联系我qq:1787424177
最后,我真诚的希望能评论一句嘛,让我知道你来过,我会很开心的