• Bitmap及其相关的类
  • Xfermode及其子类
  • Paint及其相关类和内部类
  • 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对应的大小了。我们用代码来描述下:

1	protected 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);


结尾

  • 腾讯T4级别Android架构技术脑图;查漏补缺,体系化深入学习提升

android使用shape画一条线 android shape圆形_Android