Как удалить переход анимации по умолчанию при использовании компонента навигации в Android? - PullRequest
0 голосов
/ 16 мая 2019

Я использую компонент Навигация, и у меня есть вид снизу навигации в основной деятельности.когда я касаюсь вкладки в этом нижнем навигационном представлении, кажется, что при появлении фрагмента появляется анимация с постепенным исчезновением.Я не думаю, что вручную установил анимацию, похоже, что анимация будет там по умолчанию.

Я хочу удалить эту анимацию.Вот код, который я использую в своей основной деятельности.

class MainActivity : AppCompatActivity(), NavController.OnDestinationChangedListener {

    private lateinit var navController : NavController
    lateinit var destinationTitleTextView : TextView
    lateinit var progressBar : ProgressBar
    lateinit var topToolbar : Toolbar
    lateinit var bottomNavigationView : BottomNavigationView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        FirebaseApp.initializeApp(this)

        // Initial Setup views
        navController = Navigation.findNavController(this,R.id.nav_host_fragment)
        setupBottomNavMenu(navController)
        setupActionBar(navController)
        setUpViewDeclaration()


        // Add Listeners
        navController.addOnDestinationChangedListener(this)


    }



    private fun setUpViewDeclaration() {
        destinationTitleTextView = findViewById(R.id.destination_label_text_view)
        progressBar = findViewById(R.id.progressBar_main_activity)
        topToolbar = findViewById(R.id.top_toolbar)
        bottomNavigationView = findViewById(R.id.bottom_nav)

    }

    private fun setupBottomNavMenu(navController: NavController) {
        bottom_nav.setupWithNavController(navController)
    }


    private fun setupActionBar(navController: NavController) {

        setSupportActionBar(top_toolbar)
        supportActionBar?.setDisplayShowTitleEnabled(false)

        // set up top hierarchy destination
        val appBarConfiguration = AppBarConfiguration(setOf(
            R.id.destination_home,
            R.id.destination_search,
            R.id.destination_user_control,
            R.id.destination_create_event)
        )

        top_toolbar.setupWithNavController(navController,appBarConfiguration)

    }


}

Ответы [ 2 ]

3 голосов
/ 25 мая 2019

Вы можете добавить аним-файл для замены анимации по умолчанию.

  • res / anim / nav_default_enter_anim.xml
  • res / anim / nav_default_exit_anim.xml
  • res/anim/nav_default_pop_enter_anim.xml
  • res / anim / nav_default_pop_exit_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--Empty to disable animation-->
</set>

[Компонент навигации] Я не могу изменить анимацию из NavigationUI.setupWithNavControl

0 голосов
/ 16 мая 2019

Согласно этой проблеме :

NavigationUI - это набор помощников, которые следуют рекомендациям по проектированию материалов и включают анимацию между элементами BottomNavigationView.

И вы заметите, что в разделе Переходы Руководства по проектированию материалов конкретно указано:

Переход между активным и неактивным нижним назначением навигации с использованием перекрестныхзатухание анимации.

Поэтому в Navigation нет API для настройки или удаления анимаций.

Обратите внимание, что Navigation 2.1.0-alpha03 имелэто изменение:

Анимации по умолчанию, предоставляемые NavigationUI, были увеличены с 400 мс до 220 мс, чтобы соответствовать скорости анимации действий и фрагментов по умолчанию. b / 130055522

Поэтому я бы предложил 1) перейти на Navigation 2.1.0-alpha03 или выше, чтобы получить обновленные анимации, и 2) следовать рекомендациям по дизайну материалов.

Конечно, NavigationUI совершенно необязателен, и вы, безусловно, можете делать что угодно, используя базовый OnDestinationChangedListener, который NavigationUI использует под капотом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...