Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
liyujiang-gzu committed Jul 15, 2017
2 parents 851a4ef + a734bec commit 5e697b3
Show file tree
Hide file tree
Showing 18 changed files with 278 additions and 79 deletions.
1 change: 0 additions & 1 deletion .gitignore
@@ -1,7 +1,6 @@
/*.iml
/gradlew
/*/*.iml
/gradle
/.idea
/gradlew.bat
bin/
Expand Down
5 changes: 5 additions & 0 deletions ChangeLog.md
@@ -1,3 +1,8 @@
### v1.5.3 - 2017.07.01
修复默认无法选中第一项的问题;
新增日期时间选择器联动时是否重置下一级的索引的控制方法;
修复日期选择器setSelectedItem传值错误可能导致的奔溃问题;
新增多项选择器;
### v1.5.2 - 2017.05.14
有童鞋反应动画太慢,移除选择器默认的动画;
DoublePicker支持设置前缀及后缀标签;
Expand Down
62 changes: 45 additions & 17 deletions README.md
Expand Up @@ -10,22 +10,22 @@
[查看更新日志](https://github.com/gzu-liyujiang/AndroidPicker/blob/master/ChangeLog.md),新版本可能未对旧版API作兼容处理,升级后若编译报错请根据错误提示更改。

# Install
“app”是测试用例;“library”包括WheelPicker、ColorPicker、FilePicker,
“app”是测试用例;“library”包括WheelPicker、ColorPicker、FilePicker、MultiplePicker
WheelPicker包括DatePicker、TimePicker、OptionPicker、LinkagePicker、AddressPicker、NumberPicker、DoublePicker等。
#### ~~懒人建议直接远程加载jcenter里的~~
#### 懒人建议直接远程加载jcenter里的
WheelPicker、FilePicker及ColorPicker是独立的,需要用哪个就compile哪个。
latest.release表示使用最新版,也可以[参照此处指定具体的版本号](https://github.com/gzu-liyujiang/AndroidPicker/releases)~~1.3.x之前的版本基于ScrollView,1.4.x版本基于ListView~~,1.5.x之后的版本基于View:
```groovy
dependencies {
compile 'cn.qqtheme.framework:WheelPicker:版本号'
compile 'cn.qqtheme.framework:FilePicker:版本号'
compile 'cn.qqtheme.framework:ColorPicker:版本号'
}
```
如果出现“All com.android.support libraries must use the exact same version specification”这种错误,请将依赖改为:
```
compile('cn.qqtheme.framework:WheelPicker:版本号') {
exclude group: 'com.android.support'
compile('cn.qqtheme.framework:WheelPicker:版本号') {
exclude group: 'com.android.support'
}
compile('cn.qqtheme.framework:FilePicker:版本号') {
exclude group: 'com.android.support'
}
compile('cn.qqtheme.framework:ColorPicker:版本号') {
exclude group: 'com.android.support'
}
}
```
#### 若jcenter仓库里的无法下载的话,可换[JitPack](https://jitpack.io/#gzu-liyujiang/AndroidPicker)的仓库试试:
Expand All @@ -40,9 +40,15 @@ repositories {
第二步,在项目的app模块下的build.gradle里加:
```
dependencies {
compile 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:版本号'
compile 'com.github.gzu-liyujiang.AndroidPicker:FilePicker:版本号'
compile 'com.github.gzu-liyujiang.AndroidPicker:ColorPicker:版本号'
compile('com.github.gzu-liyujiang.AndroidPicker:WheelPicker:版本号') {
exclude group: 'com.android.support'
}
compile('com.github.gzu-liyujiang.AndroidPicker:FilePicker:版本号') {
exclude group: 'com.android.support'
}
compile('com.github.gzu-liyujiang.AndroidPicker:ColorPicker:版本号') {
exclude group: 'com.android.support'
}
}
```
#### 使用Eclipse的话如何集成?
Expand All @@ -61,12 +67,33 @@ dependencies {
各种设置方法:
```java
picker.setXXX(...);
```
自定义顶部及底部视图:
```
如:
设置选项偏移量,可用来要设置显示的条目数,范围为1-5,1显示3行、2显示5行、3显示7行……
```java
picker.setOffset(...);
```
设置是否禁用循环
```java
picker.setCycleDisable(...);
```
设置每项的高度,范围为2-4
```java
picker.setLineSpaceMultiplier(...);
```
设置文字颜色
```java
picker.setTextColor(...);
```
设置分隔线配置项,设置null将隐藏分割线及阴影
```java
picker.setDividerConfig(...);
```
自定义顶部及底部视图
```java
picker.setHeaderView(...);
picker.setFooterView(...);
```
```
自定义选择器示例:
```java
CustomHeaderAndFooterPicker picker = new CustomHeaderAndFooterPicker(this);
Expand All @@ -81,6 +108,7 @@ picker.setFooterView(...);
<font color="#FF0000">核心滚轮控件为WheelView,可以参照SinglePicker、DateTimePicker及LinkagePicker自行扩展。</font>

# Screenshots
以下图片显示的效果可能已修改过,实际效果请运行demo查看。
![滑轮选择器内嵌效果图](/screenshots/nestwheelview.jpg)
![自定义选择器效果图](/screenshots/custom.gif)
![日期选择器效果图](/screenshots/date.gif)
Expand Down
9 changes: 5 additions & 4 deletions app/build.gradle
Expand Up @@ -26,11 +26,12 @@ dependencies {
compile project(':library:WheelPicker')
compile project(':library:FilePicker')
compile project(':library:ColorPicker')
// compile files('libs/AndroidPicker-1.5.2.jar')
compile project(':library:MultiplePicker')
// compile files('libs/AndroidPicker-1.5.3.jar')
// compile 'cn.qqtheme.framework:WheelPicker:latest.release'
// compile 'cn.qqtheme.framework:FilePicker:latest.release'
// compile 'cn.qqtheme.framework:ColorPicker:latest.release'
// compile 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:1.5.2'
// compile 'com.github.gzu-liyujiang.AndroidPicker:FilePicker:1.5.2'
// compile 'com.github.gzu-liyujiang.AndroidPicker:ColorPicker:1.5.2'
// compile 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:1.5.3'
// compile 'com.github.gzu-liyujiang.AndroidPicker:FilePicker:1.5.3'
// compile 'com.github.gzu-liyujiang.AndroidPicker:ColorPicker:1.5.3'
}
4 changes: 2 additions & 2 deletions app/src/main/assets/city.json
Expand Up @@ -7011,7 +7011,7 @@
"counties": [
{
"areaId": "411502",
"areaName": "负忧"
"areaName": "负忧"
},
{
"areaId": "411503",
Expand Down Expand Up @@ -14261,4 +14261,4 @@
}
]
}
]
]
18 changes: 16 additions & 2 deletions app/src/main/java/cn/qqtheme/androidpicker/MainActivity.java
Expand Up @@ -27,6 +27,7 @@
import cn.qqtheme.framework.picker.DoublePicker;
import cn.qqtheme.framework.picker.FilePicker;
import cn.qqtheme.framework.picker.LinkagePicker;
import cn.qqtheme.framework.picker.MultiplePicker;
import cn.qqtheme.framework.picker.NumberPicker;
import cn.qqtheme.framework.picker.OptionPicker;
import cn.qqtheme.framework.picker.TimePicker;
Expand Down Expand Up @@ -106,10 +107,11 @@ public void onYearMonthDayPicker(View view) {
final DatePicker picker = new DatePicker(this);
picker.setCanceledOnTouchOutside(true);
picker.setUseWeight(true);
picker.setTopPadding(ConvertUtils.toPx(this, 20));
picker.setTopPadding(ConvertUtils.toPx(this, 10));
picker.setRangeEnd(2111, 1, 11);
picker.setRangeStart(2016, 8, 29);
picker.setSelectedItem(2050, 10, 14);
picker.setResetWhileWheel(false);
picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
@Override
public void onDatePicked(String year, String month, String day) {
Expand Down Expand Up @@ -234,9 +236,10 @@ public void onDoublePicker(View view) {
final DoublePicker picker = new DoublePicker(this, firstData, secondData);
picker.setDividerVisible(true);
picker.setCycleDisable(false);
picker.setSelectedIndex(2, 1);
picker.setSelectedIndex(0, 0);
picker.setFirstLabel("于", null);
picker.setSecondLabel("骑/乘", "出发");
picker.setTextSize(12);
picker.setOnPickListener(new DoublePicker.OnPickListener() {
@Override
public void onPicked(int selectedFirstIndex, int selectedSecondIndex) {
Expand All @@ -246,6 +249,17 @@ public void onPicked(int selectedFirstIndex, int selectedSecondIndex) {
picker.show();
}

public void onMultiplePicker(View view) {
MultiplePicker picker = new MultiplePicker(this, new String[]{"穿青人", "少数民族", "已识别民族", "未定民族"});
picker.setOnItemPickListener(new MultiplePicker.OnItemPickListener() {
@Override
public void onItemPicked(int count, List<String> items) {
showToast("已选" + count + "项:" + items);
}
});
picker.show();
}

public void onLinkagePicker(View view) {
//联动选择器的更多用法,可参见AddressPicker和CarNumberPicker
LinkagePicker.DataProvider provider = new LinkagePicker.DataProvider() {
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Expand Up @@ -84,6 +84,12 @@
android:onClick="onDoublePicker"
android:text="双项选择"/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onMultiplePicker"
android:text="多项选择"/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Expand Up @@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
}
}
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Expand Up @@ -15,8 +15,8 @@ com.android.build.gradle.overridePathCheck=true
#android.useDeprecatedNdk=true

#下面定义一些常量供gradle脚本使用
VERSION_NAME=1.5.2
VERSION_CODE=152
VERSION_NAME=1.5.3
VERSION_CODE=153
COMPILE_SDK_VERSION=23
MIN_SDK_VERSION=14
#安卓6.0开始(API23+),需要动态申请权限
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
#Fri Mar 03 00:22:35 CST 2017
#Sat Jun 24 17:00:52 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
Expand Down
4 changes: 4 additions & 0 deletions library/ColorPicker/build.gradle
Expand Up @@ -9,3 +9,7 @@ ext {
dependencies {
compile project(":library:Common")
}

android {
buildToolsVersion '25.0.0'
}
2 changes: 2 additions & 0 deletions library/MultiplePicker/.gitignore
@@ -0,0 +1,2 @@
/build
/*.iml
11 changes: 11 additions & 0 deletions library/MultiplePicker/build.gradle
@@ -0,0 +1,11 @@
apply plugin: 'com.android.library'

ext {
isLibrary = true
pomArtifactId = "MultiplePicker"
pomDescription = "multiple picker for android"
}

dependencies {
compile project(":library:Common")
}
5 changes: 5 additions & 0 deletions library/MultiplePicker/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.qqtheme.framework.multiplepicker">

</manifest>
@@ -0,0 +1,90 @@
package cn.qqtheme.framework.picker;

import android.app.Activity;
import android.support.annotation.NonNull;
import android.view.Gravity;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import cn.qqtheme.framework.popup.ConfirmPopup;

/**
* 多项选择器
*
* @author 李玉江[QQ:1032694760]
* @since 2017/06/24
*/
public class MultiplePicker extends ConfirmPopup<ScrollView> {
private List<String> items = new ArrayList<>();
private LinearLayout layout;
private OnItemPickListener onItemPickListener;

public MultiplePicker(Activity activity, String[] items) {
this(activity, Arrays.asList(items));
}

public MultiplePicker(Activity activity, List<String> items) {
super(activity);
this.items = items;
}

public void setOnItemPickListener(OnItemPickListener onItemPickListener) {
this.onItemPickListener = onItemPickListener;
}

@NonNull
@Override
protected ScrollView makeCenterView() {
ScrollView scrollView = new ScrollView(activity);
layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);
for (String item : items) {
LinearLayout line = new LinearLayout(activity);
line.setOrientation(LinearLayout.HORIZONTAL);
line.setGravity(Gravity.CENTER);
TextView textView = new TextView(activity);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1.0f);
lp.gravity = Gravity.CENTER;
textView.setLayoutParams(lp);
textView.setText(item);
textView.setGravity(Gravity.CENTER);
line.addView(textView);
CheckBox checkBox = new CheckBox(activity);
checkBox.setLayoutParams(new LinearLayout.LayoutParams(0, WRAP_CONTENT, 0.4f));
line.addView(checkBox);
layout.addView(line);
}
scrollView.addView(layout);
return scrollView;
}

@Override
protected void onSubmit() {
if (onItemPickListener == null) {
return;
}
List<String> checked = new ArrayList<>();
for (int i = 0, count = layout.getChildCount(); i < count; i++) {
LinearLayout line = (LinearLayout) layout.getChildAt(i);
CheckBox checkBox = (CheckBox) line.getChildAt(1);
if (checkBox.isChecked()) {
TextView textView = (TextView) line.getChildAt(0);
checked.add(textView.getText().toString());
}
}
onItemPickListener.onItemPicked(checked.size(), checked);
}

public interface OnItemPickListener {

void onItemPicked(int count, List<String> items);

}

}

0 comments on commit 5e697b3

Please sign in to comment.