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:
    <com.jiuhong.redcabinet.red_view.CaseView
                android:id="@+id/caseView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"></com.jiuhong.redcabinet.red_view.CaseView>

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,908评论 25 708
  • 昨晚收到亲妈妈的简讯,说问我爸借了2000,说她实在没钱了。。 我当时就炸了,我也没有,但我都没有问我爸要钱、 因...
    不忘初心3阅读 289评论 0 0
  • 梦中惊醒,只有凌晨的秋冷侵袭全身。深紫窗帘遮住的一扇窗户半开半合,冷风就是从那里窜进来。 悄眼看见这些,悬着的心落...
    臭小妈妈阅读 95评论 0 0
  • 一开始想要孩子的时候就觉得自己肯定会生一个女孩,在怀孕的那一刻我也很肯定的感觉到在我肚子孕孕育的小生命是一个女孩...
    暄妈食尚阅读 363评论 0 0
  • 半年了,时间真快,距离再次有你的消息已经半年了,朋友们将你与我的名字早已黏合在一起,撞见他必然会询问我的消息...
    Yadot阅读 244评论 0 0