Merge "Fix QSTileViewImpl label set ellipsize performance issue" into sc-dev am: 518dace0a1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15334679 Change-Id: If92dbdcaf4102a7cff897b1881f438a86f0da690
This commit is contained in:
@@ -268,7 +268,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExpansion(float expansion) {
|
||||
public void setExpansion(float expansion, float proposedTranslation) {
|
||||
mLastExpansion = expansion;
|
||||
updateSelected();
|
||||
}
|
||||
|
||||
@@ -510,11 +510,13 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
: headerTranslation);
|
||||
}
|
||||
int currentHeight = getView().getHeight();
|
||||
mLastHeaderTranslation = headerTranslation;
|
||||
if (expansion == mLastQSExpansion && mLastKeyguardAndExpanded == onKeyguardAndExpanded
|
||||
&& mLastViewHeight == currentHeight) {
|
||||
if (expansion == mLastQSExpansion
|
||||
&& mLastKeyguardAndExpanded == onKeyguardAndExpanded
|
||||
&& mLastViewHeight == currentHeight
|
||||
&& mLastHeaderTranslation == headerTranslation) {
|
||||
return;
|
||||
}
|
||||
mLastHeaderTranslation = headerTranslation;
|
||||
mLastQSExpansion = expansion;
|
||||
mLastKeyguardAndExpanded = onKeyguardAndExpanded;
|
||||
mLastViewHeight = currentHeight;
|
||||
@@ -534,8 +536,8 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
}
|
||||
mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
|
||||
mQSPanelController.setRevealExpansion(expansion);
|
||||
mQSPanelController.getTileLayout().setExpansion(expansion);
|
||||
mQuickQSPanelController.getTileLayout().setExpansion(expansion);
|
||||
mQSPanelController.getTileLayout().setExpansion(expansion, proposedTranslation);
|
||||
mQuickQSPanelController.getTileLayout().setExpansion(expansion, proposedTranslation);
|
||||
mQSPanelScrollView.setTranslationY(translationScaleY * heightDiff);
|
||||
if (fullyCollapsed) {
|
||||
mQSPanelScrollView.setScrollY(0);
|
||||
|
||||
@@ -736,7 +736,7 @@ public class QSPanel extends LinearLayout implements Tunable {
|
||||
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.
|
||||
*/
|
||||
@@ -745,7 +745,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
|
||||
*
|
||||
@@ -755,7 +755,10 @@ public class QSPanel extends LinearLayout implements Tunable {
|
||||
return false;
|
||||
}
|
||||
|
||||
default void setExpansion(float expansion) {}
|
||||
/**
|
||||
* Sets the expansion value and proposedTranslation to panel.
|
||||
*/
|
||||
default void setExpansion(float expansion, float proposedTranslation) {}
|
||||
|
||||
int getNumVisibleTiles();
|
||||
}
|
||||
|
||||
@@ -171,6 +171,8 @@ public class QuickQSPanel extends QSPanel {
|
||||
|
||||
static class QQSSideLabelTileLayout extends SideLabelTileLayout {
|
||||
|
||||
private boolean mLastSelected;
|
||||
|
||||
QQSSideLabelTileLayout(Context context) {
|
||||
super(context, null);
|
||||
setClipChildren(false);
|
||||
@@ -216,5 +218,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,9 +195,6 @@ open class QSTileViewImpl @JvmOverloads constructor(
|
||||
// sibling methods to have special behavior for labelContainer.
|
||||
labelContainer.forceUnspecifiedMeasure = true
|
||||
secondaryLabel.alpha = 0f
|
||||
// Do not marque in QQS
|
||||
label.ellipsize = TextUtils.TruncateAt.END
|
||||
secondaryLabel.ellipsize = TextUtils.TruncateAt.END
|
||||
}
|
||||
setLabelColor(getLabelColorForState(QSTile.State.DEFAULT_STATE))
|
||||
setSecondaryLabelColor(getSecondaryLabelColorForState(QSTile.State.DEFAULT_STATE))
|
||||
|
||||
Reference in New Issue
Block a user