Android 仿京东筛选

3,864 阅读1分钟
原文链接: blog.csdn.net

版权声明:本文为博主原创文章,未经博主允许不得转载。

效果:
这里写图片描述

项目中用到了一个侧滑筛选的功能。看到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… 大家可以尽情的优化