Skip to content

Commit a27df4a

Browse files
committed
Add slide in-out banner animation when scrolling search results
1 parent bb28132 commit a27df4a

2 files changed

Lines changed: 34 additions & 2 deletions

File tree

WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
import org.wordpress.android.ui.EmptyViewMessageType;
7373
import org.wordpress.android.ui.FilteredRecyclerView;
7474
import org.wordpress.android.ui.RequestCodes;
75+
import org.wordpress.android.ui.ScrollableViewInitializedListener;
7576
import org.wordpress.android.ui.ViewPagerFragment;
7677
import org.wordpress.android.ui.main.BottomNavController;
7778
import org.wordpress.android.ui.main.SitePickerActivity;
@@ -773,6 +774,11 @@ public void onResume() {
773774
showEmptyView();
774775
}
775776

777+
if (getActivity() instanceof ScrollableViewInitializedListener) {
778+
((ScrollableViewInitializedListener) getActivity())
779+
.onScrollableViewInitialized(mRecyclerView.getInternalRecyclerView().getId());
780+
}
781+
776782
mViewModel.onFragmentResume(mIsTopLevel, isSearching(), isFilterableScreen(),
777783
isFilterableScreen() ? mSubFilterViewModel.getCurrentSubfilterValue() : null);
778784
}
@@ -2651,7 +2657,7 @@ public void onFollowTapped(View view, String blogName, final long blogId, final
26512657

26522658
if (blogId > 0) {
26532659
WPSnackbar.make(getSnackbarParent(), Html.fromHtml(getString(R.string.reader_followed_blog_notifications,
2654-
"<b>", blog, "</b>")), Snackbar.LENGTH_LONG)
2660+
"<b>", blog, "</b>")), Snackbar.LENGTH_LONG)
26552661
.setAction(getString(R.string.reader_followed_blog_notifications_action),
26562662
new View.OnClickListener() {
26572663
@Override public void onClick(View view) {

WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderSearchActivity.kt

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package org.wordpress.android.ui.reader
22

33
import android.os.Bundle
4+
import android.view.View
5+
import androidx.recyclerview.widget.RecyclerView
46
import dagger.hilt.android.AndroidEntryPoint
57
import org.wordpress.android.R
68
import org.wordpress.android.WordPress
79
import org.wordpress.android.ui.LocaleAwareActivity
10+
import org.wordpress.android.ui.ScrollableViewInitializedListener
811
import org.wordpress.android.ui.reader.tracker.ReaderTracker
912
import org.wordpress.android.ui.reader.tracker.ReaderTrackerType.MAIN_READER
13+
import org.wordpress.android.util.JetpackBrandingUtils
1014
import javax.inject.Inject
1115

1216
/**
@@ -15,8 +19,10 @@ import javax.inject.Inject
1519
* into new tested classes without requiring us to change the search behavior.
1620
*/
1721
@AndroidEntryPoint
18-
class ReaderSearchActivity : LocaleAwareActivity() {
22+
class ReaderSearchActivity : LocaleAwareActivity(),
23+
ScrollableViewInitializedListener {
1924
@Inject lateinit var readerTracker: ReaderTracker
25+
@Inject lateinit var jetpackBrandingUtils: JetpackBrandingUtils
2026

2127
override fun onCreate(savedInstanceState: Bundle?) {
2228
super.onCreate(savedInstanceState)
@@ -41,4 +47,24 @@ class ReaderSearchActivity : LocaleAwareActivity() {
4147
super.onPause()
4248
readerTracker.stop(MAIN_READER)
4349
}
50+
51+
override fun onScrollableViewInitialized(containerId: Int) {
52+
val fragmentContainer = supportFragmentManager.findFragmentById(R.id.fragment_container)
53+
54+
if (fragmentContainer is ReaderPostListFragment) {
55+
val fragmentView = fragmentContainer.view ?: return
56+
57+
fragmentView.post {
58+
// post is used to create a minimal delay here. containerId changes just before
59+
// onScrollableViewInitialized is called, and findViewById can't find the new id before the delay.
60+
val jetpackBannerView = fragmentView.findViewById<View>(R.id.jetpack_banner)
61+
val scrollableView = fragmentView.findViewById<View>(containerId) as RecyclerView
62+
63+
if (jetpackBrandingUtils.shouldShowJetpackBranding()) {
64+
jetpackBrandingUtils.showJetpackBannerIfScrolledToTop(jetpackBannerView, scrollableView)
65+
jetpackBrandingUtils.initJetpackBannerAnimation(jetpackBannerView, scrollableView)
66+
}
67+
}
68+
}
69+
}
4470
}

0 commit comments

Comments
 (0)