android - DrawerLayout 的 item click - 什么时候替换 Fragment 合适?

标签 android android-fragments navigation-drawer fragmenttransaction drawerlayout

我正在开发一个使用抽屉式导航模式(With DrawerLayout)的应用程序。

每次点击抽屉的项目,都会替换主容器中的 fragment 。

但是,我不确定何时是进行 fragment 交易的合适时间? 抽屉什么时候开始关闭?还是关门后?

在谷歌的 documentaion example ,你可以看到他们正在做交易 在项目单击后立即关闭抽屉。
结果,抽屉显得迟钝且不光滑,而且看起来很糟糕(我的应用程序中也出现过这种情况)。

GmailGoogle Drive另一方面,应用程序似乎在抽屉关闭后进行交易(我对吗?)。
因此,抽屉并不滞后且非常流畅,但至少需要大约 1 秒(抽屉关闭所需的时间)才能看到下一个 fragment 。

在立即进行 FragmentTransaction 时,抽屉似乎不可能平滑。

你怎么看?

提前致谢!

最佳答案

是的,完全同意,执行 fragment (带 View )事务会导致布局传递,这会导致动画 View 上的动画出现卡顿,引用 DrawerLayout docs :

DrawerLayout.DrawerListener can be used to monitor the state and motion of drawer views. Avoid performing expensive operations such as layout during animation as it can cause stuttering; try to perform expensive operations during the STATE_IDLE state.

所以请在抽屉关闭或有人修补支持库以某种方式修复该问题后执行您的 fragment 事务:)

关于android - DrawerLayout 的 item click - 什么时候替换 Fragment 合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17491557/

相关文章:

android-fragments - 在 Fragment 中启动 Activity

Android - 如果嵌入在 DrawerLayout 中,则单击时不会突出显示 TextView 中的链接

java - Android CameraX 分析图像流

android - 尝试在android中以编程方式模拟滑动

c# - Google Play 服务错误集成(无法注册类(class))

Android动态抽屉导航菜单项

android - 将徽章计数器添加到 Android 中的汉堡导航菜单图标

android - 如何在Android项目中使用Arrow Meta

Android 在屏幕旋转时复制 fragment

Android DialogFragment : can I re-use, 还是我必须新建一个?