我目前正在製作Android動態壁紙。在這個特定的壁紙中,我有一個從使用觸摸位置生成的圓形陣列。在應用程序的設置中,我將允許它們更改所述功能的分辨率,因爲這涉及到這一點。因此,我寫了我自己的反鋸齒循環函數。加速Android drawRect調用
渲染是通過類似於粒子的效果完成的 - 我計算矩形的顏色,並將其與圓形一起傳遞,並相應地渲染它們。這些矩形爲我存儲值,所以我需要分別渲染每個值。爲了加快速度,我盡了一切努力 - 爲各種顏色預先計算Paint對象(幾個足夠有效且仍然有效的對象),預先計算了矩形的座標等。但是,我仍然在速度上失去了渲染循環 - 一個簡單的循環,遍歷任何有顏色的矩形並將其應用於屏幕。
我不做任何操作,但比較矩形是否着色,矩形的值直接從數組中拉出哪個Paint對象。我怎樣才能在這裏獲得速度?我無法將分辨率提高到超過16像素的方塊,而不會變得難以忍受。
下面是是瓶頸的代碼片斷:
c.drawRect(0, 0, c.getWidth(), c.getHeight(), p);
for(int x = 0; x < sizex; x++)
for(int y = 0; y < sizey; y++){
if(tiles[x][y] != 0){
if(tiles[x][y] > 100)
tiles[x][y] = 100;
c.drawRect(rects[x][y], ps[tiles[x][y]]);//This seems to be the bottleneck
}
}
所以,在本質上是有到drawRect()
的另一種方法,這將是更快?
您可能需要顯示代碼中有問題的部分,以便任何人確定如何優化它。 –