Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3434)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java

Issue 2106753002: Refine snap scrolling on the Cards New Tab Page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update comment. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
index ba715598c18b376c890cbb36883769dd080fc3fe..cb24ef20feba9367d55bd9b3edfb9a8c07ea30bd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java
@@ -44,7 +44,6 @@ import org.chromium.chrome.browser.ntp.LogoBridge.Logo;
import org.chromium.chrome.browser.ntp.LogoBridge.LogoObserver;
import org.chromium.chrome.browser.ntp.MostVisitedItem.MostVisitedItemManager;
import org.chromium.chrome.browser.ntp.NewTabPage.OnSearchBoxScrollListener;
-import org.chromium.chrome.browser.ntp.cards.CardsLayoutOperations;
import org.chromium.chrome.browser.ntp.cards.NewTabPageAdapter;
import org.chromium.chrome.browser.ntp.cards.NewTabPageListItem;
import org.chromium.chrome.browser.ntp.cards.NewTabPageRecyclerView;
@@ -407,25 +406,36 @@ public class NewTabPageView extends FrameLayout
private void updateSearchBoxOnScroll() {
if (mDisableUrlFocusChangeAnimations) return;
- float percentage;
+ float toolbarTransitionPercentage;
// During startup the view may not be fully initialized, so we only calculate the current
// percentage if some basic view properties are sane.
if (getWrapperView().getHeight() == 0 || mSearchBoxView.getTop() == 0) {
- percentage = 0f;
- } else if (mUseCardsUi && !mRecyclerView.isFirstItemVisible()) {
- // getVerticalScroll is valid only for the RecyclerView if the first item is visible.
- // Luckily, if the first item is not visible, we know the toolbar transition should
- // be 100%.
- percentage = 1f;
+ toolbarTransitionPercentage = 0f;
+ } else if (!mUseCardsUi) {
+ toolbarTransitionPercentage =
+ MathUtils.clamp(getVerticalScroll() / (float) mSearchBoxView.getTop(), 0f, 1f);
} else {
- percentage = MathUtils.clamp(getVerticalScroll() / (float) mSearchBoxView.getTop(),
- 0f, 1f);
+ if (!mRecyclerView.isFirstItemVisible()) {
+ // getVerticalScroll is valid only for the RecyclerView if the first item is
+ // visible. Luckily, if the first item is not visible, we know the toolbar
+ // transition should be 100%.
+ toolbarTransitionPercentage = 1f;
+ } else {
+ final int scrollY = getVerticalScroll();
+ final int top = mSearchBoxView.getTop(); // Relative to mNewTabPageLayout.
+ final int transitionLength = getResources()
+ .getDimensionPixelSize(R.dimen.ntp_search_box_transition_length);
+
+ // |scrollY - top| gives the distance the search bar is from the top of the screen.
+ toolbarTransitionPercentage = MathUtils.clamp(
+ (scrollY - top + transitionLength) / (float) transitionLength, 0f, 1f);
+ }
}
- updateVisualsForToolbarTransition(percentage);
+ updateVisualsForToolbarTransition(toolbarTransitionPercentage);
if (mSearchBoxScrollListener != null) {
- mSearchBoxScrollListener.onNtpScrollChanged(percentage);
+ mSearchBoxScrollListener.onNtpScrollChanged(toolbarTransitionPercentage);
}
}
@@ -454,18 +464,13 @@ public class NewTabPageView extends FrameLayout
* the RecyclerView.
*/
private void initializeSearchBoxRecyclerViewScrollHandling() {
- final NewTabPageUma.SnapStateObserver snapStateObserver =
- new NewTabPageUma.SnapStateObserver();
-
final Runnable mSnapScrollRunnable = new Runnable() {
@Override
public void run() {
assert mPendingSnapScroll;
mPendingSnapScroll = false;
- NewTabPageUma.SnapState currentSnapState = CardsLayoutOperations.snapScroll(
- mRecyclerView, mNewTabPageLayout, mMostVisitedLayout, getVerticalScroll(),
- false);
- snapStateObserver.updateSnapState(NewTabPageView.this, currentSnapState);
+
+ mRecyclerView.snapScroll(mSearchBoxView, getVerticalScroll(), getHeight());
}
};
@@ -690,7 +695,9 @@ public class NewTabPageView extends FrameLayout
// Ensure there are no rounding issues when the animation percent is 0.
if (transitionPercentage == 0f) searchUiAlpha = 1f;
- mSearchProviderLogoView.setAlpha(searchUiAlpha);
+ if (!mUseCardsUi) {
+ mSearchProviderLogoView.setAlpha(searchUiAlpha);
+ }
mSearchBoxView.setAlpha(searchUiAlpha);
}
@@ -813,10 +820,8 @@ public class NewTabPageView extends FrameLayout
if (mUseCardsUi) {
mRecyclerView.updatePeekingCard();
// The positioning of elements may have been changed (since the elements expand to fill
- // the available vertical space), so adjust the scroll. We force snapping to Most Likely
- // so the user's snap point doesn't change on rotation.
- CardsLayoutOperations.snapScroll(mRecyclerView, mNewTabPageLayout, mMostVisitedLayout,
- getVerticalScroll(), true);
+ // the available vertical space), so adjust the scroll.
+ mRecyclerView.snapScroll(mSearchBoxView, getVerticalScroll(), getHeight());
}
}

Powered by Google App Engine
This is Rietveld 408576698