Create an alpha letter scroller
- The function used is a raised cosine function to determine the sections to animate. Tested flag: adb shell device_config put launcher com.android.launcher3.letter_fast_scroller true Based on recent figmaspec, size of selected letter is 28dp and regular is 20dp. That means scaling should be 28/20. Colors are: onSurface for letter surfaceContainer for background. Figma shows selected colors are materialColorOnSecondary bug:358673724 Test manually: https://drive.google.com/file/d/1gvJd5KoK8X_Sv8jXg1cZ65R4AuqHuvcd/view?usp=sharing Flag: com.android.launcher3.letter_fast_scroller Change-Id: Ia86eb0e8c41bc043fda3c44aeaf59e204429f337
This commit is contained in:
1 parent
cd53b74000
commit
1f8f88696b
12 files changed
+415
-21
No files matched your search
@@ -28,6 +28,7 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH
|
||||
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB;
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.launcher3.util.ScrollableLayoutManager.PREDICTIVE_BACK_MIN_SCALE;
|
||||
import static com.android.launcher3.views.RecyclerViewFastScroller.FastScrollerLocation.ALL_APPS_SCROLLER;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -64,6 +65,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.Px;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
@@ -167,6 +169,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
protected FloatingHeaderView mHeader;
|
||||
protected View mBottomSheetBackground;
|
||||
protected RecyclerViewFastScroller mFastScroller;
|
||||
private ConstraintLayout mFastScrollLetterLayout;
|
||||
|
||||
/**
|
||||
* View that defines the search box. Result is rendered inside {@link #mSearchRecyclerView}.
|
||||
@@ -281,6 +284,13 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
mSearchRecyclerView = findViewById(R.id.search_results_list_view);
|
||||
mFastScroller = findViewById(R.id.fast_scroller);
|
||||
mFastScroller.setPopupView(findViewById(R.id.fast_scroller_popup));
|
||||
mFastScrollLetterLayout = findViewById(R.id.scroll_letter_layout);
|
||||
if (Flags.letterFastScroller()) {
|
||||
// Set clip children to false otherwise the scroller letters will be clipped.
|
||||
setClipChildren(false);
|
||||
} else {
|
||||
setClipChildren(true);
|
||||
}
|
||||
|
||||
mSearchContainer = inflateSearchBar();
|
||||
if (!isSearchBarFloating()) {
|
||||
@@ -562,7 +572,8 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
mActivityContext.hideKeyboard();
|
||||
}
|
||||
if (mAH.get(currentActivePage).mRecyclerView != null) {
|
||||
mAH.get(currentActivePage).mRecyclerView.bindFastScrollbar(mFastScroller);
|
||||
mAH.get(currentActivePage).mRecyclerView.bindFastScrollbar(mFastScroller,
|
||||
ALL_APPS_SCROLLER);
|
||||
}
|
||||
// Header keeps track of active recycler view to properly render header protection.
|
||||
mHeader.setActiveRV(currentActivePage);
|
||||
@@ -1495,6 +1506,10 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
}
|
||||
}
|
||||
|
||||
ConstraintLayout getFastScrollerLetterList() {
|
||||
return mFastScrollLetterLayout;
|
||||
}
|
||||
|
||||
/**
|
||||
* redraws header protection
|
||||
*/
|
||||
@@ -1562,7 +1577,7 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
|
||||
void setup(@NonNull View rv, @Nullable Predicate<ItemInfo> matcher) {
|
||||
mAppsList.updateItemFilter(matcher);
|
||||
mRecyclerView = (AllAppsRecyclerView) rv;
|
||||
mRecyclerView.bindFastScrollbar(mFastScroller);
|
||||
mRecyclerView.bindFastScrollbar(mFastScroller, ALL_APPS_SCROLLER);
|
||||
mRecyclerView.setEdgeEffectFactory(createEdgeEffectFactory());
|
||||
mRecyclerView.setApps(mAppsList);
|
||||
mRecyclerView.setLayoutManager(mLayoutManager);
|
||||
|
||||
Reference in new issue
Block a user