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);
}
}
}
}