在我们的app界面中,经常会有这样的布局:
mainActivity托管多个fragment,在navigationView的点击事件中处理fragment的切换逻辑,很简单也很实用。
一看到这样的逻辑,我们首先就会想到,fragment之间的关系不能是replace,这样的话每次切换都会销毁并创建新的实例,影响切换时的体验,所以我们用hide和show来隐藏/显示他们。
但不可避免的是,即便我们使用hide与show,fragment必然需要一个创建与初始化的过程,这个过程将发生在首次切换到某个fragment时,这样的话,会有明显的掉帧,如图:
在仔细观察掉帧动画后发现,之所以我们可以发现掉帧,是因为它发生在drawer关闭的过程中。
drawer在半关闭状态时开始掉帧,然后到下一帧时已经是完全关闭状态,这中间漏掉的好几帧直接让我们感觉到卡顿。
所以我试着将这个创建过程延时到drawer关闭之后,这样的话,因为当前没有动画,是一个近乎静态的界面,掉帧也不会太明显,大概是这样的效果:
说完了思路,具体实现就很简单了。
在NavigationVie