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
-~----------~----~----~----~------~----~------~--~---

Reply via email to