Merge "Fix colored status bar panning issues" into lmp-mr1-dev
This commit is contained in:
@@ -1649,6 +1649,9 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
mLastScrolledFocus.clear();
|
mLastScrolledFocus.clear();
|
||||||
}
|
}
|
||||||
mScrollY = mCurScrollY = 0;
|
mScrollY = mCurScrollY = 0;
|
||||||
|
if (mView instanceof RootViewSurfaceTaker) {
|
||||||
|
((RootViewSurfaceTaker) mView).onRootViewScrollYChanged(mCurScrollY);
|
||||||
|
}
|
||||||
if (mScroller != null) {
|
if (mScroller != null) {
|
||||||
mScroller.abortAnimation();
|
mScroller.abortAnimation();
|
||||||
}
|
}
|
||||||
@@ -2419,6 +2422,9 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
if (mCurScrollY != curScrollY) {
|
if (mCurScrollY != curScrollY) {
|
||||||
mCurScrollY = curScrollY;
|
mCurScrollY = curScrollY;
|
||||||
fullRedrawNeeded = true;
|
fullRedrawNeeded = true;
|
||||||
|
if (mView instanceof RootViewSurfaceTaker) {
|
||||||
|
((RootViewSurfaceTaker) mView).onRootViewScrollYChanged(mCurScrollY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final float appScale = mAttachInfo.mApplicationScale;
|
final float appScale = mAttachInfo.mApplicationScale;
|
||||||
|
|||||||
@@ -1,3 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2010 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package com.android.internal.view;
|
package com.android.internal.view;
|
||||||
|
|
||||||
import android.view.InputQueue;
|
import android.view.InputQueue;
|
||||||
@@ -10,4 +25,5 @@ public interface RootViewSurfaceTaker {
|
|||||||
void setSurfaceFormat(int format);
|
void setSurfaceFormat(int format);
|
||||||
void setSurfaceKeepScreenOn(boolean keepOn);
|
void setSurfaceKeepScreenOn(boolean keepOn);
|
||||||
InputQueue.Callback willYouTakeTheInputQueue();
|
InputQueue.Callback willYouTakeTheInputQueue();
|
||||||
|
void onRootViewScrollYChanged(int scrollY);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2190,6 +2190,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
private int mLastBottomInset = 0;
|
private int mLastBottomInset = 0;
|
||||||
private int mLastRightInset = 0;
|
private int mLastRightInset = 0;
|
||||||
|
|
||||||
|
private int mRootScrollY = 0;
|
||||||
|
|
||||||
public DecorView(Context context, int featureId) {
|
public DecorView(Context context, int featureId) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -2891,6 +2892,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
view.setId(id);
|
view.setId(id);
|
||||||
addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, height,
|
addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, height,
|
||||||
Gravity.START | verticalGravity));
|
Gravity.START | verticalGravity));
|
||||||
|
updateColorViewTranslations();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int vis = show ? VISIBLE : INVISIBLE;
|
int vis = show ? VISIBLE : INVISIBLE;
|
||||||
@@ -2907,6 +2909,18 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateColorViewTranslations() {
|
||||||
|
// Put the color views back in place when they get moved off the screen
|
||||||
|
// due to the the ViewRootImpl panning.
|
||||||
|
int rootScrollY = mRootScrollY;
|
||||||
|
if (mStatusColorView != null) {
|
||||||
|
mStatusColorView.setTranslationY(rootScrollY > 0 ? rootScrollY : 0);
|
||||||
|
}
|
||||||
|
if (mNavigationColorView != null) {
|
||||||
|
mNavigationColorView.setTranslationY(rootScrollY < 0 ? rootScrollY : 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private WindowInsets updateStatusGuard(WindowInsets insets) {
|
private WindowInsets updateStatusGuard(WindowInsets insets) {
|
||||||
boolean showStatusGuard = false;
|
boolean showStatusGuard = false;
|
||||||
// Show the status guard when the non-overlay contextual action bar is showing
|
// Show the status guard when the non-overlay contextual action bar is showing
|
||||||
@@ -3165,6 +3179,12 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
else PhoneWindow.this.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
else PhoneWindow.this.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRootViewScrollYChanged(int rootScrollY) {
|
||||||
|
mRootScrollY = rootScrollY;
|
||||||
|
updateColorViewTranslations();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears out internal reference when the action mode is destroyed.
|
* Clears out internal reference when the action mode is destroyed.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user