am f016a912: Merge "Ensure IME windows always appear north of the nav bar." into klp-dev
* commit 'f016a91247d591fd77e82383a84ae41606e30edd': Ensure IME windows always appear north of the nav bar.
This commit is contained in:
@@ -1102,11 +1102,7 @@ public abstract class BaseStatusBar extends SystemUI implements
|
|||||||
return km.inKeyguardRestrictedInputMode();
|
return km.inKeyguardRestrictedInputMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void suspendAutohide() {
|
public void setInteracting(boolean interacting) {
|
||||||
// hook for subclasses
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resumeAutohide() {
|
|
||||||
// hook for subclasses
|
// hook for subclasses
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -86,9 +86,9 @@ public class DelegateViewHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (action == MotionEvent.ACTION_DOWN) {
|
if (action == MotionEvent.ACTION_DOWN) {
|
||||||
mBar.suspendAutohide();
|
mBar.setInteracting(true);
|
||||||
} else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
|
} else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
|
||||||
mBar.resumeAutohide();
|
mBar.setInteracting(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
mDelegateView.getLocationOnScreen(mTempPoint);
|
mDelegateView.getLocationOnScreen(mTempPoint);
|
||||||
|
|||||||
@@ -64,17 +64,6 @@ public class BarTransitions {
|
|||||||
return mMode;
|
return mMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTransparent(Drawable transparent) {
|
|
||||||
mTransparent = transparent;
|
|
||||||
if (mMode == MODE_TRANSPARENT) {
|
|
||||||
transitionTo(MODE_TRANSPARENT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void transitionTo(int mode) {
|
|
||||||
transitionTo(mode, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void transitionTo(int mode, boolean animate) {
|
public void transitionTo(int mode, boolean animate) {
|
||||||
if (mMode == mode) return;
|
if (mMode == mode) return;
|
||||||
int oldMode = mMode;
|
int oldMode = mMode;
|
||||||
|
|||||||
@@ -112,9 +112,11 @@ public class NavigationBarView extends LinearLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final class NavigationBarTransitions extends BarTransitions {
|
private final class NavigationBarTransitions extends BarTransitions {
|
||||||
|
private static final boolean ENABLE_GRADIENT = false; // until we can smooth transition
|
||||||
|
|
||||||
private final Drawable mTransparentBottom;
|
private final Drawable mTransparentBottom;
|
||||||
private final Drawable mTransparentRight;
|
private final Drawable mTransparentRight;
|
||||||
|
private final int mTransparentColor;
|
||||||
|
|
||||||
public NavigationBarTransitions(Context context) {
|
public NavigationBarTransitions(Context context) {
|
||||||
super(context, NavigationBarView.this);
|
super(context, NavigationBarView.this);
|
||||||
@@ -125,12 +127,20 @@ public class NavigationBarView extends LinearLayout {
|
|||||||
};
|
};
|
||||||
mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors);
|
mTransparentBottom = new GradientDrawable(Orientation.BOTTOM_TOP, gradientColors);
|
||||||
mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors);
|
mTransparentRight = new GradientDrawable(Orientation.RIGHT_LEFT, gradientColors);
|
||||||
|
mTransparentColor = res.getColor(R.color.status_bar_background_transparent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVertical(boolean isVertical) {
|
public void setVertical(boolean isVertical) {
|
||||||
|
if (!ENABLE_GRADIENT) return;
|
||||||
mTransparent = isVertical ? mTransparentRight : mTransparentBottom;
|
mTransparent = isVertical ? mTransparentRight : mTransparentBottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Integer getBackgroundColor(int mode) {
|
||||||
|
if (!ENABLE_GRADIENT && mode == MODE_TRANSPARENT) return mTransparentColor;
|
||||||
|
return super.getBackgroundColor(mode);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onTransition(int oldMode, int newMode, boolean animate) {
|
protected void onTransition(int oldMode, int newMode, boolean animate) {
|
||||||
super.onTransition(oldMode, newMode, animate);
|
super.onTransition(oldMode, newMode, animate);
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.systemui.statusbar.phone;
|
package com.android.systemui.statusbar.phone;
|
||||||
|
|
||||||
|
import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT;
|
||||||
|
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||||
import static android.app.StatusBarManager.windowStateToString;
|
import static android.app.StatusBarManager.windowStateToString;
|
||||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
|
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_OPAQUE;
|
||||||
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
|
import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT;
|
||||||
@@ -170,7 +172,7 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
|
|
||||||
StatusBarWindowView mStatusBarWindow;
|
StatusBarWindowView mStatusBarWindow;
|
||||||
PhoneStatusBarView mStatusBarView;
|
PhoneStatusBarView mStatusBarView;
|
||||||
private int mStatusBarWindowState;
|
private int mStatusBarWindowState = WINDOW_STATE_SHOWING;
|
||||||
|
|
||||||
int mPixelFormat;
|
int mPixelFormat;
|
||||||
Object mQueueLock = new Object();
|
Object mQueueLock = new Object();
|
||||||
@@ -234,7 +236,7 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
|
|
||||||
// on-screen navigation buttons
|
// on-screen navigation buttons
|
||||||
private NavigationBarView mNavigationBarView = null;
|
private NavigationBarView mNavigationBarView = null;
|
||||||
private int mNavigationBarWindowState;
|
private int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
|
||||||
|
|
||||||
// the tracker view
|
// the tracker view
|
||||||
int mTrackingPosition; // the position of the top of the tracking view.
|
int mTrackingPosition; // the position of the top of the tracking view.
|
||||||
@@ -312,7 +314,10 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private boolean mInteracting;
|
||||||
private boolean mAutohideSuspended;
|
private boolean mAutohideSuspended;
|
||||||
|
private int mStatusBarMode;
|
||||||
|
private int mNavigationBarMode;
|
||||||
|
|
||||||
private final Runnable mAutohide = new Runnable() {
|
private final Runnable mAutohide = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
@@ -1394,7 +1399,7 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
|
|
||||||
visibilityChanged(true);
|
visibilityChanged(true);
|
||||||
|
|
||||||
suspendAutohide();
|
setInteracting(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void animateCollapsePanels() {
|
public void animateCollapsePanels() {
|
||||||
@@ -1678,8 +1683,7 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
mPostCollapseCleanup = null;
|
mPostCollapseCleanup = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reschedule suspended auto-hide if necessary
|
setInteracting(false);
|
||||||
resumeAutohide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1826,7 +1830,7 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
hideCling();
|
hideCling();
|
||||||
}
|
}
|
||||||
|
|
||||||
suspendAutohide();
|
setInteracting(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1843,11 +1847,12 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
if (mNavigationBarView != null) {
|
if (mNavigationBarView != null) {
|
||||||
mNavigationBarView.setNavigationIconHints(hints);
|
mNavigationBarView.setNavigationIconHints(hints);
|
||||||
}
|
}
|
||||||
|
checkBarModes();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override // CommandQueue
|
@Override // CommandQueue
|
||||||
public void setWindowState(int window, int state) {
|
public void setWindowState(int window, int state) {
|
||||||
boolean showing = state == StatusBarManager.WINDOW_STATE_SHOWING;
|
boolean showing = state == WINDOW_STATE_SHOWING;
|
||||||
if (mStatusBarWindow != null
|
if (mStatusBarWindow != null
|
||||||
&& window == StatusBarManager.WINDOW_STATUS_BAR
|
&& window == StatusBarManager.WINDOW_STATUS_BAR
|
||||||
&& mStatusBarWindowState != state) {
|
&& mStatusBarWindowState != state) {
|
||||||
@@ -1898,17 +1903,28 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update status bar mode
|
// update status bar mode
|
||||||
int sbMode = updateBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(),
|
final int sbMode = computeBarMode(oldVal, newVal, mStatusBarView.getBarTransitions(),
|
||||||
View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS,
|
View.STATUS_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_STATUS);
|
||||||
mStatusBarWindowState);
|
|
||||||
|
|
||||||
// update navigation bar mode
|
// update navigation bar mode
|
||||||
int nbMode = mNavigationBarView == null ? -1 : updateBarMode(
|
final int nbMode = mNavigationBarView == null ? -1 : computeBarMode(
|
||||||
oldVal, newVal, mNavigationBarView.getBarTransitions(),
|
oldVal, newVal, mNavigationBarView.getBarTransitions(),
|
||||||
View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION,
|
View.NAVIGATION_BAR_TRANSIENT, View.SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION);
|
||||||
mNavigationBarWindowState);
|
final boolean sbModeChanged = sbMode != -1;
|
||||||
|
final boolean nbModeChanged = nbMode != -1;
|
||||||
if (sbMode != -1 || nbMode != -1) {
|
boolean checkBarModes = false;
|
||||||
|
if (sbModeChanged && sbMode != mStatusBarMode) {
|
||||||
|
mStatusBarMode = sbMode;
|
||||||
|
checkBarModes = true;
|
||||||
|
}
|
||||||
|
if (nbModeChanged && nbMode != mNavigationBarMode) {
|
||||||
|
mNavigationBarMode = nbMode;
|
||||||
|
checkBarModes = true;
|
||||||
|
}
|
||||||
|
if (checkBarModes) {
|
||||||
|
checkBarModes();
|
||||||
|
}
|
||||||
|
if (sbModeChanged || nbModeChanged) {
|
||||||
// update transient bar autohide
|
// update transient bar autohide
|
||||||
if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) {
|
if (sbMode == MODE_SEMI_TRANSPARENT || nbMode == MODE_SEMI_TRANSPARENT) {
|
||||||
scheduleAutohide();
|
scheduleAutohide();
|
||||||
@@ -1935,15 +1951,13 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
return mStatusBarView.getBarTransitions().getMode();
|
return mStatusBarView.getBarTransitions().getMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int updateBarMode(int oldVis, int newVis, BarTransitions transitions,
|
private int computeBarMode(int oldVis, int newVis, BarTransitions transitions,
|
||||||
int transientFlag, int transparentFlag, int windowState) {
|
int transientFlag, int transparentFlag) {
|
||||||
final int oldMode = barMode(oldVis, transientFlag, transparentFlag);
|
final int oldMode = barMode(oldVis, transientFlag, transparentFlag);
|
||||||
final int newMode = barMode(newVis, transientFlag, transparentFlag);
|
final int newMode = barMode(newVis, transientFlag, transparentFlag);
|
||||||
if (oldMode == newMode) {
|
if (oldMode == newMode) {
|
||||||
return -1; // no mode change
|
return -1; // no mode change
|
||||||
}
|
}
|
||||||
final boolean animate = windowState == StatusBarManager.WINDOW_STATE_SHOWING;
|
|
||||||
transitions.transitionTo(newMode, animate);
|
|
||||||
return newMode;
|
return newMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1953,35 +1967,49 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
: MODE_OPAQUE;
|
: MODE_OPAQUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final Runnable mResumeSemiTransparent = new Runnable() {
|
private void checkBarModes() {
|
||||||
|
checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarView.getBarTransitions());
|
||||||
|
if (mNavigationBarView != null) {
|
||||||
|
checkBarMode(mNavigationBarMode,
|
||||||
|
mNavigationBarWindowState, mNavigationBarView.getBarTransitions());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkBarMode(int mode, int windowState, BarTransitions transitions) {
|
||||||
|
final boolean imeVisible = (mNavigationIconHints & NAVIGATION_HINT_BACK_ALT) != 0;
|
||||||
|
final int finalMode = imeVisible || mInteracting ? MODE_OPAQUE : mode;
|
||||||
|
final boolean animate = windowState == WINDOW_STATE_SHOWING;
|
||||||
|
transitions.transitionTo(finalMode, animate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Runnable mCheckBarModes = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if ((mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0) {
|
checkBarModes();
|
||||||
animateTransitionTo(BarTransitions.MODE_SEMI_TRANSPARENT);
|
|
||||||
}
|
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resumeAutohide() {
|
public void setInteracting(boolean interacting) {
|
||||||
|
mInteracting = interacting;
|
||||||
|
if (mInteracting) {
|
||||||
|
suspendAutohide();
|
||||||
|
} else {
|
||||||
|
resumeSuspendedAutohide();
|
||||||
|
}
|
||||||
|
checkBarModes();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resumeSuspendedAutohide() {
|
||||||
if (mAutohideSuspended) {
|
if (mAutohideSuspended) {
|
||||||
scheduleAutohide();
|
scheduleAutohide();
|
||||||
mHandler.postDelayed(mResumeSemiTransparent, 500); // longer than home -> launcher
|
mHandler.postDelayed(mCheckBarModes, 500); // longer than home -> launcher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void animateTransitionTo(int newMode) {
|
private void suspendAutohide() {
|
||||||
mStatusBarView.getBarTransitions().transitionTo(newMode, true /*animate*/);
|
|
||||||
if (mNavigationBarView != null) {
|
|
||||||
mNavigationBarView.getBarTransitions().transitionTo(newMode, true /*animate*/);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void suspendAutohide() {
|
|
||||||
mHandler.removeCallbacks(mAutohide);
|
mHandler.removeCallbacks(mAutohide);
|
||||||
mHandler.removeCallbacks(mResumeSemiTransparent);
|
mHandler.removeCallbacks(mCheckBarModes);
|
||||||
mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0;
|
mAutohideSuspended = (mSystemUiVisibility & STATUS_OR_NAV_TRANSIENT) != 0;
|
||||||
animateTransitionTo(BarTransitions.MODE_OPAQUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancelAutohide() {
|
private void cancelAutohide() {
|
||||||
@@ -2087,8 +2115,8 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
|| ((vis & InputMethodService.IME_VISIBLE) != 0);
|
|| ((vis & InputMethodService.IME_VISIBLE) != 0);
|
||||||
|
|
||||||
mCommandQueue.setNavigationIconHints(
|
mCommandQueue.setNavigationIconHints(
|
||||||
altBack ? (mNavigationIconHints | StatusBarManager.NAVIGATION_HINT_BACK_ALT)
|
altBack ? (mNavigationIconHints | NAVIGATION_HINT_BACK_ALT)
|
||||||
: (mNavigationIconHints & ~StatusBarManager.NAVIGATION_HINT_BACK_ALT));
|
: (mNavigationIconHints & ~NAVIGATION_HINT_BACK_ALT));
|
||||||
if (mQS != null) mQS.setImeWindowStatus(vis > 0);
|
if (mQS != null) mQS.setImeWindowStatus(vis > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2186,12 +2214,17 @@ public class PhoneStatusBar extends BaseStatusBar {
|
|||||||
+ " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY());
|
+ " scroll " + mScrollView.getScrollX() + "," + mScrollView.getScrollY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pw.print(" mInteracting="); pw.println(mInteracting);
|
||||||
pw.print(" mStatusBarWindowState=");
|
pw.print(" mStatusBarWindowState=");
|
||||||
pw.println(windowStateToString(mStatusBarWindowState));
|
pw.println(windowStateToString(mStatusBarWindowState));
|
||||||
|
pw.print(" mStatusBarMode=");
|
||||||
|
pw.println(BarTransitions.modeToString(mStatusBarMode));
|
||||||
dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions());
|
dumpBarTransitions(pw, "mStatusBarView", mStatusBarView.getBarTransitions());
|
||||||
if (mNavigationBarView != null) {
|
if (mNavigationBarView != null) {
|
||||||
pw.print(" mNavigationBarWindowState=");
|
pw.print(" mNavigationBarWindowState=");
|
||||||
pw.println(windowStateToString(mNavigationBarWindowState));
|
pw.println(windowStateToString(mNavigationBarWindowState));
|
||||||
|
pw.print(" mNavigationBarMode=");
|
||||||
|
pw.println(BarTransitions.modeToString(mNavigationBarMode));
|
||||||
dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
|
dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class BarController {
|
|||||||
private IStatusBarService mStatusBarService;
|
private IStatusBarService mStatusBarService;
|
||||||
|
|
||||||
private WindowState mWin;
|
private WindowState mWin;
|
||||||
private int mState;
|
private int mState = StatusBarManager.WINDOW_STATE_SHOWING;
|
||||||
private int mTransientBarState;
|
private int mTransientBarState;
|
||||||
private boolean mPendingShow;
|
private boolean mPendingShow;
|
||||||
private long mLastTransparent;
|
private long mLastTransparent;
|
||||||
@@ -110,7 +110,7 @@ public class BarController {
|
|||||||
final boolean oldAnim = mWin.isAnimatingLw();
|
final boolean oldAnim = mWin.isAnimatingLw();
|
||||||
final boolean rt = show ? mWin.showLw(true) : mWin.hideLw(true);
|
final boolean rt = show ? mWin.showLw(true) : mWin.hideLw(true);
|
||||||
final int state = computeState(oldVis, oldAnim, mWin.isVisibleLw(), mWin.isAnimatingLw());
|
final int state = computeState(oldVis, oldAnim, mWin.isVisibleLw(), mWin.isAnimatingLw());
|
||||||
if (state > -1) {
|
if (state > -1 && mWin.hasDrawnLw()) {
|
||||||
updateState(state);
|
updateState(state);
|
||||||
}
|
}
|
||||||
return rt;
|
return rt;
|
||||||
@@ -146,7 +146,7 @@ public class BarController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkHiddenLw() {
|
public boolean checkHiddenLw() {
|
||||||
if (mWin != null) {
|
if (mWin != null && mWin.hasDrawnLw()) {
|
||||||
if (!mWin.isVisibleLw() && !mWin.isAnimatingLw()) {
|
if (!mWin.isVisibleLw() && !mWin.isAnimatingLw()) {
|
||||||
updateState(StatusBarManager.WINDOW_STATE_HIDDEN);
|
updateState(StatusBarManager.WINDOW_STATE_HIDDEN);
|
||||||
}
|
}
|
||||||
@@ -230,9 +230,9 @@ public class BarController {
|
|||||||
public void dump(PrintWriter pw, String prefix) {
|
public void dump(PrintWriter pw, String prefix) {
|
||||||
if (mWin != null) {
|
if (mWin != null) {
|
||||||
pw.print(prefix); pw.println(mTag);
|
pw.print(prefix); pw.println(mTag);
|
||||||
pw.print(" "); pw.print("mState"); pw.print('=');
|
pw.print(prefix); pw.print(" "); pw.print("mState"); pw.print('=');
|
||||||
pw.println(StatusBarManager.windowStateToString(mState));
|
pw.println(StatusBarManager.windowStateToString(mState));
|
||||||
pw.print(" "); pw.print("mTransientBar"); pw.print('=');
|
pw.print(prefix); pw.print(" "); pw.print("mTransientBar"); pw.print('=');
|
||||||
pw.println(transientBarStateToString(mTransientBarState));
|
pw.println(transientBarStateToString(mTransientBarState));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2986,7 +2986,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
|||||||
pf.left = df.left = of.left = cf.left = vf.left = mDockLeft;
|
pf.left = df.left = of.left = cf.left = vf.left = mDockLeft;
|
||||||
pf.top = df.top = of.top = cf.top = vf.top = mDockTop;
|
pf.top = df.top = of.top = cf.top = vf.top = mDockTop;
|
||||||
pf.right = df.right = of.right = cf.right = vf.right = mDockRight;
|
pf.right = df.right = of.right = cf.right = vf.right = mDockRight;
|
||||||
pf.bottom = df.bottom = of.bottom = cf.bottom = vf.bottom = mDockBottom;
|
// IM dock windows always go above the nav bar.
|
||||||
|
pf.bottom = df.bottom = of.bottom = cf.bottom = vf.bottom = mStableBottom;
|
||||||
// IM dock windows always go to the bottom of the screen.
|
// IM dock windows always go to the bottom of the screen.
|
||||||
attrs.gravity = Gravity.BOTTOM;
|
attrs.gravity = Gravity.BOTTOM;
|
||||||
mDockLayer = win.getSurfaceLayer();
|
mDockLayer = win.getSurfaceLayer();
|
||||||
|
|||||||
Reference in New Issue
Block a user