diff options
author | Jim Miller <jaggies@google.com> | 2013-11-06 13:19:27 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-11-06 13:19:27 -0800 |
commit | 78244c83fb633895c95f3c93ab874be979cf42e3 (patch) | |
tree | 2055d841ee4f55086e1d97e0f84eb83e9ca26805 /packages/Keyguard | |
parent | ce89135a53b1f5c0e7f34dbae12794f4421d9390 (diff) | |
parent | 322934699433d703fa35505d72028abbcf8ce45f (diff) | |
download | frameworks_base-78244c83fb633895c95f3c93ab874be979cf42e3.zip frameworks_base-78244c83fb633895c95f3c93ab874be979cf42e3.tar.gz frameworks_base-78244c83fb633895c95f3c93ab874be979cf42e3.tar.bz2 |
am 32293469: Merge "Fix issue where transport control shows up off-screen on tablets" into klp-dev
* commit '322934699433d703fa35505d72028abbcf8ce45f':
Fix issue where transport control shows up off-screen on tablets
Diffstat (limited to 'packages/Keyguard')
-rw-r--r-- | packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java index fdc06a6..1bae9b8 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardHostView.java @@ -218,7 +218,7 @@ public class KeyguardHostView extends KeyguardViewBase { mTransportState = (dcs.clearing ? TRANSPORT_GONE : (isMusicPlaying(dcs.playbackState) ? TRANSPORT_VISIBLE : TRANSPORT_INVISIBLE)); - if (DEBUG) Log.v(TAG, "Initial transport state: " + if (DEBUGXPORT) Log.v(TAG, "Initial transport state: " + mTransportState + ", pbstate=" + dcs.playbackState); } @@ -1369,7 +1369,7 @@ public class KeyguardHostView extends KeyguardViewBase { } } - Runnable mSwitchPageRunnable = new Runnable() { + private final Runnable mSwitchPageRunnable = new Runnable() { @Override public void run() { showAppropriateWidgetPage(); @@ -1438,7 +1438,7 @@ public class KeyguardHostView extends KeyguardViewBase { mAppWidgetToShow = ss.appWidgetToShow; setInsets(ss.insets); if (DEBUG) Log.d(TAG, "onRestoreInstanceState, transport=" + mTransportState); - post(mSwitchPageRunnable); + mSwitchPageRunnable.run(); } @Override @@ -1472,10 +1472,21 @@ public class KeyguardHostView extends KeyguardViewBase { } private void showAppropriateWidgetPage() { - int state = mTransportState; - ensureTransportPresentOrRemoved(state); - int pageToShow = getAppropriateWidgetPage(state); - mAppWidgetContainer.setCurrentPage(pageToShow); + final int state = mTransportState; + final boolean transportAdded = ensureTransportPresentOrRemoved(state); + final int pageToShow = getAppropriateWidgetPage(state); + if (!transportAdded) { + mAppWidgetContainer.setCurrentPage(pageToShow); + } else if (state == TRANSPORT_VISIBLE) { + // If the transport was just added, we need to wait for layout to happen before + // we can set the current page. + post(new Runnable() { + @Override + public void run() { + mAppWidgetContainer.setCurrentPage(pageToShow); + } + }); + } } /** @@ -1499,12 +1510,11 @@ public class KeyguardHostView extends KeyguardViewBase { * * @param state */ - private void ensureTransportPresentOrRemoved(int state) { + private boolean ensureTransportPresentOrRemoved(int state) { final boolean showing = getWidgetPosition(R.id.keyguard_transport_control) != -1; final boolean visible = state == TRANSPORT_VISIBLE; final boolean shouldBeVisible = state == TRANSPORT_INVISIBLE && isMusicPlaying(state); if (!showing && (visible || shouldBeVisible)) { - if (DEBUGXPORT) Log.v(TAG, "add transport"); // insert to left of camera if it exists, otherwise after right-most widget int lastWidget = mAppWidgetContainer.getChildCount() - 1; int position = 0; // handle no widget case @@ -1512,13 +1522,16 @@ public class KeyguardHostView extends KeyguardViewBase { position = mAppWidgetContainer.isCameraPage(lastWidget) ? lastWidget : lastWidget + 1; } + if (DEBUGXPORT) Log.v(TAG, "add transport at " + position); mAppWidgetContainer.addWidget(getOrCreateTransportControl(), position); + return true; } else if (showing && state == TRANSPORT_GONE) { if (DEBUGXPORT) Log.v(TAG, "remove transport"); mAppWidgetContainer.removeWidget(getOrCreateTransportControl()); mTransportControl = null; KeyguardUpdateMonitor.getInstance(getContext()).dispatchSetBackground(null); } + return false; } private CameraWidgetFrame findCameraPage() { |