I have looked through the docs again and find no explanation what the best way is where I can really have two seperate views overlay and update both at righ rates. Maybe someone can comment on the use-case that I have described below.
Thanks! Chris On Jul 28, 11:18 am, Chris <[email protected]> wrote: > Thanks for the indepth reply! > > Maybe you as Android Framework Developer can give a recommendation on > how I best implement the following: I have camera preview and want to > overlay my own item over this that change very quickly (about every > 200ms). > > The camera preview uses a SurfaceView as in the samples. As first > approach I used a normal View as the overlay part and called > postInvalidate from another thread very often to redraw the View. This > caused heavy CPU load (90%) of my application. Now, I managed to use > two SurfaceViews and making one transparent. This also works and the > CPU load is about 30% now. > > However: is this the best way to implement such functionality? > > Thanks! > Chris > > On Jul 27, 8:07 pm, Dianne Hackborn <[email protected]> wrote: > > > Sorry, you can't do this -- because surface views are very special and not > > really views (the surface is a separate window Z-ordered with your own), > > their Z-ordering does not match your views. A surface view is a big, heavy > > object; you are not intended to treat SurfaceView like a regular view in > > this way. > > > As far as transparency, the surface is transparent if you make its pixel > > format transparent. It's your surface, you can do with it what you want. > > The default is to be the same pixel format as the screen, since that is the > > most efficient and it is very rare for someone to want a transparent surface > > view. > > > The way you really are intended to do this is to own the surface, and draw > > all your compositing in there. So you would just have one surface view that > > you are updating in the places where either the background or overlay is > > changing. To be honest, I think you are going to get better performance if > > you do it this way anyway, especially if you use OpenGL. > > > For simple overlays, one thing that is reasonable to do is to stick the > > SurfaceView in a frame layout, Z-ordering it below other -regular- views > > that contain the overlay. There is an example in ApiDemos of this. > > > On Mon, Jul 27, 2009 at 7:34 AM, Chris <[email protected]> wrote: > > > > Hi, > > > > I have two SurfaceViews in one FrameLayout. So they are stacked upon > > > another. What I want to achieve is to use the lower SurfaceView as > > > kind of background that is changing heavily, and the upper SurfaceView > > > as annotation overlay. So the upper SurfaceView has a (small) number > > > of quickly changing elements that I will draw. > > > > Somehow, I can always only see one of the SurfaceViews, depending on > > > which one is top. I thought that SurfaceViews are always transparent, > > > but it seems I am missing something here. > > > > Any thoughts on why I can't overlay two SurfaceViews? > > > > Thanks, > > > Chris > > > -- > > Dianne Hackborn > > Android framework engineer > > [email protected] > > > Note: please don't send private questions to me, as I don't have time to > > provide private support, and so won't reply to such e-mails. All such > > questions should be posted on public forums, where I and others can see and > > answer them. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

