├── library ├── .gitignore ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── res │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ ├── attrs.xml │ │ │ ├── styles.xml │ │ │ └── dimens_font.xml │ │ ├── anim │ │ │ ├── slide_in_from_bottom.xml │ │ │ └── slide_out_to_bottom.xml │ │ └── layout │ │ │ └── bottom_sheet_dialog.xml │ │ └── java │ │ └── com │ │ └── wheelpicker │ │ ├── widget │ │ ├── PickString.java │ │ ├── AbstractViewWheelPicker.java │ │ ├── TextWheelPickerAdapter.java │ │ ├── ViewBaseAdapter.java │ │ ├── IPickerView.java │ │ ├── TextBaseAdapter.java │ │ ├── AbstractTextWheelPicker.java │ │ └── TextWheelPicker.java │ │ ├── core │ │ ├── OnWheelPickedListener.java │ │ ├── WheelPickerUtil.java │ │ ├── WheelScroller.java │ │ ├── WheelPickerAdapter.java │ │ ├── WheelPickerImpl.java │ │ ├── IWheelPicker.java │ │ ├── ScrollerCompat.java │ │ ├── OverScrollerCompat.java │ │ ├── OSUtils.java │ │ ├── ScrollWheelPicker.java │ │ └── AbstractWheelPicker.java │ │ ├── OnDatePickListener.java │ │ ├── OnDataPickListener.java │ │ ├── OnCascadeWheelListener.java │ │ ├── OnMultiDataPickListener.java │ │ ├── DateTimeItem.java │ │ ├── PickMode.java │ │ ├── AdministrativeMap.java │ │ ├── IDateTimePicker.java │ │ ├── anim │ │ └── Animation.java │ │ ├── SingleTextWheelPicker.java │ │ ├── WheelPickerData.java │ │ ├── DataPickerUtils.java │ │ ├── BottomSheet.java │ │ ├── AdministrativeUtil.java │ │ ├── DataPicker.java │ │ └── MultipleTextWheelPicker.java ├── build.gradle └── proguard-rules.pro ├── settings.gradle ├── .idea ├── copyright │ └── profiles_settings.xml ├── markdown-navigator │ └── profiles_settings.xml ├── encodings.xml ├── compiler.xml ├── vcs.xml ├── runConfigurations.xml ├── gradle.xml ├── misc.xml └── markdown-navigator.xml ├── app ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ └── strings.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ └── layout │ │ │ ├── activity_main.xml │ │ │ ├── activity_picker_old.xml │ │ │ └── activity_picker_new.xml │ │ ├── java │ │ └── com │ │ │ └── wp │ │ │ └── demo │ │ │ ├── Student.java │ │ │ ├── MainActivity.java │ │ │ └── OldPickerActivity.java │ │ └── AndroidManifest.xml ├── .gitignore ├── proguard-rules.pro └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── gradle.properties ├── gradlew.bat ├── gradlew └── README.md /library/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':library' 2 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3d_wheepicker 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yijiebuyi/3DWheelPicker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | *.iml 3 | .gradle 4 | /local.properties 5 | /.idea/* 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | libragy/libs/ -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/* 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | libragy/libs/ 10 | /app/gradlew 11 | /app/gradlew.bat 12 | /app/gradle 13 | .idea/* -------------------------------------------------------------------------------- /library/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #333333 5 | #0076ff 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 16 10:49:15 CST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /library/src/main/java/com/wheelpicker/widget/PickString.java: -------------------------------------------------------------------------------- 1 | package com.wheelpicker.widget; 2 | 3 | /** 4 | * Copyright (C) 2017 5 | * 版权所有 6 | *

7 | * 功能描述: 8 | *

9 | * 作者:yijiebuyi 10 | * 创建时间:2020/8/18 11 | *

12 | * 修改人: 13 | * 修改描述: 14 | * 修改日期 15 | */ 16 | 17 | public interface PickString { 18 | public String pickDisplayName(); 19 | } 20 | -------------------------------------------------------------------------------- /library/src/main/java/com/wheelpicker/core/OnWheelPickedListener.java: -------------------------------------------------------------------------------- 1 | package com.wheelpicker.core; 2 | 3 | /* 4 | * Copyright (C) 2017 5 | * 版权所有 6 | * 7 | * 功能描述: 8 | * 9 | * 作者:yijiebuyi 10 | * 创建时间:2017/11/26 11 | * 12 | * 修改人: 13 | * 修改描述: 14 | * 修改日期 15 | */ 16 | public interface OnWheelPickedListener { 17 | 18 | public void onWheelSelected(AbstractWheelPicker wheelPicker, int index, T data, boolean touch); 19 | } 20 | -------------------------------------------------------------------------------- /library/src/main/java/com/wheelpicker/OnDatePickListener.java: -------------------------------------------------------------------------------- 1 | package com.wheelpicker; 2 | 3 | /** 4 | * Copyright (C) 2017 5 | * 版权所有 6 | *

7 | * 功能描述:日期选择器回调 8 | *

9 | * 作者:yijiebuyi 10 | * 创建时间:2020/8/17 11 | *

12 | * 修改人: 13 | * 修改描述: 14 | * 修改日期 15 | */ 16 | 17 | public interface OnDatePickListener { 18 | /** 19 | * @param dateTimePicker 20 | */ 21 | public void onDatePicked(IDateTimePicker dateTimePicker); 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/wheelpicker/OnDataPickListener.java: -------------------------------------------------------------------------------- 1 | package com.wheelpicker; 2 | 3 | /** 4 | * Copyright (C) 2017 5 | * 版权所有 6 | *

7 | * 功能描述:数据选择回调 8 | *

9 | * 作者:yijiebuyi 10 | * 创建时间:2020/8/17 11 | *

12 | * 修改人: 13 | * 修改描述: 14 | * 修改日期 15 | */ 16 | 17 | public interface OnDataPickListener { 18 | /** 19 | * @param index 选中项的index 20 | * @param val 选中项的显示字符串 21 | * @param data 选中项的数据 22 | */ 23 | public void onDataPicked(int index, String val, T data); 24 | } 25 | -------------------------------------------------------------------------------- /library/src/main/java/com/wheelpicker/OnCascadeWheelListener.java: -------------------------------------------------------------------------------- 1 | package com.wheelpicker; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Copyright (C) 2017 7 | * 版权所有 8 | * 9 | * 功能描述: 10 | * 11 | * 作者:yijiebuyi 12 | * 创建时间:2017/11/26 13 | * 14 | * 修改人: 15 | * 修改描述: 16 | * 修改日期 17 | */ 18 | public interface OnCascadeWheelListener { 19 | 20 | /** 21 | * 22 | * @param wheelIndex 滚轮的索引位置 23 | * @param itemIndex 所有滚轮对应数据的索引位置数组 24 | * @return T 级联数据 25 | */ 26 | public T onCascade(int wheelIndex, List itemIndex); 27 | } 28 | -------------------------------------------------------------------------------- /library/src/main/java/com/wheelpicker/OnMultiDataPickListener.java: -------------------------------------------------------------------------------- 1 | package com.wheelpicker; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Copyright (C) 2017 7 | * 版权所有 8 | *

9 | * 功能描述: 10 | *

11 | * 作者:yijiebuyi 12 | * 创建时间:2020/8/17 13 | *

14 | * 修改人: 15 | * 修改描述: 16 | * 修改日期 17 | */ 18 | 19 | public interface OnMultiDataPickListener { 20 | /** 21 | * @param indexArr 选中项的index数组 22 | * @param val 选中项的显示字符串数组 23 | * @param data 选中项的数据数组 24 | */ 25 | public void onDataPicked(List indexArr, List val, List data); 26 | } 27 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 今天 9 | 明天 10 | 后天 11 | 今年 12 | 明年 13 | 14 | 15 | 取消 16 | 完成 17 | 18 | -------------------------------------------------------------------------------- /library/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 28 5 | buildToolsVersion "28.0.3" 6 | 7 | 8 | defaultConfig { 9 | minSdkVersion 19 10 | targetSdkVersion 28 11 | versionCode 7 12 | versionName "1.1.2" 13 | } 14 | 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | 22 | } 23 | 24 | dependencies { 25 | implementation fileTree(dir: 'libs', include: ['*.jar']) 26 | implementation 'androidx.appcompat:appcompat:1.0.0' 27 | } 28 | -------------------------------------------------------------------------------- /library/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/wp/demo/Student.java: -------------------------------------------------------------------------------- 1 | package com.wp.demo; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.wheelpicker.widget.PickString; 6 | 7 | /** 8 | * Copyright (C) 2017 9 | * 版权所有 10 | *

11 | * 功能描述: 12 | *

13 | * 作者:yijiebuyi 14 | * 创建时间:2020/8/18 15 | *

16 | * 修改人: 17 | * 修改描述: 18 | * 修改日期 19 | */ 20 | 21 | class Student implements PickString { 22 | public String name; 23 | public int age; 24 | 25 | public Student(String n, int a) { 26 | name = n; 27 | age = a; 28 | } 29 | 30 | @NonNull 31 | @Override 32 | public String toString() { 33 | return age + "岁"; 34 | } 35 | 36 | @Override 37 | public String pickDisplayName() { 38 | return name; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 |