Я рисую круги на SurfaceView в своем событии OnTouch. Вот кодПочему рисованные фигуры исчезают, когда на Android SurfaceView нарисованы новые фигуры?
public class DrawableSurface extends SurfaceView {
public DrawableSurface(Context context) {
super(context);
surfaceHolder = getHolder();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL);
/*Handler handler = new Handler();
handler.postDelayed(new Bubbles(handler) ,1000);*/
}
private final SurfaceHolder surfaceHolder;
private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE)
{
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawCircle(event.getX(), event.getY(), 50, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
return true;
}
}
Всякий раз, когда нарисована новая фигура, некоторые из уже нарисованных фигур исчезают. Не все из них, но некоторые из них исчезают. И иногда они появляются. Я не мог понять. Почему это происходит?
Я немного прочитал об этом, но не мог понять, что может быть размером с rect? Должен ли он быть размером с то, что я рисую? – ozgur
Это «грязный» прямоугольник, т. Е. Регион, который вы намереваетесь нарисовать. Он должен быть по крайней мере таким же большим, как то, что вы хотите отобразить на экране. Я бы порекомендовал вам игнорировать это и просто запускать каждый кадр, очищая экран и рисуя все круги. Если у вас много кругов, сделайте весь свой рендеринг на Bitmap (создайте Canvas для него с помощью http://developer.android.com/reference/android/graphics/Canvas.html#Canvas(android.graphics.Bitmap)), а затем просто визуализируйте весь битмап на поверхности каждого кадра. – fadden
Этот последний комментарий действительно полезен. – ozgur