sar*_*rah 1 android kotlin android-navigation android-architecture-components android-jetpack
我正在使用导航组件,并且在主活动中有一个底部导航视图。当我点击该底部导航视图中的选项卡时,出现该片段时似乎动画淡入了。我认为我没有手动设置动画,似乎默认情况下该动画会存在。
我想删除该动画。这是我在主要活动中使用的代码。
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)
}
}
Run Code Online (Sandbox Code Playgroud)
您可以添加动画文件来替换默认动画。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--Empty to disable animation-->
</set>
Run Code Online (Sandbox Code Playgroud)
[导航组件]我无法从NavigationUI.setupWithNavController()更改动画
@HvSimon 提供了一个解决方案来设置对我不起作用的全局默认值。另外我想选择/禁用每个过渡的动画。
您可以navigate()为NavOptions对象提供额外的参数。
首先在您的 res 文件夹中创建一个动画,例如res/anim/nav_enter_anim.xml(空表示没有动画):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--Empty to disable animation-->
</set>
Run Code Online (Sandbox Code Playgroud)
为每个动画创建一个动画 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |