问题描述
有没有办法在 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 (将#修改为@)