Отслеживать положение анимации перехода между фрагментами - PullRequest
1 голос
/ 18 июня 2019

Я применяю переход к фрагменту, и я нашел решение, которое соответствует моим потребностям. здесь Анимация перехода фрагмента с BottomNavigationView

вот код

private boolean loadFragment(Fragment fragment, int newPosition) {
if(fragment != null) {
    if(newPosition == 0) {
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.contentLayout, fragment).commit();

   }
    if(startingPosition > newPosition) {
        getSupportFragmentManager()
            .beginTransaction()
                .setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right )
            .replace(R.id.contentLayout, fragment).commit();

    }
    if(startingPosition < newPosition) {
        getSupportFragmentManager()
                .beginTransaction()
                .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
                .replace(R.id.contentLayout, fragment).commit();

    }
    startingPosition = newPosition;
    return true;
}

return false; }

startingPosition не может быть решена, и я не знаю, как это исправить.

1 Ответ

0 голосов
/ 18 июня 2019

вы должны определить startingPosition над вашей функцией в вашем классе следующим образом:

int startingPosition = 0;
private boolean loadFragment(Fragment fragment, int newPosition) {
if(fragment != null) {
    if(newPosition == 0) {
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.contentLayout, fragment).commit();

   }
    if(startingPosition > newPosition) {
        getSupportFragmentManager()
            .beginTransaction()
                .setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right )
            .replace(R.id.contentLayout, fragment).commit();

    }
    if(startingPosition < newPosition) {
        getSupportFragmentManager()
                .beginTransaction()
                .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
                .replace(R.id.contentLayout, fragment).commit();

    }
    startingPosition = newPosition;
    return true;
}

return false; }
...