剑客
关注科技互联网

[原]Android仿京东筛选

效果:

[原]Android仿京东筛选

项目中用到了一个侧滑筛选的功能。看到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地址 https://github.com/chsmy/FilterDemo 大家可以尽情的优化

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址