Shape
Shape
RectShape
RoundRectShape
RoundRectShape 原型
- public RoundRectShape(@Nullable float[] outerRadii, @Nullable RectF inset,
@Nullable float[] innerRadii)
- outerRadii 第一个和第二个都是 8 个数字数组,表示的的矩形的 4 个角的圆形半径;这 8 个数组分别从左上角开始表示各个弧度的半径,比如说左上角左上角有两个边组成,左边和上边,第一个数字表示的左边这条边最上面的半径,第二个表示上边连接处圆形的半径
- inset 第二个参数表示的内矩形的位置,距离大矩形左,上,右,下的距离
- 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
}
}
ArcShape 绘制圆形或者扇形
- ArcShape(float startAngle, float sweepAngle)
- 起始弧度,需要跨越的弧度;负数,则逆时针画弧,如果是正数,则顺时针画弧. 如果是 360 度,则是一个圈,圆的半径即大小你的 ImageView 本身来决定
- 划过的弧度
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
}
}
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
}
}
本文由作者按照 CC BY 4.0 进行授权