2012-08-26 64 views
0

的我計算函數圖形,並付諸android.graphics.Path對象,然後用android.graphics.Canvas.drawPath()畫它。Android的路徑與值超出範圍

這非常有效,除非絕對的y值非常高(正值或負值),並且應用程序在某些設備上運行。然後,它可能根本不會畫出路徑。發生這種情況的門檻似乎是隨機的和設備特定的。

有誰知道這裏可能是什麼問題?

[編輯:這僅發生目標API級是14或更高]

編輯: 例如,採取View.onDraw(Canvas canvas)方法內看看這個代碼:

Paint paint = new Paint(); 

    Path p1 = new Path(); 
    paint.setColor(Color.BLUE); 
    for(float x = 0; x < getWidth(); x++) 
     p1.lineTo(x, x); 
    canvas.drawPath(p1, paint); 

    Path p2 = new Path(); 
    paint.setColor(Color.GREEN); 
    for(float x = 0; x < getWidth(); x++) 
     p2.lineTo(x, x*x); 
    canvas.drawPath(p2, paint); 

第一路徑應該是從左上角到右下角的一條線;第二條路徑應該是相同的,但是具有拋物線的形狀(因此,你只能看到它的一部分)。

第一條路徑被繪製,第二條路徑沒有繪製,顯然是因爲y值太高。這將是很高興知道什麼「太高」意味雖然;)

+0

你可以給你的問題添加一些代碼嗎?究竟是什麼問題?拋出的異常或者路徑根本不可見(當您繪製出畫布大小時,這很明顯)。 – Ridcully

+0

我做了,謝謝你的建議。沒有例外拋出;路徑是完全不可見的,甚至是在畫布邊界內的部分。 – Georg

+0

請教你如何添加你的'paint'設置? – Ridcully

回答

1

我找到了解決方案。

的問題是,從API級別14,所有的繪圖完成硬件加速其does not support all the functionality

正如本文中所解釋,這是簡單的把硬件加速了與:

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

您將在this blog post找到更多的信息。