最近离职了闲在家里,无所事事(基本已经是个废人了( ╯□╰ )),想着手艺不能落下,正好就借着这个机会写点轮子(做了这么多年的伸手党...)。正好看动漫的时候发现视频应用都会有一个动漫类型匹配的多选工具,于是便有了今天的这个MultiSelector.
MultiSelector
MultiSelector就是一个Android的多项选择库
Feature
- 几行代码就可以将MultiSelector添加到项目中
- 每次点击选项都会以list的形式将所有选择的项返回
- 支持自定义整个MultiSelector的背景和单个选项的背景
Demo
Gradle Dependency
compile 'com.lybeat:multi-selector:1.0.0'
Usage
-
STEP1:
在你的布局文件中引入MultiSelector
<com.lybeat.multiselector.MultiSelector android:id="@+id/multi_selector" android:layout_width="match_parent" android:layout_height="wrap_content" lybeat:optionBackground="@drawable/bg_item_option_pressed" lybeat:selectorBackground="#ffffff" />
-
STEP2:
Init BaseOption and MultiSelector in Java code. And set OnSelectListener for MultiSelector.
在Java代码中初始化BaseOption和MultiSelector。并为MultiSelector设置OnSelectListener。List<String> options1 = new ArrayList<>(); options1.add("全部"); options1.add("TV版"); options1.add("OVA.OAD"); options1.add("剧场版"); BaseOption baseOption1 = new BaseOption(); baseOption1.options(options1).select(0); List<String> options2 = new ArrayList<>(); options2.add("全部"); options2.add("日本"); options2.add("大陆"); options2.add("其他"); BaseOption baseOption2 = new BaseOption(); baseOption2.options(options2).select(0); List<BaseOption> baseOptions = new ArrayList<>(); baseOptions.add(baseOption1); baseOptions.add(baseOption2); MultiSelector multiSelector = (MultiSelector) findViewById(R.id.multi_selector); multiSelector.addBaseOptions(baseOptions); multiSelector.setOnSelectListener(this);
Thinking
MultiSelector使用简单,实现原理也很简单。通过将RecyclerView的item设置为RecyclerView即可,MultiSelector不过是在此基础之上做了一些封装和定义了一些接口。将每一行选项封装为BaseOption,并提供了一个由内向外的回调OnSelect(),当点击任意一个选项时便会返回所有的已选项。第三方调用非常方便,几行代码便可搞定。完整的代码可以参考github。欢迎大家Star~~~