mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-18 04:37:30 +00:00
Scroll feed to top when bottom feed tab clicked
This commit is contained in:
parent
25b2b504cb
commit
e530a336a7
@ -29,6 +29,7 @@ import androidx.appcompat.widget.SearchView;
|
|||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.navigation.NavBackStackEntry;
|
import androidx.navigation.NavBackStackEntry;
|
||||||
@ -56,6 +57,7 @@ import awais.instagrabber.asyncs.SuggestionsFetcher;
|
|||||||
import awais.instagrabber.customviews.helpers.CustomHideBottomViewOnScrollBehavior;
|
import awais.instagrabber.customviews.helpers.CustomHideBottomViewOnScrollBehavior;
|
||||||
import awais.instagrabber.databinding.ActivityMainBinding;
|
import awais.instagrabber.databinding.ActivityMainBinding;
|
||||||
import awais.instagrabber.fragments.PostViewV2Fragment;
|
import awais.instagrabber.fragments.PostViewV2Fragment;
|
||||||
|
import awais.instagrabber.fragments.main.FeedFragment;
|
||||||
import awais.instagrabber.fragments.settings.MorePreferencesFragmentDirections;
|
import awais.instagrabber.fragments.settings.MorePreferencesFragmentDirections;
|
||||||
import awais.instagrabber.interfaces.FetchListener;
|
import awais.instagrabber.interfaces.FetchListener;
|
||||||
import awais.instagrabber.models.IntentModel;
|
import awais.instagrabber.models.IntentModel;
|
||||||
@ -429,6 +431,16 @@ public class MainActivity extends BaseLanguageActivity implements FragmentManage
|
|||||||
firstFragmentGraphIndex);
|
firstFragmentGraphIndex);
|
||||||
navControllerLiveData.observe(this, navController -> setupNavigation(binding.toolbar, navController));
|
navControllerLiveData.observe(this, navController -> setupNavigation(binding.toolbar, navController));
|
||||||
currentNavControllerLiveData = navControllerLiveData;
|
currentNavControllerLiveData = navControllerLiveData;
|
||||||
|
binding.bottomNavView.setOnNavigationItemReselectedListener(item -> {
|
||||||
|
// Log.d(TAG, "setupBottomNavigationBar: item: " + item);
|
||||||
|
final Fragment navHostFragment = getSupportFragmentManager().findFragmentById(R.id.main_nav_host);
|
||||||
|
if (navHostFragment != null) {
|
||||||
|
final Fragment fragment = navHostFragment.getChildFragmentManager().getPrimaryNavigationFragment();
|
||||||
|
if (fragment instanceof FeedFragment) {
|
||||||
|
((FeedFragment) fragment).scrollToTop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setBottomNavSelectedItem(final int navId) {
|
private void setBottomNavSelectedItem(final int navId) {
|
||||||
|
@ -9,6 +9,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.lifecycle.LifecycleOwner;
|
import androidx.lifecycle.LifecycleOwner;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.lifecycle.ViewModelStoreOwner;
|
import androidx.lifecycle.ViewModelStoreOwner;
|
||||||
|
import androidx.recyclerview.widget.LinearSmoothScroller;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
|
||||||
import androidx.transition.ChangeBounds;
|
import androidx.transition.ChangeBounds;
|
||||||
@ -80,6 +81,13 @@ public class PostsRecyclerView extends RecyclerView {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final RecyclerView.SmoothScroller smoothScroller = new LinearSmoothScroller(getContext()) {
|
||||||
|
@Override
|
||||||
|
protected int getVerticalSnapPreference() {
|
||||||
|
return LinearSmoothScroller.SNAP_TO_START;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public PostsRecyclerView(@NonNull final Context context) {
|
public PostsRecyclerView(@NonNull final Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
}
|
}
|
||||||
@ -313,4 +321,10 @@ public class PostsRecyclerView extends RecyclerView {
|
|||||||
super.onDetachedFromWindow();
|
super.onDetachedFromWindow();
|
||||||
lifeCycleOwner = null;
|
lifeCycleOwner = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void smoothScrollToPosition(final int position) {
|
||||||
|
smoothScroller.setTargetPosition(position);
|
||||||
|
layoutManager.startSmoothScroll(smoothScroller);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -380,4 +380,9 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
|
|||||||
preferences -> new Handler().postDelayed(() -> binding.feedRecyclerView.setLayoutPreferences(preferences), 200));
|
preferences -> new Handler().postDelayed(() -> binding.feedRecyclerView.setLayoutPreferences(preferences), 200));
|
||||||
fragment.show(getChildFragmentManager(), "posts_layout_preferences");
|
fragment.show(getChildFragmentManager(), "posts_layout_preferences");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void scrollToTop() {
|
||||||
|
binding.feedRecyclerView.smoothScrollToPosition(0);
|
||||||
|
binding.storiesContainer.setExpanded(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -759,7 +759,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
new ServiceCallback<FriendshipRepoChangeRootResponse>() {
|
new ServiceCallback<FriendshipRepoChangeRootResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final FriendshipRepoChangeRootResponse result) {
|
public void onSuccess(final FriendshipRepoChangeRootResponse result) {
|
||||||
Log.d(TAG, "Unfollow success: " + result);
|
// Log.d(TAG, "Unfollow success: " + result);
|
||||||
onRefresh();
|
onRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -776,7 +776,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
new ServiceCallback<FriendshipRepoChangeRootResponse>() {
|
new ServiceCallback<FriendshipRepoChangeRootResponse>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final FriendshipRepoChangeRootResponse result) {
|
public void onSuccess(final FriendshipRepoChangeRootResponse result) {
|
||||||
Log.d(TAG, "Follow success: " + result);
|
// Log.d(TAG, "Follow success: " + result);
|
||||||
onRefresh();
|
onRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,9 +19,11 @@ import java.util.List;
|
|||||||
|
|
||||||
import awais.instagrabber.R;
|
import awais.instagrabber.R;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a Java rewrite of <a href="https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt">NavigationExtensions</a>
|
||||||
|
* from architecture-components-samples. Some modifications have been done, check git history.
|
||||||
|
*/
|
||||||
public class NavigationExtensions {
|
public class NavigationExtensions {
|
||||||
// private static final String TAG = "NavigationExtensions";
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
public static LiveData<NavController> setupWithNavController(@NonNull final BottomNavigationView bottomNavigationView,
|
public static LiveData<NavController> setupWithNavController(@NonNull final BottomNavigationView bottomNavigationView,
|
||||||
@NonNull List<Integer> navGraphIds,
|
@NonNull List<Integer> navGraphIds,
|
||||||
|
Loading…
Reference in New Issue
Block a user