Android 绘图和shape圆形

  • Shader及其子类

  • Rect,Color,Point,Path等基础类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

实现:

shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件比如imageview或textview的高宽设置成一样就是正圆,solid表示远的填充色,stroke则代表远的边框线,所以两者结合可以实现带边缘的圆,当然也可以直接加上size控制高宽,下面的代码实现效果是一个带白边的红圆。

<?xml version="1.0" encoding="utf-8"?>

<shape

xmlns:android=“http://schemas.android.com/apk/res/android”

android:shape=“oval”

android:useLevel=“false”>

solidandroid:color=“@color/red”/

<stroke

android:width=“1dp”

android:color=“@color/white”/>

<sizeandroid:width=“20dp”

android:height=“20dp”/>

UI控件不满足我们的需求的时候,就需要自定义View。自定义view的一个重点就是实现就是去重写他的绘制过程,也就是View.onDraw(Canvas canvas)方法,它里面就是绘制图形的过程了,比如说一个Button,绘制按钮和按钮上的文字都是在它自己的onDraw方法中完成的。如果你想给ImageView加个蒙版,可以继承ImageView并且重写他的onDraw方法,调用完父类的onDraw之后,再自己Canvas来画一个黑色的半透明矩形,这样就可以对现有的控件进行加工了。

Canvas是画布,你绘制东西的时候就是绘到了这个画布上,给用户显示的东西也是这个画布上的东西。通常来说,当你调用到onDraw方法的时候对应的View已经确定了他的宽度和高度(关于View的measure和layout过程以后再详述)。那么在Canvas上,你画的范围就只有View对应的大小了。我们用代码来描述下:

1protected void onDraw(Canvas canvas) {
2    super.onDraw(canvas);
3    int verticalCenter    =  getHeight() / 2;
4    int horizontalCenter  =  getWidth() / 2;
5    int circleRadius      = 200;
6    Paint paint = new Paint();
7    paint.setAntiAlias(false);
8    paint.setColor(Color.RED);
9    canvas.drawCircle( horizontalCenter, verticalCenter-250, circleRadius, paint);
10 
11    paint.setAntiAlias(true);
12    paint.setStyle(Paint.Style.STROKE);
13    paint.setStrokeWidth(20);
14    canvas.drawCircle( horizontalCenter, verticalCenter+250, circleRadius, paint);

nt; direction:ltr!important; display:inline!important; background:none!important">, circleRadius, paint);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值