注意:是的,我知道在 Android 中还有其他制作按钮的方法,但这只是演示我的问题的一个示例(实际按钮要复杂得多)。所以请不要回复为Android中的按钮提供其他解决方案,我正在寻找PaintCode的解决方案......
多年来,我一直在使用 PaintCode 在 iOS 中绘制自定义按钮,效果非常好。我想对 android 做同样的事情并遇到以下问题:
- 在 PaintCode 中,我绘制了一个按钮,该按钮基本上是一个半径为 20 点的圆角矩形。
- 我画了一个框架,然后使用弹簧设置正确的调整大小行为(见截图)。
- 结果是,无论按钮的大小(= 框架)如何,角落都将始终以 20 点圆润。基本上是一个可调整大小的按钮。
这在 iOS 上效果很好,但在 android 上,半径是 20像素而不是点,导致半径从远到小(现在使用高分辨率设备)。
或者一般来说,当我使用 PaintCode 生成的 draw 方法绘制时,我在 PaintCode 中制作的所有图纸都很小。
似乎生成的绘图代码没有考虑设备的比例(就像在 iOS 上一样)。
查看https://www.paintcodeapp.com/documentation/android部分“缩放”PaintCode 建议使用 android 中的密度度量来执行缩放。这确实有效,但是使生成的绘图变得模糊,我想这是因为我们正在以较低的分辨率绘图,因为缩放。所以它不是一个可行的解决方案。
class Button1 @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : Button(context, attrs, defStyleAttr) {
var frame = RectF()
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
val displayDensity = resources.displayMetrics.density
canvas?.scale(displayDensity, displayDensity)
frame.set(0f,0f,width.toFloat()/displayDensity,height.toFloat()/displayDensity)
StyleKitName.drawButton1(canvas, frame)
}
}
有什么建议可以解决这个问题吗?这是 PaintCode 中的错误吗?