0
我需要繪製像像素矩陣的東西。我創建了很多單元格(500x500),並填充它們(= cellchecked)。但是當我有超過300個填滿的細胞時,我有滯後問題。這個問題在onDraw方法中。每次必須重新檢查單元格。我怎樣才能優化這段代碼?繪圖 - 優化
的onTouchEvent:
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
column = (short) (event.getX()/cellWidth);
row = (short) (event.getY()/cellHeight);
plot(column, row);
cellChecked[column][row] = true;
pX = (short) (event.getX()/cellWidth);
pY = (short) (event.getY()/cellHeight);
break;
case MotionEvent.ACTION_MOVE:
column = (short) (event.getX()/cellWidth);
row = (short) (event.getY()/cellHeight);
cellChecked[column][row] = true;
pX = (short) (event.getX()/cellWidth);
pY = (short) (event.getY()/cellHeight);
counterxy++;
mInterface.onActionFinished(pX, pY, counterxy); // Wyslanie wspolrzednych do MainActivity
break;
case MotionEvent.ACTION_UP:
invalidate();
return true;
}
invalidate();
return true;
}
的onDraw:
protected void onDraw(Canvas canvas) {
this.canvas = canvas;
canvas.drawColor(Color.WHITE);
if (numColumns == 0 || numRows == 0)
return;
for (int i = 0; i < numColumns; i++)
{
for (int j = 0; j < numRows; j++)
{
if (cellChecked[i][j])
{
canvas.drawRect(i * cellWidth, j * cellHeight, (i + 1) * cellWidth, (j + 1) * cellHeight, blackPaint);
}
}
}
}