我目前有一个应用程序,它包含一个MainActivity、一个BottomNavigationView和3个相应的碎片:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Bottom Nav
bottomNav = findViewById(R.id.bottom_nav);
bottomNav.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment fragment = null;
switch (menuItem.getItemId()) {
case R.id.bottom_nav_home:
fragment = new HomeFragment();
break;
case R.id.bottom_nav_favorites:
fragment = new FavoritesFragment();
break;
case R.id.bottom_nav_settings:
fragment = new SettingsFragment();
break;
}
return loadFragment(fragment, position);
}
}
);
}
private boolean loadFragment(Fragment fragment) {
if(fragment != null) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
transaction.replace(R.id.container, fragment);
transaction.commit();
return true;
}
return false;
}
这个功能非常好用。我的问题是在切换片段时,进入/退出动画总是相同的。
所以如果我从主页到收藏夹,然后返回主页,主页会从右侧进入,而我希望从左侧进入。
是否有一种方法可以根据用户从应用程序的哪里进入来设置自定义进入/退出过渡动画?
loadFragment
时,可以传入新的位置。然后检查if (newPosition > currentPosition)
-> 从左到右滑动,否则从右到左滑动。 - Filippo Vigani