版权声明:本文为博主原创文章,未经博主允许不得转载。
效果:
项目中用到了一个侧滑筛选的功能。看到UE第一感觉用PopupWindow做加个进入和退出的动画。后来突然发现弹出的部分还能进入另一个界面,这是神马鬼,筛选里面还有筛选,马上找产品聊天,这个设计挺奇葩的呀…..,产品拿出京东来给我演示下人家就是这么做的…..我默默的回到座位开始干活…..。
既然PopupWindow不好做用啥呢,侧滑可以想到的一般就是SlidingMenu和DrawerLayout 。SlidingMenu基本过时了 当然就用DrawerLayout,DrawerLayout 出来很久了也很好用。里面的两个筛选界面可以用Fragment来实现 。
弹出的两个界面根据自己的需要布局就行了。
切换动画用最简单的补间动画就可以了通过setCustomAnimations方法给fragment设置切换动画
private void showNext() {
Fragment fragment = new FilterFragmentTwo()
FragmentManager fragmentManager = getActivity().getSupportFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.setCustomAnimations(R.anim.right_in, R.anim.left_out, R.anim.left_in, R.anim.right_out)
fragmentTransaction.replace(R.id.drawer_content, fragment)
fragmentTransaction.commitAllowingStateLoss()
}
然后就是传数据了 第二个筛选出的字段带到第一个筛选界面。
一开始我是把fragment放入栈中 通过进栈出栈来切换fragment。因为项目中有EventBus 就通过EventBus 来传递数据把,但是出现了一个问题。数据是收到了但是页面无法刷新。百度了下果然有这种情况 第一个fragment是缓存的 有解决方法:方法
不过后来没用那个方法 直接通过fragment.setArguments(bundle); 将字段传过来了。这样就是每次都创建第一个fragment了。因为布局也不复就这么做了。
demo地址 github.com/chsmy/Filte… 大家可以尽情的优化