android - 动画在片段之间的过渡动画期间剪切片段
问题描述
我有一个 SignInFragment。单击“在此处注册”时,SignUpFragment 将 SignInfragment 替换为幻灯片动画,但 SignIn 被添加到堆栈中,因此当按下返回时,它返回到 SignInFragment 而不是关闭活动。
运行后退动画时出现问题。发生这种情况是因为第一个片段比第二个片段短,但我不知道如何修复它。
以下是有关问题发生方式的分步说明:
SignInFragment 和 SignUpFragment 之间的滑动动画工作正常
SignUpFragment 和 SignInFragment 之间的幻灯片动画无法正常工作
如您所见,SignUpFragment 被剪切以在动画期间修复 SignInFragment 高度,我该如何解决这个问题,以便动画显示较长片段中的所有内容?
“在这里登录”代码:
//Get inflator view to modify it before returning
val signinfragment: View = inflater.inflate(R.layout.fragment_sign_up, container, false)
//Get activity instance that called this fragment
val superActivity = (activity as AppCompatActivity?)!!
//Set 'Sign up here' on click action
signinfragment.tv_sign_up.setOnClickListener {
//Create fragment transaction to inflate a new fragment that will replace this one
var transaction = superActivity.supportFragmentManager.beginTransaction()
//New fragment will be added to back stack so when user clicks back, it will return to
//this fragment instead of closing activity
transaction.addToBackStack(null)
//Set slide animation from this fragment to new one (right slide animation) and from
//that one to this one (left slide animation) during back action
transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right)
transaction.replace(R.id.container, SignUpFragment()).commit()
}
动画代码:slide_in_right:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
滑出左:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
滑入左:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="-100%p"
android:toXDelta="0" />
</set>
滑出右:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="100%p" />
</set>
解决方案
推荐阅读
- ubuntu - 引导错误。/dev/sda2:清理,***/*** 文件,***/*** 块
- mysql - 如何在表被截断和填充时避免数据不可用
- regex - 在字符串中查找大写字母、数字、括号和冒号
- asp.net - 在没有 MVC 或 Razor 的情况下使用 ASP.NET Core 标记帮助程序 asp-append-version
- c - 如何从包含-city1 city2 distance-的txt文件创建邻接矩阵
- python - Python 多处理进程未启动
- amazon-web-services - 路由应用程序时如何以编程方式在 IAM 用户之间切换?
- spring - 我可以从另一个应用程序(Spring boot 或 Micronaut 应用程序)内部启动另一个应用程序(启动 Redis 缓存服务器)吗?
- c++ - 在 Visual C++(缓冲区溢出)中处理 C6386 的“正确”方式?
- jquery - 如何清除/重置/刷新 selectNode 或 selectEdge 的 vis.js 函数?