web-dev-qa-db-ja.com

Androidでナビゲーションコンポーネントを使用するときのデフォルトのアニメーショントランジションを削除する方法

私はナビゲーションコンポーネントを使用しています、そして私は主な活動に下のナビゲーションビューを持っています。その下部ナビゲーションビューのタブをタップすると、フラグメントが表示されたときにアニメーションにフェードがあるようです。アニメーションを手動で設定しているとは思わない、アニメーションはデフォルトでそこにあるようです。

そのアニメーションを削除したいです。これが私の主な活動で私が使用するコードです。

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)

    }


}
 _
6
sarah

@HVSIMONは、私のためにうまくいかなかったグローバルなデフォルトを設定するための解決策を提供しました。また、遷移ごとにアニメーションを選択/無効にしたいと思います。

NavOptionsオブジェクトでnavigate()に追加の引数を指定できます。

まず、res/anim/nav_enter_anim.xmlのようにResフォルダにアニメーションを作成します(アニメーションなしで空の場合)。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <!--Empty to disable animation-->
</set>

アニメーションごとに1つのアニメーションXMLを作成するか、同じを再利用してください。その後、NavOptionsオブジェクトをnavigate()呼び出しに供給してください。

val animationOptions = NavOptions.Builder().setEnterAnim(R.anim.nav_enter_anim)
            .setExitAnim(R.anim.nav_exit_anim)
            .setPopEnterAnim(R.anim.nav_pop_enter_anim)
            .setPopExitAnim(R.anim.nav_pop_exit_anim).build()

findNavController().navigate(MyFragmentDirections.toMainActivity(), animationOptions)
0
A1m