Move adding views logic to privateProfileManager
- Have the animation happen according to the state of private space. - Have the transition happen only once by setting the current transition to null at the end of transition and by ensuring where the transitions are allowed. - Removing controller class. - The onClick controls the enablement of the profile. On reset (when getting the transition) is what controls the animation during expand. tldr- In the collapse case: execute() is called -> animation happens -> addPsHeader tldr- Expand case: post() is called -> addPsHeader -> animation happens. Collapse: onClick() -> AACV.onAppsUpdated() that resets & apply/RUNS runnable because EXECUTE -> AAList.onAppsUpdated() (which is called at the same time animating happens which we should cancel and do at end callback) -> AAList.onAppsUpdated() gets called again Expand: onCLick() -> AACV.onAppsUpdated() that resets & apply runnable -> AAList.onAppsUpdated() (no animation running) -> AAList.onAppsUpdated() (no animation running) -> addPrivateSpaceHeader -> then unlockAction() runnable because its posted at this point bug: 326206132 bug: 330444548 bug: 299294792 Test: manually locally and presubmit: https://screenshot.googleplex.com/9wavvwKQ8hY6oUw & https://screenshot.googleplex.com/BiqmidLFjPwS28j video: https://drive.google.com/file/d/1XGhmTncdUFtJj188_l7alGyyNz_fhXNw/view?usp=sharing Scrolling fix before: https://drive.google.com/file/d/1XykDm4UELoCvcwZdj8ZlJ6TszptB8W0W/view?usp=sharing scrolling fix after when not a lot of apps: https://drive.google.com/file/d/1Y4VY1eX7WE8ShSLXRrT56ieBdAuJo_zn/view?usp=sharing scrolling fix after with a lot of apps: https://drive.google.com/file/d/1Y58c-Z9xnU1GILp0Ih-oLORXYkMB-jWn/view?usp=sharing Flag: ACONFIG com.android.launcher3.Flags.private_space_animation Change-Id: I8d03ae60e2c9fe0ec145c4b0a2e9604b9e6e9017
This commit is contained in:
@@ -169,16 +169,9 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
|
||||
protected final OnClickListener mOnIconClickListener;
|
||||
protected final OnLongClickListener mOnIconLongClickListener;
|
||||
protected OnFocusChangeListener mIconFocusListener;
|
||||
private final PrivateSpaceHeaderViewController mPrivateSpaceHeaderViewController;
|
||||
|
||||
public BaseAllAppsAdapter(T activityContext, LayoutInflater inflater,
|
||||
AlphabeticalAppsList<T> apps, SearchAdapterProvider<?> adapterProvider) {
|
||||
this(activityContext, inflater, apps, adapterProvider, null);
|
||||
}
|
||||
|
||||
public BaseAllAppsAdapter(T activityContext, LayoutInflater inflater,
|
||||
AlphabeticalAppsList<T> apps, SearchAdapterProvider<?> adapterProvider,
|
||||
PrivateSpaceHeaderViewController privateSpaceHeaderViewController) {
|
||||
mActivityContext = activityContext;
|
||||
mApps = apps;
|
||||
mLayoutInflater = inflater;
|
||||
@@ -187,7 +180,6 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
|
||||
mOnIconLongClickListener = mActivityContext.getAllAppsItemLongClickListener();
|
||||
|
||||
mAdapterProvider = adapterProvider;
|
||||
mPrivateSpaceHeaderViewController = privateSpaceHeaderViewController;
|
||||
}
|
||||
|
||||
/** Checks if the passed viewType represents all apps divider. */
|
||||
@@ -283,13 +275,10 @@ public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> ex
|
||||
case VIEW_TYPE_PRIVATE_SPACE_HEADER:
|
||||
RelativeLayout psHeaderLayout = holder.itemView.findViewById(
|
||||
R.id.ps_header_layout);
|
||||
assert mPrivateSpaceHeaderViewController != null;
|
||||
assert psHeaderLayout != null;
|
||||
mPrivateSpaceHeaderViewController.addPrivateSpaceHeaderViewElements(psHeaderLayout);
|
||||
mApps.getPrivateProfileManager().addPrivateSpaceHeaderViewElements(psHeaderLayout);
|
||||
AdapterItem adapterItem = mApps.getAdapterItems().get(position);
|
||||
int roundRegions = ROUND_TOP_LEFT | ROUND_TOP_RIGHT;
|
||||
if (mPrivateSpaceHeaderViewController.getPrivateProfileManager().getCurrentState()
|
||||
== STATE_DISABLED) {
|
||||
if (mApps.getPrivateProfileManager().getCurrentState() == STATE_DISABLED) {
|
||||
roundRegions |= (ROUND_BOTTOM_LEFT | ROUND_BOTTOM_RIGHT);
|
||||
}
|
||||
adapterItem.decorationInfo =
|
||||
|
||||
Reference in New Issue
Block a user