Mam problem z androidem a konkretnie z tym eventem.
Uzywam go w surfaceView. nie wiem dlaczego event OnTouchEvent jest wywolywany tylko przy pierwszym nacisnieciu wyswietlacza, a pozniej juz nie, ile bym nie klikał.
package org.pollub.pilka;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.provider.CalendarContract.Colors;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class WidokGry extends SurfaceView implements SurfaceHolder.Callback
{
private LogikaGry logikaGry;
private WątekGry thread;
private Gra graActivity;
private int xOfTouch;
public boolean isGameFailed()
{
boolean result = this.logikaGry.czyGraJestPrzegrana();
return result;
}
public WidokGry(Context context)
{
super(context);
getHolder().addCallback(this);
setFocusable(true);
this.graActivity = (Gra) context;
this.onInit();
thread = new WątekGry(getHolder(), this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
}
@Override
public void surfaceCreated(SurfaceHolder holder)
{
thread.setRunning(true);
thread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
boolean retry = true;
while (retry)
{
try
{
thread.join();
retry = false;
} catch (InterruptedException e)
{
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
xOfTouch = (int) event.getX();
try
{
Thread.sleep(3);
} catch (InterruptedException e)
{
}
return super.onTouchEvent(event);
}
public boolean onKeyEvent(KeyEvent event)
{
return true;
}
@Override
protected void onDraw(Canvas canvas)
{
logikaGry.Draw(canvas);
}
public void onUpdate(int timeGone)
{
this.logikaGry.setPositionOfPaletka(xOfTouch);
this.logikaGry.Update(timeGone);
}
public void SetPositionOfPaletka(int position)
{
this.logikaGry.setPositionOfPaletka(position);
}
protected void onInit()
{
logikaGry = new LogikaGry(300, 350, 30, 20);
}
public void goBackToMain()
{
this.graActivity.goBackToMain();
}
}
tak wyglada kod. zwrocenie true w onTouchEvent wcale nie pomaga.