Merge "Put dismiss end target at navigation bar" into nyc-dev

am: 93f04f8920

* commit '93f04f89202d269fbb38c6f2ffacc3fa01728bbc':
  Put dismiss end target at navigation bar
This commit is contained in:
Jorim Jaggi
2016-02-09 02:00:11 +00:00
committed by android-build-merger
5 changed files with 36 additions and 8 deletions

View File

@@ -460,6 +460,11 @@ public interface WindowManagerPolicy {
/** Unregister a system listener for touch events */
void unregisterPointerEventListener(PointerEventListener listener);
/**
* @return The content insets of the docked divider window.
*/
int getDockedDividerInsetsLw();
}
public interface PointerEventListener {

View File

@@ -136,8 +136,7 @@ public class DividerSnapAlgorithm {
/ (mFirstSplitTarget.position - getStartInset());
} else if (position > mLastSplitTarget.position) {
return (float) (position - mLastSplitTarget.position)
/ (mDismissEndTarget.position - getEndInset()
- mLastSplitTarget.position - mDividerSize);
/ (mDismissEndTarget.position - mLastSplitTarget.position - mDividerSize);
}
return 0f;
}
@@ -222,7 +221,8 @@ public class DividerSnapAlgorithm {
addMiddleTarget(isHorizontalDivision);
break;
}
mTargets.add(new SnapTarget(dividerMax, SnapTarget.FLAG_DISMISS_END, 0.35f));
int navBarSize = isHorizontalDivision ? mInsets.bottom : mInsets.right;
mTargets.add(new SnapTarget(dividerMax - navBarSize, SnapTarget.FLAG_DISMISS_END, 0.35f));
}
private void addFixedDivisionTargets(boolean isHorizontalDivision) {

View File

@@ -2645,11 +2645,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
} else if (win.getAttrs().type == TYPE_DOCK_DIVIDER) {
if (transit == TRANSIT_ENTER || transit == TRANSIT_SHOW) {
return R.anim.fade_in;
} else if (transit == TRANSIT_EXIT) {
return R.anim.fade_out;
}
return selectDockedDividerAnimationLw(win, transit);
}
if (transit == TRANSIT_PREVIEW_DONE) {
@@ -2669,6 +2665,24 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return 0;
}
private int selectDockedDividerAnimationLw(WindowState win, int transit) {
int insets = mWindowManagerFuncs.getDockedDividerInsetsLw();
// If the divider is behind the navigation bar, don't animate.
if (mNavigationBar != null
&& (win.getFrameLw().top + insets >= mNavigationBar.getFrameLw().top
|| win.getFrameLw().left + insets >= mNavigationBar.getFrameLw().left)) {
return 0;
}
if (transit == TRANSIT_ENTER || transit == TRANSIT_SHOW) {
return R.anim.fade_in;
} else if (transit == TRANSIT_EXIT) {
return R.anim.fade_out;
} else {
return 0;
}
}
@Override
public void selectRotationAnimationLw(int anim[]) {
if (PRINT_ANIM) Slog.i(TAG, "selectRotationAnimation mTopFullscreen="

View File

@@ -72,6 +72,10 @@ public class DockedStackDividerController implements DimLayerUser {
return mDividerWindowWidth - 2 * mDividerInsets;
}
int getContentInsets() {
return mDividerInsets;
}
void setResizing(boolean resizing) {
mResizing = resizing;
}

View File

@@ -9619,6 +9619,11 @@ public class WindowManagerService extends IWindowManager.Stub
&& !appWindow.mTask.inFreeformWorkspace();
}
@Override
public int getDockedDividerInsetsLw() {
return getDefaultDisplayContentLocked().getDockedDividerController().getContentInsets();
}
void dumpPolicyLocked(PrintWriter pw, String[] args, boolean dumpAll) {
pw.println("WINDOW MANAGER POLICY STATE (dumpsys window policy)");
mPolicy.dump(" ", pw, args);