Merge "Fixed an issue where the shelf could be hidden" into oc-dr1-dev

am: fdc84a13a2

Change-Id: I6c90944ad0db3d309210f1df1d0a1c33bc13cc71
This commit is contained in:
Selim Cinek
2017-07-03 10:53:14 +00:00
committed by android-build-merger
6 changed files with 98 additions and 0 deletions

View File

@@ -117,6 +117,18 @@ public class TransitionDrawable extends LayerDrawable implements Drawable.Callba
invalidateSelf(); invalidateSelf();
} }
/**
* Show the second layer on top of the first layer immediately
*
* @hide
*/
public void showSecondLayer() {
mAlpha = 255;
mReverse = false;
mTransitionState = TRANSITION_NONE;
invalidateSelf();
}
/** /**
* Show only the first layer. * Show only the first layer.
*/ */

View File

@@ -100,4 +100,8 @@ public class QSDetailClipper {
mAnimator = null; mAnimator = null;
}; };
}; };
public void showBackground() {
mBackground.showSecondLayer();
}
} }

View File

@@ -94,6 +94,13 @@ public class QSFragment extends Fragment implements QS {
if (savedInstanceState != null) { if (savedInstanceState != null) {
setExpanded(savedInstanceState.getBoolean(EXTRA_EXPANDED)); setExpanded(savedInstanceState.getBoolean(EXTRA_EXPANDED));
setListening(savedInstanceState.getBoolean(EXTRA_LISTENING)); setListening(savedInstanceState.getBoolean(EXTRA_LISTENING));
int[] loc = new int[2];
View edit = view.findViewById(android.R.id.edit);
edit.getLocationInWindow(loc);
int x = loc[0] + edit.getWidth() / 2;
int y = loc[1] + edit.getHeight() / 2;
mQSCustomizer.setEditLocation(x, y);
mQSCustomizer.restoreInstanceState(savedInstanceState);
} }
} }
@@ -110,6 +117,7 @@ public class QSFragment extends Fragment implements QS {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putBoolean(EXTRA_EXPANDED, mQsExpanded); outState.putBoolean(EXTRA_EXPANDED, mQsExpanded);
outState.putBoolean(EXTRA_LISTENING, mListening); outState.putBoolean(EXTRA_LISTENING, mListening);
mQSCustomizer.saveInstanceState(outState);
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -20,6 +20,9 @@ import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorListenerAdapter;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.DefaultItemAnimator;
@@ -42,6 +45,7 @@ import com.android.systemui.Dependency;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSContainerImpl;
import com.android.systemui.qs.QSDetailClipper; import com.android.systemui.qs.QSDetailClipper;
import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.QSTileHost;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer; import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
@@ -60,6 +64,7 @@ import java.util.List;
public class QSCustomizer extends LinearLayout implements OnMenuItemClickListener { public class QSCustomizer extends LinearLayout implements OnMenuItemClickListener {
private static final int MENU_RESET = Menu.FIRST; private static final int MENU_RESET = Menu.FIRST;
private static final String EXTRA_QS_CUSTOMIZING = "qs_customizing";
private final QSDetailClipper mClipper; private final QSDetailClipper mClipper;
@@ -109,11 +114,16 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
DefaultItemAnimator animator = new DefaultItemAnimator(); DefaultItemAnimator animator = new DefaultItemAnimator();
animator.setMoveDuration(TileAdapter.MOVE_DURATION); animator.setMoveDuration(TileAdapter.MOVE_DURATION);
mRecyclerView.setItemAnimator(animator); mRecyclerView.setItemAnimator(animator);
updateNavBackDrop(getResources().getConfiguration());
} }
@Override @Override
protected void onConfigurationChanged(Configuration newConfig) { protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
updateNavBackDrop(newConfig);
}
private void updateNavBackDrop(Configuration newConfig) {
View navBackdrop = findViewById(R.id.nav_bar_background); View navBackdrop = findViewById(R.id.nav_bar_background);
if (navBackdrop != null) { if (navBackdrop != null) {
boolean shouldShow = newConfig.smallestScreenWidthDp >= 600 boolean shouldShow = newConfig.smallestScreenWidthDp >= 600
@@ -154,6 +164,21 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
} }
} }
public void showImmediately() {
if (!isShown) {
setVisibility(VISIBLE);
mClipper.showBackground();
isShown = true;
setTileSpecs();
setCustomizing(true);
queryTiles();
mNotifQsContainer.setCustomizerAnimating(false);
mNotifQsContainer.setCustomizerShowing(true);
Dependency.get(KeyguardMonitor.class).addCallback(mKeyguardCallback);
}
}
private void queryTiles() { private void queryTiles() {
mFinishedFetchingTiles = false; mFinishedFetchingTiles = false;
Runnable tileQueryFetchCompletion = () -> { Runnable tileQueryFetchCompletion = () -> {
@@ -227,6 +252,35 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
} }
} }
public void saveInstanceState(Bundle outState) {
if (isShown) {
Dependency.get(KeyguardMonitor.class).removeCallback(mKeyguardCallback);
}
outState.putBoolean(EXTRA_QS_CUSTOMIZING, mCustomizing);
}
public void restoreInstanceState(Bundle savedInstanceState) {
boolean customizing = savedInstanceState.getBoolean(EXTRA_QS_CUSTOMIZING);
if (customizing) {
setVisibility(VISIBLE);
addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom,
int oldLeft,
int oldTop, int oldRight, int oldBottom) {
removeOnLayoutChangeListener(this);
showImmediately();
}
});
}
}
public void setEditLocation(int x, int y) {
mX = x;
mY = y;
}
private final Callback mKeyguardCallback = () -> { private final Callback mKeyguardCallback = () -> {
if (!isAttachedToWindow()) return; if (!isAttachedToWindow()) return;
if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) { if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) {

View File

@@ -3487,6 +3487,11 @@ public class StatusBar extends SystemUI implements DemoMode,
pw.print (" "); pw.print (" ");
mNotificationPanel.dump(fd, pw, args); mNotificationPanel.dump(fd, pw, args);
} }
pw.println(" mStackScroller: ");
if (mStackScroller != null) {
pw.print (" ");
mStackScroller.dump(fd, pw, args);
}
DozeLog.dump(pw); DozeLog.dump(pw);

View File

@@ -91,6 +91,8 @@ import com.android.systemui.statusbar.policy.ScrollAdapter;
import android.support.v4.graphics.ColorUtils; import android.support.v4.graphics.ColorUtils;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@@ -4257,6 +4259,19 @@ public class NotificationStackScrollLayout extends ViewGroup
mShelf.setDarkOffsetX(shelfOffsetX); mShelf.setDarkOffsetX(shelfOffsetX);
} }
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println(String.format("[%s: pulsing=%s qsCustomizerShowing=%s visibility=%s"
+ " alpha:%f scrollY:%d]",
this.getClass().getSimpleName(),
mPulsing != null ?"T":"f",
mAmbientState.isQsCustomizerShowing() ? "T":"f",
getVisibility() == View.VISIBLE ? "visible"
: getVisibility() == View.GONE ? "gone"
: "invisible",
getAlpha(),
mAmbientState.getScrollY()));
}
/** /**
* A listener that is notified when some child locations might have changed. * A listener that is notified when some child locations might have changed.
*/ */