java - Drawing to a SurfaceView in Android -



java - Drawing to a SurfaceView in Android -

i'm trying very simple drawing surfaceview can't working. there no exceptions, don't see result either.

more precisely, i'm trying create surfaceview , fill single colour.

here goes code:

public class svetlinsurfaceviewtestactivity extends activity { /** called when activity 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 surfaceholder.callback notified when // underlying surface created , 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 draw..."); canvas canvas = holder.lockcanvas(); if (canvas == null) { log.e(tag, "cannot draw onto canvas it's null"); } else { drawmystuff(canvas); holder.unlockcanvasandpost(canvas); } } private void drawmystuff(final canvas canvas) { log.i(tag, "drawing..."); canvas.drawrgb(255, 128, 128); } }

as expected, i'm getting drawing... outputted twice.

could suggest why might no able draw on surfaceview?

i removed proxy class surfacerenderer , moved activity. it's working now. here goes fixed code:

public class svetlinsurfaceviewtestactivity extends activity implements surfaceholder.callback { private static final string tag = "svetlin surfaceview"; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); surfaceview view = new surfaceview(this); setcontentview(view); view.getholder().addcallback(this); } @override public void surfacecreated(surfaceholder holder) { trydrawing(holder); } @override public void surfacechanged(surfaceholder holder, int frmt, int w, int h) { trydrawing(holder); } @override public void surfacedestroyed(surfaceholder holder) {} private void trydrawing(surfaceholder holder) { log.i(tag, "trying draw..."); canvas canvas = holder.lockcanvas(); if (canvas == null) { log.e(tag, "cannot draw onto canvas it's null"); } else { drawmystuff(canvas); holder.unlockcanvasandpost(canvas); } } private void drawmystuff(final canvas canvas) { random random = new random(); log.i(tag, "drawing..."); canvas.drawrgb(255, 128, 128); } }

java android surfaceview

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

c# - Can ProtoBuf-Net deserialize to a flat class? -

javascript - Change element in each JQuery tab to dynamically generated colors -