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
Post a Comment