Android箱子选择控件(自定义View)

作者:XINHAO_HAN

近期公司在做箱子的一些项目,所以做了一个选择箱子的自定义View

思路:

用GridView + ViewPager + HorizontalScrollView

感觉用起来还不错

使用方法:

View的效果图:


1513845998700mzcasebox.gif

公司APP中的效果图:


1513845813787mzcase.gif

中间使用了一个包装类XHCaseView使CaseView更加易用


 final String[] title = new String[]{"007号特大箱子", "008号迷你箱子", "009号中型箱子", "UZI号箱子"};
        final String[] xinhao = new String[20];
        final String[] number = new String[20];
        for (int i = 0; i < 20; i++) {
            xinhao[i] = "规格:80CM*80CM";
        }
        final String[] money = new String[20];
        for (int i = 0; i < 20; i++) {
            money[i] = "¥:1.00";
        }
        for (int i = 0; i < 20; i++) {
            number[i] = "A000" + i;
        }
        XHCaseView xhCaseView = new XHCaseView(caseView);
        xhCaseView.setCaseViewAdapter(new XHCaseView.XHCaseAdapterBean() {


            /**
             * 获取你的箱子型号整个大箱子的型号
             * @param position
             * @return
             */
            @Override
            public String getCaseTtitle(int position) {
                return title[position];
            }

            /**
             * 获取你的箱子的小型号,每个格子的规格
             * @param position
             * @param index
             * @return
             */
            @Override
            public String getCaseModelNumber(int position, int index) {
                return xinhao[position];
            }

            /**
             * 每个箱子所使用的价格
             * @param position
             * @param index
             * @return
             */
            @Override
            public String getCaseMoney(int position, int index) {
                return money[position];
            }

            /**
             * 获取你每个箱子的箱号
             * @param position
             * @param index
             * @return
             */
            @Override
            public String getCaseNumber(int position, int index) {
                return number[position];
            }

            /**
             * 总共的箱子(大箱子)的个数
             * @return
             */
            @Override
            public int getCaseCount() {
                return 4;
            }

            /**
             * 将使那些箱子不能被选中,不可选
             * @param position
             * @param pageIndex
             * @return
             */
            @Override
            public boolean getUse(int position, int pageIndex) {

                if (position == 16 && pageIndex == 2) {
                    return true;
                }

                if (position == 18 && pageIndex == 2) {
                    return true;
                }


                if (position == 18 && pageIndex == 1) {
                    return true;
                }


                if (position == 7 && pageIndex == 3) {
                    return true;
                }
                if(position == 1 && pageIndex == 0){
                    return true;
                }
                if(position == 2 && pageIndex == 0){
                    return true;
                }

                if(position == 3 && pageIndex == 0){
                    return true;
                }

                if(position == 8 && pageIndex == 0){
                    return true;
                }

                if(position == 10 && pageIndex == 0){
                    return true;
                }

                if(position == 13 && pageIndex == 0){
                    return true;
                }


                return false;
            }
        });

          //监听方法
        xhCaseView.setIsCheckData(this);

XML

 
    XML:
    

切记:本人只是为了方便移出DEMO所以把xml和png放到同一个文件夹(drawable)下了,在真实开发中这种操作是不允许的!

Demo(Gtihub):https://github.com/hanxinhao000/CaseBox/tree/master

你可能感兴趣的:(Android箱子选择控件(自定义View))