xfermode实现原型圆形图片
xfermode简单的是使用没什么好说的,直接上代码
package com.example.opencvapplication
import android.content.Context
import android.graphics.*
import android.util.AttributeSet
import android.view.View
class HeardView(context: Context?, attrs: AttributeSet?) : View(context, attrs) {
val paint=Paint(Paint.ANTI_ALIAS_FLAG).apply {
color=Color.BLACK
}
val model=PorterDuffXfermode(PorterDuff.Mode.SRC_IN)
var tcBitmap:Bitmap
init {
tcBitmap=BitmapFactory.decodeResource(resources,R.drawable.icon_tx)
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
paint.style=Paint.Style.FILL
val id=canvas?.saveLayer(0f,0f,width.toFloat(),height.toFloat(),paint)
canvas?.drawCircle(width/2f,height/2f,width/2f,paint)
paint.xfermode=model
canvas?.drawBitmap(tcBitmap,0f,0f,paint)
paint.xfermode=null
paint.style=Paint.Style.STROKE
paint.strokeWidth=5f.dp
canvas?.drawCircle(width/2f,height/2f,width/2f- paint.strokeWidth/2,paint)
canvas?.restoreToCount(id!!)
//
}
}