J
jonius
Neues Mitglied
- 0
Ich beginne gerade, mich in der Android-App-Programmierung auszuprobieren und bringe schon ein bisschen Erfahrung mit Java mit.
Ich habe jetzt einmal versucht, nach der Anleitung (Canvas and Drawables | Android Developers) SurfaceView abzuleiten und der/die/das Canvas zu nutzen zum Zeichnen. Dabei bekomme ich aber beim Aufruf von unlockCanvasAndPost() den folgenden Fehler:
Hier der Quellcode:
TestActivity.java
ZeichnerView.java
main.xml
Vermutlich habe ich hier grundsätzlich etwas falsch verstanden. Kann mir jemand weiterhelfen?
Ich habe jetzt einmal versucht, nach der Anleitung (Canvas and Drawables | Android Developers) SurfaceView abzuleiten und der/die/das Canvas zu nutzen zum Zeichnen. Dabei bekomme ich aber beim Aufruf von unlockCanvasAndPost() den folgenden Fehler:
Code:
03-31 11:58:41.926: E/AndroidRuntime(557): java.lang.RuntimeException: Unable to start activity ComponentInfo{a.b.c/a.b.c.TestActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class a.b.c.ZeichnerView
Hier der Quellcode:
TestActivity.java
Code:
package a.b.c;
import android.app.Activity;
import android.os.Bundle;
public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Code:
package a.b.c;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
public class ZeichnerView extends SurfaceView implements Callback {
private SurfaceHolder sholder;
private Canvas canvas;
public ZeichnerView(Context context) {
super(context);
sholder = this.getHolder();
sholder.addCallback(this);
zeichne();
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
public void surfaceCreated(SurfaceHolder holder) {}
public void surfaceDestroyed(SurfaceHolder holder) {}
private void zeichne() {
new Thread() {
public void run() {
canvas = sholder.lockCanvas();
canvas.drawColor(Color.BLUE);
[B][COLOR=Red]sholder.unlockCanvasAndPost(canvas); [/COLOR]// Hier tritt der Fehler auf[/B]
}
};
}
}
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<a.b.c.ZeichnerView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>