我使用兩種方法在我的應用程序中顯示按鈕和編輯文本:一種是使用可繪製的xml形狀,並將其應用於按鈕/編輯文本的背景,另一種是使用自定義視圖中的畫布。形狀drawable和canvas.draw之間的區別,解決方法?
我希望結果完全一樣,但事實並非如此。你可以看到下面的各個筆畫之間的細微差別:
兩者都是圓rectanlges與2DP筆劃寬度和8DP彎道半徑。 下面是它們中的每代碼:
左,用作背景可提拉形狀:
<?xml version="1.0" encoding="UTF-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/transparent"/>
<corners android:radius="@dimen/button_cornersRadius"/>
<stroke
android:width="@dimen/button_strokeWidth"
android:color="@color/blue_light"/>
</shape>
右鍵,定製視圖的的onDraw方法:
protected void onDraw(Canvas canvas) {
canvas.drawPath(drawingPath,strokePaint);
canvas.drawText(text,demiWidth,textHeight,textPaint);
}
蒙山:
strokePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
strokePaint .setStyle(Paint.Style.STROKE);
strokePaint .setStrokeWidth((int)(2*densityObtainedWithDisplayMetrics)));
strokePaint .setColor(the exact same as above);
,並顯示具有t梯度時,我觀察到的微小差異他相同的假設等價的方式:可繪製的形狀有一個更好的顯示,顏色看起來更好,線條不模糊。
有人可以解釋我爲什麼/如何解決它嗎? 如果我只用一種方法,那將是第二種,但我不想因爲它看起來不乾淨。 感謝您的幫助!
編輯:
令人驚訝地,發生這種差異僅當自定義佈局的筆劃寬度爲奇數。即使值的顯示也完全一樣!
嘗試使用'strokePaint.setDither(true);'。 'ShapeDrawable'可能已經被默認的抖動。 (另外,你可以上傳圖片到imgur或其他東西,然後張貼鏈接。) – Eric 2012-07-13 17:25:56
這是在它,我沒有把它放在代碼中,因爲它不會改變任何東西。 – 2012-07-13 17:27:39
@Soxxeh:我把圖片imgur:http://imgur.com/njzxD – 2012-07-13 17:32:08