Loading core/java/android/widget/MediaController.java +52 −19 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class MediaController extends FrameLayout { private WindowManager mWindowManager; private Window mWindow; private View mDecor; private WindowManager.LayoutParams mDecorLayoutParams; private ProgressBar mProgress; private TextView mEndTime, mCurrentTime; private boolean mShowing; Loading Loading @@ -120,6 +121,7 @@ public class MediaController extends FrameLayout { mContext = context; mUseFastForward = true; initFloatingWindow(); initFloatingWindowLayout(); } private void initFloatingWindow() { Loading @@ -142,6 +144,48 @@ public class MediaController extends FrameLayout { requestFocus(); } // Allocate and initialize the static parts of mDecorLayoutParams. Must // also call updateFloatingWindowLayout() to fill in the dynamic parts // (y and width) before mDecorLayoutParams can be used. private void initFloatingWindowLayout() { mDecorLayoutParams = new WindowManager.LayoutParams(); WindowManager.LayoutParams p = mDecorLayoutParams; p.gravity = Gravity.TOP; p.height = LayoutParams.WRAP_CONTENT; p.x = 0; p.format = PixelFormat.TRANSLUCENT; p.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; p.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; p.token = null; p.windowAnimations = 0; // android.R.style.DropDownAnimationDown; } // Update the dynamic parts of mDecorLayoutParams // Must be called with mAnchor != NULL. private void updateFloatingWindowLayout() { int [] anchorPos = new int[2]; mAnchor.getLocationOnScreen(anchorPos); WindowManager.LayoutParams p = mDecorLayoutParams; p.width = mAnchor.getWidth(); p.y = anchorPos[1] + mAnchor.getHeight(); } // This is called whenever mAnchor's layout bound changes private OnLayoutChangeListener mLayoutChangeListener = new OnLayoutChangeListener() { public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { updateFloatingWindowLayout(); if (mShowing) { mWindowManager.updateViewLayout(mDecor, mDecorLayoutParams); } } }; private OnTouchListener mTouchListener = new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { Loading @@ -164,7 +208,13 @@ public class MediaController extends FrameLayout { * @param view The view to which to anchor the controller when it is visible. */ public void setAnchorView(View view) { if (mAnchor != null) { mAnchor.removeOnLayoutChangeListener(mLayoutChangeListener); } mAnchor = view; if (mAnchor != null) { mAnchor.addOnLayoutChangeListener(mLayoutChangeListener); } FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, Loading Loading @@ -279,31 +329,14 @@ public class MediaController extends FrameLayout { * the controller until hide() is called. */ public void show(int timeout) { if (!mShowing && mAnchor != null) { setProgress(); if (mPauseButton != null) { mPauseButton.requestFocus(); } disableUnsupportedButtons(); int [] anchorpos = new int[2]; mAnchor.getLocationOnScreen(anchorpos); WindowManager.LayoutParams p = new WindowManager.LayoutParams(); p.gravity = Gravity.TOP; p.width = mAnchor.getWidth(); p.height = LayoutParams.WRAP_CONTENT; p.x = 0; p.y = anchorpos[1] + mAnchor.getHeight() - p.height; p.format = PixelFormat.TRANSLUCENT; p.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; p.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; p.token = null; p.windowAnimations = 0; // android.R.style.DropDownAnimationDown; mWindowManager.addView(mDecor, p); updateFloatingWindowLayout(); mWindowManager.addView(mDecor, mDecorLayoutParams); mShowing = true; } updatePausePlay(); Loading core/java/android/widget/VideoView.java +0 −7 Original line number Diff line number Diff line Loading @@ -456,13 +456,6 @@ public class VideoView extends SurfaceView implements MediaPlayerControl { seekTo(mSeekWhenPrepared); } start(); if (mMediaController != null) { if (mMediaController.isShowing()) { // ensure the controller will get repositioned later mMediaController.hide(); } mMediaController.show(); } } } Loading Loading
core/java/android/widget/MediaController.java +52 −19 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class MediaController extends FrameLayout { private WindowManager mWindowManager; private Window mWindow; private View mDecor; private WindowManager.LayoutParams mDecorLayoutParams; private ProgressBar mProgress; private TextView mEndTime, mCurrentTime; private boolean mShowing; Loading Loading @@ -120,6 +121,7 @@ public class MediaController extends FrameLayout { mContext = context; mUseFastForward = true; initFloatingWindow(); initFloatingWindowLayout(); } private void initFloatingWindow() { Loading @@ -142,6 +144,48 @@ public class MediaController extends FrameLayout { requestFocus(); } // Allocate and initialize the static parts of mDecorLayoutParams. Must // also call updateFloatingWindowLayout() to fill in the dynamic parts // (y and width) before mDecorLayoutParams can be used. private void initFloatingWindowLayout() { mDecorLayoutParams = new WindowManager.LayoutParams(); WindowManager.LayoutParams p = mDecorLayoutParams; p.gravity = Gravity.TOP; p.height = LayoutParams.WRAP_CONTENT; p.x = 0; p.format = PixelFormat.TRANSLUCENT; p.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; p.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; p.token = null; p.windowAnimations = 0; // android.R.style.DropDownAnimationDown; } // Update the dynamic parts of mDecorLayoutParams // Must be called with mAnchor != NULL. private void updateFloatingWindowLayout() { int [] anchorPos = new int[2]; mAnchor.getLocationOnScreen(anchorPos); WindowManager.LayoutParams p = mDecorLayoutParams; p.width = mAnchor.getWidth(); p.y = anchorPos[1] + mAnchor.getHeight(); } // This is called whenever mAnchor's layout bound changes private OnLayoutChangeListener mLayoutChangeListener = new OnLayoutChangeListener() { public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { updateFloatingWindowLayout(); if (mShowing) { mWindowManager.updateViewLayout(mDecor, mDecorLayoutParams); } } }; private OnTouchListener mTouchListener = new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { Loading @@ -164,7 +208,13 @@ public class MediaController extends FrameLayout { * @param view The view to which to anchor the controller when it is visible. */ public void setAnchorView(View view) { if (mAnchor != null) { mAnchor.removeOnLayoutChangeListener(mLayoutChangeListener); } mAnchor = view; if (mAnchor != null) { mAnchor.addOnLayoutChangeListener(mLayoutChangeListener); } FrameLayout.LayoutParams frameParams = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, Loading Loading @@ -279,31 +329,14 @@ public class MediaController extends FrameLayout { * the controller until hide() is called. */ public void show(int timeout) { if (!mShowing && mAnchor != null) { setProgress(); if (mPauseButton != null) { mPauseButton.requestFocus(); } disableUnsupportedButtons(); int [] anchorpos = new int[2]; mAnchor.getLocationOnScreen(anchorpos); WindowManager.LayoutParams p = new WindowManager.LayoutParams(); p.gravity = Gravity.TOP; p.width = mAnchor.getWidth(); p.height = LayoutParams.WRAP_CONTENT; p.x = 0; p.y = anchorpos[1] + mAnchor.getHeight() - p.height; p.format = PixelFormat.TRANSLUCENT; p.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; p.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; p.token = null; p.windowAnimations = 0; // android.R.style.DropDownAnimationDown; mWindowManager.addView(mDecor, p); updateFloatingWindowLayout(); mWindowManager.addView(mDecor, mDecorLayoutParams); mShowing = true; } updatePausePlay(); Loading
core/java/android/widget/VideoView.java +0 −7 Original line number Diff line number Diff line Loading @@ -456,13 +456,6 @@ public class VideoView extends SurfaceView implements MediaPlayerControl { seekTo(mSeekWhenPrepared); } start(); if (mMediaController != null) { if (mMediaController.isShowing()) { // ensure the controller will get repositioned later mMediaController.hide(); } mMediaController.show(); } } } Loading