diff options
| author | Dianne Hackborn <hackbod@google.com> | 2009-05-21 17:32:42 -0700 |
|---|---|---|
| committer | Dianne Hackborn <hackbod@google.com> | 2009-05-21 17:50:33 -0700 |
| commit | c4d5d02667af6989a3121072871f6a4b1e68b594 (patch) | |
| tree | c6b1dfd9c6e777dab1286d4c4ac69e1c7e48f5d7 /core/java/android/view/SurfaceView.java | |
| parent | 384bfa270cdcb5dc3bc9ec396b783e25eb2d9b4d (diff) | |
| download | frameworks_base-c4d5d02667af6989a3121072871f6a4b1e68b594.zip frameworks_base-c4d5d02667af6989a3121072871f6a4b1e68b594.tar.gz frameworks_base-c4d5d02667af6989a3121072871f6a4b1e68b594.tar.bz2 | |
Add new window manager type for a hacking second-level media surface.
This adds a new window type that is a surface that sits between the
current media type and the application window, in theory allowing you
to have two surface views in your hierarchy and control their
Z-ordering. There is also another hidden API on SurfaceView to set
the type of your window.
All a big hack, but for the good of the commonwealth!
Diffstat (limited to 'core/java/android/view/SurfaceView.java')
| -rw-r--r-- | core/java/android/view/SurfaceView.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 3d023f7..0dc2570 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -100,6 +100,8 @@ public class SurfaceView extends View { static final int KEEP_SCREEN_ON_MSG = 1; static final int GET_NEW_SURFACE_MSG = 2; + int mWindowType = WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA; + boolean mIsCreating = false; final Handler mHandler = new Handler() { @@ -285,6 +287,15 @@ public class SurfaceView extends View { super.dispatchDraw(canvas); } + /** + * Hack to allow special layering of windows. The type is one of the + * types in WindowManager.LayoutParams. This is a hack so: + * @hide + */ + public void setWindowType(int type) { + mWindowType = type; + } + private void updateWindow(boolean force) { if (!mHaveFrame) { return; @@ -342,7 +353,7 @@ public class SurfaceView extends View { if (mWindow == null) { mWindow = new MyWindow(this); - mLayout.type = WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA; + mLayout.type = mWindowType; mLayout.gravity = Gravity.LEFT|Gravity.TOP; mSession.add(mWindow, mLayout, mVisible ? VISIBLE : GONE, mContentInsets); |
