Merge "Fix QSTileViewImpl label set ellipsize performance issue" into sc-dev

This commit is contained in:
Bill Lin
2021-08-04 23:55:24 +00:00
committed by Android (Google) Code Review
5 changed files with 40 additions and 12 deletions

View File

@@ -268,7 +268,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
} }
@Override @Override
public void setExpansion(float expansion) { public void setExpansion(float expansion, float proposedTranslation) {
mLastExpansion = expansion; mLastExpansion = expansion;
updateSelected(); updateSelected();
} }

View File

@@ -498,11 +498,13 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
: headerTranslation); : headerTranslation);
} }
int currentHeight = getView().getHeight(); int currentHeight = getView().getHeight();
mLastHeaderTranslation = headerTranslation; if (expansion == mLastQSExpansion
if (expansion == mLastQSExpansion && mLastKeyguardAndExpanded == onKeyguardAndExpanded && mLastKeyguardAndExpanded == onKeyguardAndExpanded
&& mLastViewHeight == currentHeight) { && mLastViewHeight == currentHeight
&& mLastHeaderTranslation == headerTranslation) {
return; return;
} }
mLastHeaderTranslation = headerTranslation;
mLastQSExpansion = expansion; mLastQSExpansion = expansion;
mLastKeyguardAndExpanded = onKeyguardAndExpanded; mLastKeyguardAndExpanded = onKeyguardAndExpanded;
mLastViewHeight = currentHeight; mLastViewHeight = currentHeight;
@@ -522,8 +524,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
} }
mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion); mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
mQSPanelController.setRevealExpansion(expansion); mQSPanelController.setRevealExpansion(expansion);
mQSPanelController.getTileLayout().setExpansion(expansion); mQSPanelController.getTileLayout().setExpansion(expansion, proposedTranslation);
mQuickQSPanelController.getTileLayout().setExpansion(expansion); mQuickQSPanelController.getTileLayout().setExpansion(expansion, proposedTranslation);
mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff); mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff);
if (fullyCollapsed) { if (fullyCollapsed) {
mQSPanelScrollView.setScrollY(0); mQSPanelScrollView.setScrollY(0);

View File

@@ -742,7 +742,7 @@ public class QSPanel extends LinearLayout implements Tunable {
void setListening(boolean listening, UiEventLogger uiEventLogger); void setListening(boolean listening, UiEventLogger uiEventLogger);
/** /**
* Set the minimum number of rows to show * Sets the minimum number of rows to show
* *
* @param minRows the minimum. * @param minRows the minimum.
*/ */
@@ -751,7 +751,7 @@ public class QSPanel extends LinearLayout implements Tunable {
} }
/** /**
* Set the max number of columns to show * Sets the max number of columns to show
* *
* @param maxColumns the maximum * @param maxColumns the maximum
* *
@@ -761,7 +761,10 @@ public class QSPanel extends LinearLayout implements Tunable {
return false; return false;
} }
default void setExpansion(float expansion) {} /**
* Sets the expansion value and proposedTranslation to panel.
*/
default void setExpansion(float expansion, float proposedTranslation) {}
int getNumVisibleTiles(); int getNumVisibleTiles();
} }

View File

@@ -177,6 +177,8 @@ public class QuickQSPanel extends QSPanel {
static class QQSSideLabelTileLayout extends SideLabelTileLayout { static class QQSSideLabelTileLayout extends SideLabelTileLayout {
private boolean mLastSelected;
QQSSideLabelTileLayout(Context context) { QQSSideLabelTileLayout(Context context) {
super(context, null); super(context, null);
setClipChildren(false); setClipChildren(false);
@@ -222,5 +224,29 @@ public class QuickQSPanel extends QSPanel {
} }
} }
} }
@Override
public void setExpansion(float expansion, float proposedTranslation) {
if (expansion > 0f && expansion < 1f) {
return;
}
// The cases we must set select for marquee when QQS/QS collapsed, and QS full expanded.
// Expansion == 0f is when QQS is fully showing (as opposed to 1f, which is QS). At this
// point we want them to be selected so the tiles will marquee (but not at other points
// of expansion.
boolean selected = (expansion == 1f || proposedTranslation < 0f);
if (mLastSelected == selected) {
return;
}
// We set it as not important while we change this, so setting each tile as selected
// will not cause them to announce themselves until the user has actually selected the
// item.
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
for (int i = 0; i < getChildCount(); i++) {
getChildAt(i).setSelected(selected);
}
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
mLastSelected = selected;
}
} }
} }

View File

@@ -195,9 +195,6 @@ open class QSTileViewImpl @JvmOverloads constructor(
// sibling methods to have special behavior for labelContainer. // sibling methods to have special behavior for labelContainer.
labelContainer.forceUnspecifiedMeasure = true labelContainer.forceUnspecifiedMeasure = true
secondaryLabel.alpha = 0f secondaryLabel.alpha = 0f
// Do not marque in QQS
label.ellipsize = TextUtils.TruncateAt.END
secondaryLabel.ellipsize = TextUtils.TruncateAt.END
} }
setLabelColor(getLabelColorForState(QSTile.State.DEFAULT_STATE)) setLabelColor(getLabelColorForState(QSTile.State.DEFAULT_STATE))
setSecondaryLabelColor(getSecondaryLabelColorForState(QSTile.State.DEFAULT_STATE)) setSecondaryLabelColor(getSecondaryLabelColorForState(QSTile.State.DEFAULT_STATE))