文章

Shape

Shape

RectShape

RoundRectShape

RoundRectShape 原型

  1. outerRadii 第一个和第二个都是 8 个数字数组,表示的的矩形的 4 个角的圆形半径;这 8 个数组分别从左上角开始表示各个弧度的半径,比如说左上角左上角有两个边组成,左边和上边,第一个数字表示的左边这条边最上面的半径,第二个表示上边连接处圆形的半径
  2. inset 第二个参数表示的内矩形的位置,距离大矩形左,上,右,下的距离
  3. innerRadii 第一个参数表示的外边角 第三个参数表示的内边角,也就是大矩形套小矩形

如果后面两个参数都为 null 的话就只有一个大矩形

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class RoundRectShapeDemo : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_round_rect_shape_demo)

        // 外部矩形弧度:左上、右上、右下、左下的圆角半径
        val outerRadii = floatArrayOf(20F, 20F, 20F, 20F, 20F, 20F, 0F, 0F)
        // 内部矩形与外部矩形的距离 左上角x,y距离, 右下角x,y距离
        val inset = RectF(100F, 10F, 50F, 50F)
        // 内部矩形弧度 内矩形 圆角半径
        val innerRadii = floatArrayOf(1F, 20F, 20F, 20F, 20F, 20F, 20F, 1F)

        val rrs = RoundRectShape(outerRadii, inset, innerRadii)
        val drawable = ShapeDrawable(rrs)
        // 指定填充颜色
        drawable.paint.color = Color.RED
        // 指定填充模式
        drawable.paint.style = Paint.Style.FILL
        tv_test.background = drawable
    }
}

cgvo3

ArcShape 绘制圆形或者扇形

  • ArcShape(float startAngle, float sweepAngle)
  1. 起始弧度,需要跨越的弧度;负数,则逆时针画弧,如果是正数,则顺时针画弧. 如果是 360 度,则是一个圈,圆的半径即大小你的 ImageView 本身来决定
  2. 划过的弧度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class ArcShapeDemo : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_arc_shape_demo)

        val arcShape = ArcShape(0F, 60F)
        val drawable = ShapeDrawable(arcShape)
        // 指定填充颜色
        drawable.paint.color = Color.RED
        // 指定填充模式
        drawable.paint.style = Paint.Style.FILL
        tv_test.background = drawable
    }
}

awvl4

OvalShape 椭圆

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class OvalShapeDemo : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_oval_shape_demo)

        val arcShape = OvalShape()
        val drawable = ShapeDrawable(arcShape)
        // 指定填充颜色
        drawable.paint.color = Color.RED
        // 指定填充模式
        drawable.paint.style = Paint.Style.FILL
        tv_test.background = drawable
    }
}

z8snq

本文由作者按照 CC BY 4.0 进行授权