popwin实现仿京东 商品列表 弹窗 条件筛选 列表弹窗

时间:2021-01-08 06:27:43

有需求就有加班

写一个仿照京东的条件筛选弹窗,按道理讲 Drawerlayout, dialog  ,弹窗activity  ,popwin  都可以实现的,看自己擅长什么,或者项目适合什么 就用什么写就OK;

我是选择用popwin写的, 因为正好之前别的写了弹窗选择的对话框,正好部分代码可以用,,

效果图:

popwin实现仿京东 商品列表 弹窗 条件筛选 列表弹窗

上代码(popwin的 关键代码就这么多,直接贴了   自我感觉  注释还是挺详细的):

private void initPop() {
    /** 自定义 弹窗宽高 */
    WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    final Display display = manager.getDefaultDisplay();

    /** 获取状态栏高度**/
    int statusBarHeight1 = -1;
    //获取status_bar_height资源的ID
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        //根据资源ID获取响应的尺寸值
        statusBarHeight1 = context.getResources().getDimensionPixelSize(resourceId);
    }
    View popView = LayoutInflater.from(context).inflate(R.layout.flow_pop_listview, null);
    //设置view
    this.setContentView(popView);
    //设置宽高(也可设置为LinearLayout.LayoutParams.MATCH_PARENT或者LinearLayout.LayoutParams.MATCH_PARENT    this.setWidth(display.getWidth() / 3 * 2);/*屏幕宽度的 2/3 */
    this.setHeight(display.getHeight() - statusBarHeight1);/*屏幕高度    部分手机 因为状态栏的高度  会导致底部按钮显示不全,所以减去*/

    //设置PopupWindow的焦点
    this.setFocusable(true);
    //设置窗口以外的地方点击可关闭pop
    this.setOutsideTouchable(true);
    //设置背景透明
   this.setBackgroundDrawable(new ColorDrawable(0x33000000));

 this.showAtLocation(popView, Gravity.RIGHT, 0, 0);

    mListView = (DIYListView) popView.findViewById(R.id.listview);
    tvReset = (TextView) popView.findViewById(R.id.tv_reset);
    tvConfirm = (TextView) popView.findViewById(R.id.tv_confirm);
    nullView = popView.findViewById(R.id.view_null);

    adapter = new FlowPopListViewAdapter(context, dataList);
    mListView.setAdapter(adapter);
    tvReset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            for (int x = 0; x < dataList.size(); x++) {
                List<DataBean.ChildItem> childrenBeen = dataList.get(x).getChildren();
                for (int y = 0; y < childrenBeen.size(); y++) {
                    if (childrenBeen.get(y).isSelected())
                        childrenBeen.get(y).setSelected(false);
                }
            }
            adapter.notifyDataSetChanged();
        }
    });
    tvConfirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //自定义监听第三步   回传监听
            onConfirmClickListener.onConfirmClick();
            dismiss();
        }
    });
    nullView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dismiss();
        }
    });
}



 

 
}

 
另外的就是,布局填充的了,因为内容 文本长度 不固定,所以考虑了流式布局,自适应长度的,自定义了个flowlayout,

就不贴代码了。可以用别的控件代替,

下边是 demo链接,需要的可以参考一下

popwin实现仿京东条件筛选