Zeichnung auf einem SurfaceView in Android
Ich versuche zu tun, einige sehr einfach Zeichnung in eine SurfaceView
aber ich kann Sie nicht arbeiten. Es gibt keine Ausnahmen, aber ich sehe keine Ergebnisse.
Genauer gesagt, ich versuche zu schaffen, eine SurfaceView
und füllen Sie es mit einer einzigen Farbe.
Hier geht mein code:
public class SvetlinSurfaceViewTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SurfaceRenderer renderer = new SurfaceRenderer(this);
setContentView(renderer);
}
}
class SurfaceRenderer extends ViewGroup implements SurfaceHolder.Callback {
private final String TAG = "Svetlin Surface Renderer";
SurfaceView mSurfaceView;
SurfaceHolder mHolder;
public SurfaceRenderer(Context context) {
super(context);
mSurfaceView = new SurfaceView(context);
addView(mSurfaceView);
//Install a SurfaceHolder.Callback so we get notified when the
//underlying surface is created and destroyed.
mHolder = mSurfaceView.getHolder();
mHolder.addCallback(this);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {}
@Override
public void surfaceCreated(SurfaceHolder holder) {
tryDrawing(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
tryDrawing(holder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {}
private void tryDrawing(SurfaceHolder holder) {
Log.i(TAG, "Trying to draw...");
Canvas canvas = holder.lockCanvas();
if (canvas == null) {
Log.e(TAG, "Cannot draw onto the canvas as it's null");
} else {
drawMyStuff(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
private void drawMyStuff(final Canvas canvas) {
Log.i(TAG, "Drawing...");
canvas.drawRGB(255, 128, 128);
}
}
Als erwartet, ich bin immer Zeichnung... zweimal ausgegeben.
Konnte jeder jeden schlagen, warum ich möglicherweise nicht in der Lage zu ziehen über die SurfaceView
?
InformationsquelleAutor Albus Dumbledore | 2011-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernte ich die proxy-Klasse
SurfaceRenderer
und zog es alle in meiner Tätigkeit. Es funktioniert jetzt. Hier geht der fixed-code:InformationsquelleAutor Albus Dumbledore