如何解决形状的 Android 自定义属性
有没有办法在 Android 中为形状指定自定义属性?下面是生成圆角矩形的代码示例,圆角半径设置为 11dp。然后我们可以使用 android:background 属性将它附加到 ImageView。我想要的是将拐角半径指定为设备宽度的百分比,例如将半径值设置为“0.5dw”(这意味着当前设备宽度的 50%)。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0000"/>
<corners android:radius="11dp"/>
</shape>
我知道我们可以创建一个自定义类来定义可绘制对象,然后使用它来创建一个圆角矩形,如下面的代码所示。但是有没有更好的方法呢?
class RoundedRectangle(var color: Int,var cornerRadius: Float) : Drawable() {
private val rectPaint = Paint().apply {
isAntiAlias = true
this.color = this@RoundedRectangle.color
}
private val drawableBounds = RectF()
override fun draw(canvas: Canvas) {
val bounds = RectF(bounds)
drawableBounds.set(bounds.left,bounds.top,bounds.right,bounds.bottom)
canvas.drawRoundRect(drawableBounds,cornerRadius,rectPaint)
}
override fun setAlpha(alpha: Int) {
rectPaint.alpha = alpha
}
override fun setColorFilter(colorFilter: ColorFilter?) {
rectPaint.colorFilter = colorFilter
}
override fun getopacity(): Int {
return PixelFormat.TRANSLUCENT
}
}
val cornerRadius = 0.05f * (activity.resources.displayMetrics.widthPixels) //5%
myImageView.background = RoundedRectangle(Color.RED,cornerRadius)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。