Как перерисовать SurfaceView после нажатия на экран?
Здравствуйте! Мне нужно написать приложение, в котором при нажатии на экран цвет экрана меняется на другой. Как мне сделать так, чтобы при нажатии на экран (OnTouchEvent) SurfaceView перерисовывался (запускался новый поток)?
Заранее спасибо!
Если я правильно понял, то вам не надо запускать новый поток, а надо изменить то, каким цветом рисуете в уже существующем потоке. Например, держать в классе переменную, отвечающую за цвет, и при нажатии менять ее значение.
MrNiiik: 1) у вас при любом нажатии и станет 0 так как последовательно пройдет через все if
@Override
public boolean onTouchEvent(MotionEvent event) {
if (draw.i == 0) draw.i = 1;
else if (draw.i == 1) draw.i = 2;
else if (draw.i == 2) draw.i = 0;
return super.onTouchEvent(event);
}
2) setFocusable(true); в public TestSurfaceView(Context context)
3)поменяйте метод run
@Override
public void run() {
paint.setStyle(Paint.Style.FILL);
while (true) {
Canvas can = sh.lockCanvas(null);
try {
synchronized (sh) {
try {
if (i == 0) {
paint.setColor(Color.RED);
can.drawPaint(paint);
}
if (i == 1) {
paint.setColor(Color.GREEN);
can.drawPaint(paint);
}
if (i == 2) {
paint.setColor(Color.BLUE);
can.drawPaint(paint);
}
} catch (Exception e) {
}