如何获取一个 SVG
图标中的路径Path
效果图:
Step 1 - 引入 svgknife.aar
链接: https://pan.baidu.com/s/1s-Dr_5zmoho5Rwy4txzbaA 提取码: 9669 复制这段内容后打开百度网盘手机App,操作更方便哦
Step 2 - 自定义个View
画解析出来的Path
kotlin
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.util.AttributeSet
import android.view.View
import androidx.annotation.RawRes
import com.looper.android.svgknife.SvgKnife.SvgPath
class BloomImageView @JvmOverloads constructor(
context: Context,
attributeSet: AttributeSet? = null
) : View(context, attributeSet) {
private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
style = Paint.Style.STROKE
color = Color.RED
strokeWidth = 4f
// 核心是设置一个 ShadowLayer
setShadowLayer(10f, 0f, 0f, Color.RED)
}
private val svgKnife = SvgKnife(paint)
private var bloomIconPaths = mutableListOf<SvgPath>()
fun setBloomIcon(@RawRes rawRes: Int) {
bloomIconPaths.clear()
svgKnife.load(context, rawRes)
invalidate()
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
if (bloomIconPaths.isEmpty()) {
bloomIconPaths.addAll(svgKnife.getPathsForViewport(width, height))
}
bloomIconPaths.forEach {
canvas.drawPath(it.path, paint)
}
}
}