H
HarryPotter
Neues Mitglied
- 0
N'abend Leute,
Ich möchte eine App programmieren.
Das Ziel ist: Man tippt auf den Touchscreen und an dieser Stelle leuchtet ein (grüner) Punkt oder Kreis auf. Ob der Punkt danach verschwindet oder erhalten bleibt ist mir zunächst egal.
Ich versuche das mit drei Klassen, einer Activity, GLSurfaceView und einer Renderer Klasse zu implementieren.
Wenn ich das ausführe, dann kann ich ca. 10 Sekunden auf der schwarzen Fläche rumklicken und dann kommt die Meldung das die App nicht mehr reagiert. Im LOG kommen viele Fehlermeldungen:
Ich poste jetzt den Code.
Code für Activity (1.Klasse):
Code für GLSurfaceView (2.Klasse):
und die Renderer Klasse (3.Klasse):
Wenn das Problem zu konfus beschrieben ist , oder das Problem zu einfach ist dann sagt es mir, dass würde mir schon helfen.
MFG HP
Ich möchte eine App programmieren.
Das Ziel ist: Man tippt auf den Touchscreen und an dieser Stelle leuchtet ein (grüner) Punkt oder Kreis auf. Ob der Punkt danach verschwindet oder erhalten bleibt ist mir zunächst egal.
Ich versuche das mit drei Klassen, einer Activity, GLSurfaceView und einer Renderer Klasse zu implementieren.
Wenn ich das ausführe, dann kann ich ca. 10 Sekunden auf der schwarzen Fläche rumklicken und dann kommt die Meldung das die App nicht mehr reagiert. Im LOG kommen viele Fehlermeldungen:
Ich poste jetzt den Code.
Code für Activity (1.Klasse):
Code:
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class HelloAndroidActivity extends Activity {
private MyGLSurfaceView glSurface;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glSurface = new MyGLSurfaceView(this);
setContentView(glSurface);
}
}
Code für GLSurfaceView (2.Klasse):
Code:
import android.content.Context;
import android.graphics.Canvas;
import android.opengl.GLSurfaceView;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
class MyGLSurfaceView extends GLSurfaceView implements SurfaceHolder.Callback {
private MyRenderer mMyRenderer;
public MyGLSurfaceView(Context context) {
super(context);
start();
}
public void start() {
SurfaceHolder holder = getHolder();
holder.addCallback(this);
mMyRenderer = new MyRenderer(holder);
setRenderer(mMyRenderer);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
int eventaction = event.getAction();
float x = event.getX();
float y = event.getY();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
mMyRenderer.drawPoint(x,y);
}
return super.onTouchEvent(event);
}
}
und die Renderer Klasse (3.Klasse):
Code:
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.opengl.GLSurfaceView.Renderer;
import android.view.SurfaceHolder;
public class MyRenderer implements Renderer {
private SurfaceHolder mSurfaceHolder;
private Paint p;
/** Indicate whether the surface has been created & is ready to draw */
private boolean mRun = false;
public MyRenderer(SurfaceHolder sf){
mSurfaceHolder = sf;
p = new Paint();
p.setColor(Color.GREEN);
}
public void onDrawFrame(GL10 gl) {
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
// TODO Auto-generated method stub
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// TODO Auto-generated method stub
}
public void drawPoint(float x, float y){
Canvas mc = null;
while(mc==null){
System.out.println("OK<<<<<<<<<<<<<<<<<<<<<<<<<<<BLA");
try {
mc = mSurfaceHolder.lockCanvas(null);
if (mc!=null){
synchronized (mSurfaceHolder) {
mc.drawCircle(x, y, 100, p);
}
}
}
catch ( Exception e ) // Exception
{
System.out.println( "Datei gibts nicht!" );
}
}
mSurfaceHolder.unlockCanvasAndPost(mc);
}
}
Wenn das Problem zu konfus beschrieben ist , oder das Problem zu einfach ist dann sagt es mir, dass würde mir schon helfen.
MFG HP