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