Android 用自定义view画圆详解
原创
©著作权归作者所有:来自51CTO博客作者IT路宇的原创作品,请联系作者获取转载授权,否则将追究法律责任
博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站
1.首先引入布局xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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">
<com.example.hua.CirclelView
android:id="@+id/cv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
2.创建一个继承自view的Java类,CircleView
public class CirlView extends View {
public CirlView(Context context) {
super(context);
}
public CirlView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CirlView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CirlView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
3.然后在onDraw里面创建画布
/**
* 绘图
* @param canvas
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
//定义画笔
Paint paint1 = new Paint();
Paint paint2 = new Paint();
Paint paint3 = new Paint();
//定义画笔颜色
paint1.setColor(Color.BLUE);
paint2.setColor(Color.YELLOW);
paint3.setColor(Color.GREEN);
//在画布上开始画圆
canvas.drawCircle(100,100, 100, paint1);
canvas.drawCircle(200,200,150,paint2);
canvas.drawCircle(300,300,200,paint3);
drawCircle后面属性分别为(在横坐标上圆心距离左上角的距离,在纵坐标上圆心距离左上角的距离,圆的半径,画笔)
效果图如下:
这是一个简单的画圆
二、接下来咱们来画一个圆环
代码如下:
//得到屏幕宽高
int width = getWidth();
int height = getHeight();
设置圆环形状和大小
//消除锯齿
paint1.setAntiAlias(true);
paint2.setAntiAlias(true);
paint3.setAntiAlias(true);
//因为绘图有一个先后的层级,所以要是半径最大的,否则会被后来的圆覆盖掉
canvas.drawCircle(width/2,height/2,300,paint1);
canvas.drawCircle(width/2,height/2,200,paint2);
canvas.drawCircle(width/2,height/2,100,paint3);
效果如图所示
以上就是本文的全部内容,希望对大家的学习有所帮助。
有什么不足的地方也希望大家在评论区指正,咱们共同学习,共同进步。