Hi, You can try to override ViewGroup.invalidateChildInParent to achieve what you want (return null immediately.) You should know however that the UI toolkit was never designed in such a way and that you will likely run into other issues.
On Sat, Apr 7, 2012 at 4:06 AM, hanni <[email protected]> wrote: > Hi all, > > I'm making an app that has standard Android Views on OpenGL ES > textures, allowing them to be rendered on any 3D mesh. I have > everything working, like touch and correct View invalidates. The way > I'm doing it is putting all the Android Views that are supposed to > rendered to textures in my root content view, along with the actual GL > Surface View. All the Android views have overridden draw methods, that > draw to a texture matching the View's size, instead of the screen. I > call those views the off-screen View hierarchy. > > My problem is, every View in the off-screen View hierarchy is > positioned at the same coordinate (0, 0), in order for it to be drawn > to the top left pixel of its own texture. This has the effect that > when a View; let's say a Button, is invalidated because the user > pressed it, all the other Views are also automatically invalidated. > This is because Android redraws all views which intersect with an > invalidated View, and in the off-screen View hierarchy they are all > positioned at (0, 0) and all overlapping. This is not what I want, > since all views are drawn to different textures and they are not > really overlapping on screen, just in the off-screen View hierarchy. > > I really want to prevent Views in the off-screen View hierarchy from > invalidating each other but all the things I have tried already, > failed: > > * I tried offsetting each View so that it does not overlap any other > View. Then I translate the canvas just before drawing to get the View > to be drawn on coordinate (0, 0) of the texture. The problem I face > with this method is that when I have many Views, so that some must be > offset to the extent that they are outside the "screen", they are not > rendered at all (Probably an optimization in the View framework, not > drawing Views outside the screen, but I need all Views to be drawn > when requested). > > * I tried overriding all the different invalidate()-methods of View, > to prevent Views from invalidating each other. That doesn't help at > all, and it really looks like the method I should be overriding is > ViewGroup.invalidateChild(), which is final, and can't be overridden. > > * I tried adding each off-screen View via addContentView() instead of > putting them all in a single View hierarchy, but they still invalidate > each other. > > Does anyone with great knowledge of the View-framework have a solution > to this? > > Thanks! > > -- > 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 -- Romain Guy Android framework engineer [email protected] -- 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

