diff options
4 files changed, 39 insertions, 3 deletions
diff --git a/src/com/android/launcher3/BaseRecyclerView.java b/src/com/android/launcher3/BaseRecyclerView.java index cdf9aa2aa..d89c92270 100644 --- a/src/com/android/launcher3/BaseRecyclerView.java +++ b/src/com/android/launcher3/BaseRecyclerView.java @@ -321,6 +321,8 @@ public abstract class BaseRecyclerView extends RecyclerView public void setFastScrollDragging(boolean dragging) {} + public void setPreviousSectionFastScrollFocused() {} + /** * Updates the bounds for the scrollbar. * <p>Override in each subclass of this base class. diff --git a/src/com/android/launcher3/BaseRecyclerViewScrubber.java b/src/com/android/launcher3/BaseRecyclerViewScrubber.java index e3e08aa7c..7795de207 100644 --- a/src/com/android/launcher3/BaseRecyclerViewScrubber.java +++ b/src/com/android/launcher3/BaseRecyclerViewScrubber.java @@ -338,6 +338,10 @@ public class BaseRecyclerViewScrubber extends LinearLayout { } mBaseRecyclerView.setFastScrollDragging(mTouchingTrack); + if (mTouchingTrack) { + mBaseRecyclerView.setPreviousSectionFastScrollFocused(); + } + } } diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java index 3065fb428..643182588 100644 --- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -80,6 +80,9 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. private int mGridTheme; + + private AlphabeticalAppsList.SectionInfo mFocusedSection; + /** * ViewHolder for each icon. */ @@ -572,6 +575,8 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. boolean hideIconLabels = SettingsProvider.getBoolean(mLauncher, SettingsProvider.SETTINGS_UI_DRAWER_HIDE_ICON_LABELS, R.bool.preferences_interface_drawer_hide_icon_labels_default); + FastScrollFocusApplicator.setFastScrollDimmed(holder.mContent, false, false); + FastScrollFocusApplicator.setFastScrollFocused(holder.mContent, false, false); switch (holder.getItemViewType()) { case ICON_VIEW_TYPE: { AppInfo info = mApps.getAdapterItems().get(position).appInfo; @@ -581,7 +586,8 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. icon.setTextVisibility(!hideIconLabels); } icon.applyFromApplicationInfo(info); - FastScrollFocusApplicator.setFastScrollDimmed(icon, mIconsDimmed, !mIconsDimmed); + FastScrollFocusApplicator.setFastScrollDimmed(icon, shouldDimPosition(position), + !mIconsDimmed); FastScrollFocusApplicator.setFastScrollFocused(icon, false, !mIconsDimmed); break; } @@ -593,7 +599,8 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. icon.setTextVisibility(!hideIconLabels); } icon.applyFromApplicationInfo(info); - FastScrollFocusApplicator.setFastScrollDimmed(icon, mIconsDimmed, !mIconsDimmed); + FastScrollFocusApplicator.setFastScrollDimmed(icon, shouldDimPosition(position), + !mIconsDimmed); FastScrollFocusApplicator.setFastScrollFocused(icon, false, !mIconsDimmed); mRemoteFolderManager.onBindViewHolder(holder, info); @@ -620,7 +627,8 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. case CUSTOM_PREDICTED_APPS_HEADER_VIEW_TYPE: { TextView title = (TextView) holder.mContent.findViewById(R.id.title); title.setTextColor(mAllAppsTextColor); - FastScrollFocusApplicator.setFastScrollDimmed(holder.mContent, mIconsDimmed, !mIconsDimmed); + FastScrollFocusApplicator.setFastScrollDimmed(holder.mContent, + shouldDimPosition(position), !mIconsDimmed); FastScrollFocusApplicator.setFastScrollFocused(holder.mContent, false, !mIconsDimmed); ViewGroup.MarginLayoutParams lp = @@ -637,6 +645,17 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. } } + private boolean shouldDimPosition(int position) { + if (mFocusedSection != null && mIconsDimmed) { + if (position >= mFocusedSection.firstAppItem.position && + position < mFocusedSection.firstAppItem.position + + mFocusedSection.numApps) { + return false; + } + } + return mIconsDimmed; + } + public int getCustomPredictedAppsOffset(int rowIndex) { int offset = mCustomPredictedAppsHeaderHeight; if (rowIndex > 0) offset += mCustomPredictedAppsFooterHeight; @@ -661,6 +680,11 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter<AllAppsGridAdapter. } } + public void setFocusedSection( + AlphabeticalAppsList.SectionInfo focusedSection) { + mFocusedSection = focusedSection; + } + public void setGridTheme(int gridTheme) { mGridTheme = gridTheme; int sectionTextColorId = mGridTheme == AllAppsContainerView.GRID_THEME_DARK ? diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java index aaecf7a60..63acba5b2 100644 --- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -416,6 +416,7 @@ public class AllAppsRecyclerView extends BaseRecyclerView private void setSectionFastScrollFocused(int position) { if (mPrevFastScrollFocusedSection != null) { + ((AllAppsGridAdapter)getAdapter()).setFocusedSection(mPrevFastScrollFocusedSection); int size = mPrevFastScrollFocusedSection.numApps + mPrevFastScrollFocusedSection.numOtherViews; for (int i = 0; i < size; i++) { @@ -429,6 +430,11 @@ public class AllAppsRecyclerView extends BaseRecyclerView } } + @Override + public void setPreviousSectionFastScrollFocused() { + setSectionFastScrollFocused(mPrevFastScrollFocusedPosition); + } + private void setSectionFastScrollDimmed(int position, boolean dimmed, boolean animate) { if (mPrevFastScrollFocusedSection != null) { int size = mPrevFastScrollFocusedSection.numApps + |