注意:是的,我知道在Android中有其他的做按鈕的方式,但這只是一個例子來證明我的問題(實際按鈕要複雜得多)。所以請不要回復提供其他解決方案的Android按鈕,我正在尋找一個解決方案與PaintCode ...PaintCode繪圖代碼Android使用的是像素而不是點/ DP
我一直在使用PaintCode在iOS中繪製自定義按鈕多年,它工作出色。我想爲android做同樣的事情,並且有以下問題:
- 在PaintCode中,我繪製了一個基本上是圓角矩形的半徑爲20個點的按鈕。
- 我畫了一個框架,然後使用彈簧設置正確的大小調整行爲(請參見截圖)。
- 結果是,無論按鈕的大小是什麼(=框架),角落將始終用20點很好地舍入。基本上是一個很好的可調整大小的按鈕。
這工作得非常好iOS上,但在Android上,半徑爲20個像素不點,導致遠小半徑(現與高分辨率的設備)。
或者一般情況下,使用PaintCode生成的繪製方法繪製時,在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中的錯誤嗎?
與已經實施的變更層軟件的伎倆(共同縮放,我把我原來的問題)。非常感謝您的快速回復和大力支持! – HixField