Cracked it!

The clue was I remembered reading recently about SurfaceViews and
them punching holes in things.... and GLSurfaceView is obviously a
SurfaceView.

http://developer.android.com/reference/android/view/SurfaceView.html

"The surface is Z ordered so that it is behind the window holding its
SurfaceView; the SurfaceView punches a hole in its window to allow its
surface to be displayed."

So it punches a hole through the window, in this case a dialog, to display
the GLSurfaceView on the window beneath. Since the window beneath a dialog
is always shown as dimmed, hence the GLSurfaceView also gets that dimmed
effect.

The way round it is use:

setZOrderOnTop(true);

on the GLSurfaceView in question. This shows the GLSurfaceView on top of
the hosting window, rather than behind it. It has the downside that you
can't use overlays of any views on top of your SurfaceView, the surface
will always be shown on top of them, but in my particular case that doesn't
matter.

So it is possible to use a GLSurfaceView in a dialog, and also in an
activity using the dialog theme.

On 15 February 2012 01:23, James Webster <[email protected]> wrote:

> Further to this, I tried build target on ICS, same visual behavior. The
> Surface view appears dimmed, as if it has been given the same dimming
> effect as the background behind the dialog.
>
> Is GlSurfaceView not supported in Dialogs? Nothing in the docs about that
> that I can see.
> On Feb 13, 2012 11:33 PM, "James Webster" <[email protected]> wrote:
>
>> I have a GLSurfaceView working fine as a Live Wallpaper and as a custom
>> view in an activity.
>>
>> When I try to use it as a custom view in an AlertDialog, the
>> GLSurfaceView does not display correctly, there are some visual problems
>> (see attached image for reference).
>>
>> Firstly the GLSurfaceView area within the dialog appears dimmed, as it
>> has been given the same dimming affect as the activity behind, yet the rest
>> of the dialog controls appear un-dimmed.
>>
>> Secondly, part of the activity behind (in this case a grid view) appears
>> to completely overlap the dialog in the top left corner, the area
>> overlapping seems to correspond to the size of a grid item. How can the
>> background activity be shown over the foreground dialog? Most strange...
>>
>> Am I trying to do something stupid, and GLSurfaceView's are simply not
>> supported in AlertDialogs?
>>
>> Incidentally, in my normal activity which does show the GLSurfaceView
>> correctly, if I changed the theme to use the android:theme=
>> "@android:style/Theme.Dialog"
>>  then I also see the same dimming effect on the GLSurfaceView, which
>> leads me to wonder if it is an issue with the dialog style itself.
>>
>> Is it expected that a GLSurfaceView should be displayed correctly within
>> a dialog or Activity using a dialog theme? Has anyone done that before with
>> no issues?
>>
>> Build target 2.1 and testing on 3.2 and 2.5.3, for what its worth.
>>
>> Regards,
>> James
>>
>> Dusk Jockeys Android Apps
>> http://duskjockeys.blogspot.com/
>>
>>


-- 
Regards,
James

Dusk Jockeys Android Apps
http://duskjockeys.blogspot.com/

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