diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index ee0b0c28b0c5a..a089a05f2776e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -233,44 +233,45 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha boolean qsSideLabelsEnabled = mFeatureFlags.isQSLabelsEnabled(); int qqsTileHeight = 0; - for (QSTile tile : tiles) { - QSTileView tileView = mQsPanelController.getTileView(tile); - if (tileView == null) { - Log.e(TAG, "tileView is null " + tile.getTileSpec()); - continue; - } - final View tileIcon = tileView.getIcon().getIconView(); - View view = mQs.getView(); + if (mQsPanelController.areThereTiles()) { + for (QSTile tile : tiles) { + QSTileView tileView = mQsPanelController.getTileView(tile); + if (tileView == null) { + Log.e(TAG, "tileView is null " + tile.getTileSpec()); + continue; + } + final View tileIcon = tileView.getIcon().getIconView(); + View view = mQs.getView(); - // This case: less tiles to animate in small displays. - if (count < mQuickQSPanelController.getTileLayout().getNumVisibleTiles() - && mAllowFancy) { - // Quick tiles. - QSTileView quickTileView = mQuickQSPanelController.getTileView(tile); - if (quickTileView == null) continue; + // This case: less tiles to animate in small displays. + if (count < mQuickQSPanelController.getTileLayout().getNumVisibleTiles() + && mAllowFancy) { + // Quick tiles. + QSTileView quickTileView = mQuickQSPanelController.getTileView(tile); + if (quickTileView == null) continue; - getRelativePosition(loc1, quickTileView.getIcon().getIconView(), view); - getRelativePosition(loc2, tileIcon, view); - final int xDiff = loc2[0] - loc1[0]; - int yDiff = loc2[1] - loc1[1]; + getRelativePosition(loc1, quickTileView.getIcon().getIconView(), view); + getRelativePosition(loc2, tileIcon, view); + final int xDiff = loc2[0] - loc1[0]; + int yDiff = loc2[1] - loc1[1]; - if (count < tileLayout.getNumVisibleTiles()) { - getRelativePosition(loc1, quickTileView, view); - getRelativePosition(loc2, tileView, view); - int yOffset = qsSideLabelsEnabled - ? loc2[1] - loc1[1] - : mQuickStatusBarHeader.getOffsetTranslation(); - // Move the quick tile right from its location to the new one. - View v = qsSideLabelsEnabled ? quickTileView.getIcon() : quickTileView; - translationXBuilder.addFloat(v, "translationX", 0, xDiff); - translationYBuilder.addFloat(v, "translationY", 0, yDiff - yOffset); - mAllViews.add(v); + if (count < tileLayout.getNumVisibleTiles()) { + getRelativePosition(loc1, quickTileView, view); + getRelativePosition(loc2, tileView, view); + int yOffset = qsSideLabelsEnabled + ? loc2[1] - loc1[1] + : mQuickStatusBarHeader.getOffsetTranslation(); + // Move the quick tile right from its location to the new one. + View v = qsSideLabelsEnabled ? quickTileView.getIcon() : quickTileView; + translationXBuilder.addFloat(v, "translationX", 0, xDiff); + translationYBuilder.addFloat(v, "translationY", 0, yDiff - yOffset); + mAllViews.add(v); - // Move the real tile from the quick tile position to its final - // location. - v = qsSideLabelsEnabled ? tileIcon : tileView; - translationXBuilder.addFloat(v, "translationX", -xDiff, 0); - translationYBuilder.addFloat(v, "translationY", -yDiff + yOffset, 0); + // Move the real tile from the quick tile position to its final + // location. + v = qsSideLabelsEnabled ? tileIcon : tileView; + translationXBuilder.addFloat(v, "translationX", -xDiff, 0); + translationYBuilder.addFloat(v, "translationY", -yDiff + yOffset, 0); if (qsSideLabelsEnabled) { // Offset the translation animation on the views @@ -282,75 +283,78 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha translationYBuilder.addFloat(tileView, "translationY", -offsetWithQSBHTranslation, 0); - if (mQQSTileHeightAnimator == null) { - mQQSTileHeightAnimator = new HeightExpansionAnimator(this, - quickTileView.getHeight(), tileView.getHeight()); - qqsTileHeight = quickTileView.getHeight(); + if (mQQSTileHeightAnimator == null) { + mQQSTileHeightAnimator = new HeightExpansionAnimator(this, + quickTileView.getHeight(), tileView.getHeight()); + qqsTileHeight = quickTileView.getHeight(); + } + + mQQSTileHeightAnimator.addView(quickTileView); + View qqsLabelContainer = quickTileView.getLabelContainer(); + View qsLabelContainer = tileView.getLabelContainer(); + + getRelativePosition(loc1, qqsLabelContainer, view); + getRelativePosition(loc2, qsLabelContainer, view); + yDiff = loc2[1] - loc1[1] - yOffset; + + translationYBuilder.addFloat(qqsLabelContainer, "translationY", 0, + yDiff); + translationYBuilder.addFloat(qsLabelContainer, "translationY", -yDiff, + 0); + mAllViews.add(qqsLabelContainer); + mAllViews.add(qsLabelContainer); } - mQQSTileHeightAnimator.addView(quickTileView); - View qqsLabelContainer = quickTileView.getLabelContainer(); - View qsLabelContainer = tileView.getLabelContainer(); + } else { // These tiles disappear when expanding + firstPageBuilder.addFloat(quickTileView, "alpha", 1, 0); + translationYBuilder.addFloat(quickTileView, "translationY", 0, yDiff); - getRelativePosition(loc1, qqsLabelContainer, view); - getRelativePosition(loc2, qsLabelContainer, view); - yDiff = loc2[1] - loc1[1] - yOffset; - - translationYBuilder.addFloat(qqsLabelContainer, "translationY", 0, yDiff); - translationYBuilder.addFloat(qsLabelContainer, "translationY", -yDiff, 0); - mAllViews.add(qqsLabelContainer); - mAllViews.add(qsLabelContainer); + // xDiff is negative here and this makes it "more" negative + final int translationX = + mQsPanelController.isLayoutRtl() ? xDiff - width : xDiff + width; + translationXBuilder.addFloat(quickTileView, "translationX", 0, + translationX); } - } else { // These tiles disappear when expanding - firstPageBuilder.addFloat(quickTileView, "alpha", 1, 0); - translationYBuilder.addFloat(quickTileView, "translationY", 0, yDiff); + if (qsSideLabelsEnabled) { + mQuickQsViews.add(tileView); + } else { + mQuickQsViews.add(tileView.getIconWithBackground()); + } + mAllViews.add(tileView.getIcon()); + mAllViews.add(quickTileView); + } else if (mFullRows && isIconInAnimatedRow(count)) { - // xDiff is negative here and this makes it "more" negative - final int translationX = - mQsPanelController.isLayoutRtl() ? xDiff - width : xDiff + width; - translationXBuilder.addFloat(quickTileView, "translationX", 0, - translationX); - } - - if (qsSideLabelsEnabled) { - mQuickQsViews.add(tileView); - } else { - mQuickQsViews.add(tileView.getIconWithBackground()); - } - mAllViews.add(tileView.getIcon()); - mAllViews.add(quickTileView); - } else if (mFullRows && isIconInAnimatedRow(count)) { - - firstPageBuilder.addFloat(tileView, "translationY", -heightDiff, 0); - - mAllViews.add(tileIcon); - } else { - if (!qsSideLabelsEnabled) { - firstPageBuilder.addFloat(tileView, "alpha", 0, 1); firstPageBuilder.addFloat(tileView, "translationY", -heightDiff, 0); - } else { - // Pretend there's a corresponding QQS tile (for the position) that we are - // expanding from. - SideLabelTileLayout qqsLayout = - (SideLabelTileLayout) mQuickQsPanel.getTileLayout(); - getRelativePosition(loc1, qqsLayout, view); - getRelativePosition(loc2, tileView, view); - int diff = loc2[1] - (loc1[1] + qqsLayout.getPhantomTopPosition(count)); - translationYBuilder.addFloat(tileView, "translationY", -diff, 0); - if (mOtherTilesExpandAnimator == null) { - mOtherTilesExpandAnimator = - new HeightExpansionAnimator( - this, qqsTileHeight, tileView.getHeight()); - } - mOtherTilesExpandAnimator.addView(tileView); - tileView.setClipChildren(true); - tileView.setClipToPadding(true); - } - } - mAllViews.add(tileView); - count++; + mAllViews.add(tileIcon); + } else { + if (!qsSideLabelsEnabled) { + firstPageBuilder.addFloat(tileView, "alpha", 0, 1); + firstPageBuilder.addFloat(tileView, "translationY", -heightDiff, 0); + } else { + // Pretend there's a corresponding QQS tile (for the position) that we are + // expanding from. + SideLabelTileLayout qqsLayout = + (SideLabelTileLayout) mQuickQsPanel.getTileLayout(); + getRelativePosition(loc1, qqsLayout, view); + getRelativePosition(loc2, tileView, view); + int diff = loc2[1] - (loc1[1] + qqsLayout.getPhantomTopPosition(count)); + translationYBuilder.addFloat(tileView, "translationY", -diff, 0); + if (mOtherTilesExpandAnimator == null) { + mOtherTilesExpandAnimator = + new HeightExpansionAnimator( + this, qqsTileHeight, tileView.getHeight()); + } + mOtherTilesExpandAnimator.addView(tileView); + tileView.setClipChildren(true); + tileView.setClipToPadding(true); + } + } + + mAllViews.add(tileView); + count++; + } } if (mAllowFancy) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 6386365c2966e..86836f935aba4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -228,6 +228,9 @@ public abstract class QSPanelControllerBase extends ViewContr return mHost.createTile(subPanel); } + boolean areThereTiles() { + return !mRecords.isEmpty(); + } QSTileView getTileView(QSTile tile) { for (QSPanelControllerBase.TileRecord r : mRecords) {