2012-03-14 51 views
0

我嘗試繪製寬度取決於密度的線條。 問題是我不能讓setStrokeWidth()方法繪製我想要的寬度。 下面是代碼:爲什麼安卓圖形塗料具有1.5比例因子

...  
private void init(){ 
     paint = new Paint(); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.BLACK);   
     paint.setStrokeWidth(3);  
    } 

@Override 
    protected void onDraw(Canvas canvas){ 
     canvas.drawLine(0, 0, getWidth(), 0, paint);   
    } 
... 

上面的代碼同時顯示上和MDPI HDPI屏幕與2px的寬度的線。 如何讓繪畫以指定的寬度繪製線條? 1.5比例因子來自哪裏?

回答

2

您正在繪製在畫布的絕對頂部,僅顯示一半線條,這就是爲什麼它結束了2 px寬。要查看整個行,請稍微移動它。

要創建您可以使用下面的代碼密度相關的值:

float scale = getResources().getDisplayMetrics().density; 
int sizeInDp = (int) (desiredWidthInPx*scale + 0.5f); 

paint.setStrokeWidth(sizeInDp); 
+0

非常感謝!你是否憑經驗找到了這個解決方案,或者文檔中有提示? – Zzokk 2012-03-15 09:14:41

+0

它在Android開發人員的這個頁面中簡要提及(看看*密度獨立像素*部分):http://developer.android.com/guide/practices/screens_support.html 但我想我得到了完整的公式從SO的其他問題。 – Jave 2012-03-15 09:22:27

+0

太好了,再次感謝。 – Zzokk 2012-03-16 06:33:01