canvas.drawDoubleRoundRect(RectF outer, float[] outerRadii, RectF inner, float[] innerRadii, Paint paint)
作用是用指定画笔绘制两个圆角矩形。
outer:外部矩形
outerRadii:外部矩形的四个圆角半径。8个值,floatArrayOf(左上,左上,右上,右上,右下,右下,左下,左下)比如:floatArrayOf(50f,50f,10f,10f,10f,10f,0f,0f)
inner:内部矩形
innerRadii:内部矩形的四个圆角半径
paint:画笔,默认是Paint.Style.FILL
如果要绘制这样效果图如何实现?
package com.lxm.note.canvas.d3
import android.content.Context
import android.graphics.*
import android.os.Build
import android.util.AttributeSet
import android.view.View
import androidx.annotation.RequiresApi
/**
* Desc
*/
@RequiresApi(Build.VERSION_CODES.Q)
class CanvasView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
private val mPaint: Paint = Paint(Paint.ANTI_ALIAS_FLAG)
init {
setLayerType(LAYER_TYPE_SOFTWARE, null)
mPaint.color = Color.GREEN
}
override fun draw(canvas: Canvas) {
super.draw(canvas)
val saved = canvas.saveLayer(null, null, Canvas.ALL_SAVE_FLAG)
val outer: RectF = RectF(100f,100f,500f,300f)
val outerRadii = floatArrayOf(50f,50f,10f,10f,10f,10f,0f,0f)
val inner: RectF = RectF(150f,150f,450f,250f)
val innerRadii = floatArrayOf(10f,10f,10f,10f,10f,10f,0f,0f)
canvas.drawDoubleRoundRect(outer, outerRadii, inner ,innerRadii , mPaint)
canvas.restoreToCount(saved)
}
}
activity_date3.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.lxm.note.canvas.d3.CanvasView
android:id="@+id/canvasView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>