Android-PickerView
This is a picker view for android , support linkage effect, timepicker and optionspicker.(时间选择器、省市区三级联动)
Top Related Projects
[NO LONGER MAINTAINED] Android library for better Picker DialogFragments
Simple and fantastic wheel view in realistic effect for android.
You can now select a date and a time with only one widget !
Pick a date or time on Android in style
Photopicker and document picker for android
Quick Overview
Android-PickerView is a flexible and customizable picker view library for Android applications. It provides various types of pickers, including time, options, and address pickers, with a user-friendly interface and smooth animations.
Pros
- Highly customizable with numerous options for appearance and behavior
- Supports multiple picker types (time, options, address) in a single library
- Smooth animations and intuitive user interface
- Active development and community support
Cons
- Limited documentation in English, which may be challenging for non-Chinese speakers
- Some users report issues with compatibility on certain Android versions
- Learning curve for advanced customizations
Code Examples
- Time Picker:
TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(MainActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
}
}).build();
pvTime.show();
- Options Picker:
OptionsPickerView pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String tx = options1Items.get(options1) + options2Items.get(options1).get(options2) + options3Items.get(options1).get(options2).get(options3);
Toast.makeText(MainActivity.this, tx, Toast.LENGTH_SHORT).show();
}
}).build();
pvOptions.setPicker(options1Items, options2Items, options3Items);
pvOptions.show();
- Address Picker:
OptionsPickerView pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
String address = options1Items.get(options1) + options2Items.get(options1).get(options2) + options3Items.get(options1).get(options2).get(options3);
Toast.makeText(MainActivity.this, address, Toast.LENGTH_SHORT).show();
}
}).build();
pvOptions.setPicker(options1Items, options2Items, options3Items);
pvOptions.show();
Getting Started
- Add the dependency to your
build.gradle
file:
dependencies {
implementation 'com.contrarywind:Android-PickerView:4.1.9'
}
- Initialize and show a picker in your activity or fragment:
TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(MainActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
}
}).build();
pvTime.show();
- Customize the picker as needed using the builder pattern:
TimePickerView pvTime = new TimePickerBuilder(this, listener)
.setType(new boolean[]{true, true, true, false, false, false})
.setLabel("year", "month", "day", "hour", "min", "sec")
.build();
Competitor Comparisons
[NO LONGER MAINTAINED] Android library for better Picker DialogFragments
Pros of android-betterpickers
- Offers a wider variety of picker types, including number, date, time, and recurrence pickers
- Provides a more customizable UI with Material Design-inspired aesthetics
- Supports both dialog and inline picker modes for greater flexibility
Cons of android-betterpickers
- Less actively maintained, with fewer recent updates compared to Android-PickerView
- May require more setup and configuration to achieve desired functionality
- Limited support for custom date and time formats
Code Comparison
Android-PickerView:
TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
// Handle time selection
}
}).build();
pvTime.show();
android-betterpickers:
DatePickerBuilder dpb = new DatePickerBuilder()
.setFragmentManager(getSupportFragmentManager())
.setStyleResId(R.style.BetterPickersDialogFragment)
.setReference(MY_DATE_PICKER_ID);
dpb.show();
Both libraries offer easy-to-use APIs for implementing pickers, but Android-PickerView provides a more streamlined approach with a single builder pattern. android-betterpickers requires separate setup for different picker types and uses a fragment-based approach, which may be more suitable for complex UI integrations.
Simple and fantastic wheel view in realistic effect for android.
Pros of WheelPicker
- More customizable appearance with options for curved wheel effect and 3D visual style
- Supports both horizontal and vertical orientations
- Lighter weight and potentially better performance due to simpler implementation
Cons of WheelPicker
- Less comprehensive documentation and examples compared to Android-PickerView
- Fewer built-in picker types (e.g., no direct support for date/time pickers)
- Smaller community and less frequent updates
Code Comparison
WheelPicker:
WheelPicker wheelPicker = findViewById(R.id.wheel_picker);
wheelPicker.setData(Arrays.asList("Item 1", "Item 2", "Item 3"));
wheelPicker.setOnItemSelectedListener(new WheelPicker.OnItemSelectedListener() {
@Override
public void onItemSelected(WheelPicker picker, Object data, int position) {
// Handle selection
}
});
Android-PickerView:
OptionsPickerView<String> pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
// Handle selection
}
}).build();
pvOptions.setPicker(Arrays.asList("Item 1", "Item 2", "Item 3"));
pvOptions.show();
Both libraries offer easy-to-use APIs for creating picker views, but Android-PickerView provides a more structured approach with separate builders for different picker types, while WheelPicker offers a simpler, more flexible implementation that can be easily customized.
You can now select a date and a time with only one widget !
Pros of SingleDateAndTimePicker
- More modern and visually appealing design
- Supports both date and time selection in a single view
- Easier to integrate with minimal setup required
Cons of SingleDateAndTimePicker
- Less customization options compared to Android-PickerView
- Limited to date and time selection, while Android-PickerView supports various data types
- Smaller community and fewer updates
Code Comparison
SingleDateAndTimePicker:
new SingleDateAndTimePicker.Builder(context)
.bottomSheet()
.curved()
.displayMinutes(true)
.displayHours(true)
.displayDays(false)
.displayMonth(true)
.displayYears(true)
.build()
.display();
Android-PickerView:
TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
// Handle date selection
}
})
.setType(new boolean[]{true, true, true, true, true, true})
.build();
pvTime.show();
SingleDateAndTimePicker offers a more concise and readable setup, while Android-PickerView provides more granular control over the picker's appearance and behavior. Android-PickerView's implementation requires more boilerplate code but allows for greater customization of the picker's components.
Pick a date or time on Android in style
Pros of MaterialDateTimePicker
- Follows Material Design guidelines, providing a modern and consistent user interface
- Offers both date and time picker functionality in a single library
- Supports theming and customization options to match app aesthetics
Cons of MaterialDateTimePicker
- Limited to date and time selection, lacking support for other types of data
- May have a steeper learning curve due to more complex implementation
Code Comparison
MaterialDateTimePicker:
Calendar now = Calendar.getInstance();
DatePickerDialog dpd = DatePickerDialog.newInstance(
this,
now.get(Calendar.YEAR),
now.get(Calendar.MONTH),
now.get(Calendar.DAY_OF_MONTH)
);
dpd.show(getFragmentManager(), "Datepickerdialog");
Android-PickerView:
TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
// Handle selected time
}
}).build();
pvTime.show();
MaterialDateTimePicker focuses on providing a Material Design-compliant date and time picker, while Android-PickerView offers a wider range of picker types with a simpler implementation. MaterialDateTimePicker is better suited for apps prioritizing Material Design aesthetics, while Android-PickerView provides more flexibility for various picker types. The code examples demonstrate the different approaches to implementing a time picker in each library.
Photopicker and document picker for android
Pros of Android-FilePicker
- Supports multiple file types (images, videos, documents)
- Offers customizable UI themes and layouts
- Provides built-in file preview functionality
Cons of Android-FilePicker
- Limited to file selection only, not date or time picking
- May require more setup and configuration for specific use cases
- Larger library size due to additional features
Code Comparison
Android-PickerView:
TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
// Handle time selection
}
}).build();
pvTime.show();
Android-FilePicker:
FilePickerBuilder.getInstance()
.setMaxCount(5)
.setSelectedFiles(filePaths)
.setActivityTheme(R.style.LibAppTheme)
.pickPhoto(this);
Android-PickerView focuses on date and time selection with a wheel-like interface, while Android-FilePicker specializes in file selection with a more traditional file explorer interface. Android-PickerView is better suited for applications requiring date/time input, whereas Android-FilePicker is ideal for apps needing file selection capabilities across various file types.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
注æâ ï¸ï¼å·²åæ¢æ´æ°ï¼åæçæ¬jcenteråºå¯ä»¥ç»§ç»ä½¿ç¨ã建议ç´æ¥ä¸è½½æºç å¼å ¥ module å°èªå·±é¡¹ç®æ¹é ã
Android-PickerView
English Document
注æäºé¡¹ã详请使ç¨æ¹å¼ãæ´æ°æ¥å¿çï¼è¯·æ¥ç Wikiææ¡£
Wikiææ¡£ï¼Wikiææ¡£ï¼Wikiææ¡£ !~ éè¦çäºæ 说ä¸é
对äºä½¿ç¨ä¸æä»»ä½çé®æä¼å建议çï¼æ¬¢è¿å å ¥QQ群讨论交æµææ¯é®é¢ã
交æµç¾¤1ï¼ 387051294ï¼å·²æ»¡ï¼
交æµç¾¤2ï¼ 219962328ï¼å·²æ»¡ï¼
ä»ç»
è¿æ¯ä¸æ¬¾ä»¿iOSçPickerViewæ§ä»¶ï¼ææ¶é´éæ©å¨åé项éæ©å¨ï¼æ°çæ¬ç详ç»ç¹æ§å¦ä¸ï¼
ââTimePickerView æ¶é´éæ©å¨ï¼æ¯æå¹´ææ¥æ¶åï¼å¹´ææ¥ï¼å¹´æï¼æ¶åçæ ¼å¼ã
ââOptionsPickerView é项éæ©å¨ï¼æ¯æä¸ï¼äºï¼ä¸çº§é项éæ©ï¼å¹¶ä¸å¯ä»¥è®¾ç½®æ¯å¦èå¨ ã
- æ¯æä¸çº§èå¨
- 设置æ¯å¦èå¨
- 设置循ç¯æ¨¡å¼
- æ¯æèªå®ä¹å¸å±ã
- æ¯æitemçåé线设置ã
- æ¯æitemé´è·è®¾ç½®ã
- æ¶é´éæ©å¨æ¯æèµ·å§åç»æ¢æ¥æ设å®ã
- æ¯æâå¹´ï¼æï¼æ¥ï¼æ¶ï¼åï¼ç§âï¼âçï¼å¸ï¼åºâçé项çåä½ï¼labelï¼æ¾ç¤ºãéèåèªå®ä¹ã
- æ¯æèªå®ä¹æåãé¢è²ãæå大å°çå±æ§
- Itemçæåé¿åº¦è¿é¿æ¶ï¼æåä¼èªéåºç¼©æ¾å°Itemçé¿åº¦ï¼é¿å æ¾ç¤ºä¸å®å ¨çé®é¢
- æ¯æDialog 模å¼ã
- æ¯æèªå®ä¹è®¾ç½®å®¹å¨ã
- å®æ¶åè°ã
æå ´è¶£ç 究3Dæ»è½®ææçå®ç°æºå¶ï¼å¸æææºç ç 究éå½»çå¯ä»¥ççè¿ç¯å客ï¼
Android-PickerViewç³»åä¹æºç 解æç¯ï¼äºï¼
使ç¨æ³¨æäºé¡¹
- 注æï¼å½æ们è¿è¡è®¾ç½®æ¶é´çå¯å§ä½ç½®æ¶ï¼éè¦ç¹å«æ³¨ææ份ç设å®
- åå ï¼Calendarç»ä»¶å é¨çæ份ï¼æ¯ä»0å¼å§çï¼å³0-11代表1-12æ份
- é误使ç¨æ¡ä¾ï¼ startDate.set(2013,1,1);  endDate.set(2020,12,1);
- æ£ç¡®ä½¿ç¨æ¡ä¾ï¼ startDate.set(2013,0,1);  endDate.set(2020,11,1);
V4.1.9 çæ¬æ´æ°è¯´æï¼2019-10-20ï¼
- ä¿®å¤: åå day å¶ç°è¶ççé®é¢ã
- ä¼å: æ¾ç¤ºå¸å±ä¸è±æé»è®¤å¤§åé®é¢ã
- æ°å¢: æ大å¯è§é¡¹çæ°ç®æä¾APIç»å¼åè 设置ã(setItemVisibleCount())
- æ°å¢: æ»è½®ä»ä¸é´å°ä¸¤è¾¹éæ度æ¸åï¼æä¾å¼å ³API设置ãï¼isAlphaGradient(true)ï¼
- æ°å¢: éä¸é¡¹åå½¢åå²çº¿æ ·å¼ãï¼DividerType.CIRCLEï¼
V4.1.8 çæ¬æ´æ°è¯´æï¼2019-4-24ï¼
- æ´æ°gradleçæ¬ï¼ wheelviewåºç¡åºç± compile æ¹ä¸º api ä¾èµï¼é¿å gradle 5.0+çæ¬æ æ³å¼å ¥ã
- ä¿®å¤ setTextXOffset èµå¼é®é¢ã
V4.1.7 çæ¬æ´æ°è¯´æï¼2019-1-10ï¼
- ä¿®å¤ WheelViewå¨åå§åæ¶ï¼æ°æ®ä¸ºç©ºå¯¼è´height=0ï¼é æä¸ç´æ¾ç¤ºä¸åºæ¥çé®é¢ã
- æ°å¢åæ¶æé®çç¹å»äºä»¶çå¬å ¥å£ã
- åæ°æ³¨è§£æ·»å ï¼è§èæ°æ®ç±»åã
- åºå¼setBackgroundIdæ¹æ³ï¼ æ´æ°æ¹æ³å½å为 setOutSideColorã
æ´å¤åå²çæ¬è¯¦æ ï¼è¯·æ¥é ï¼æ´æ°æ¥å¿ï¼4.xçæ¬ï¼
æ¹æ³åä¸åæ°è¯·æ¥é ï¼æ¹æ³åä¸åæ°è¯´æææ¡£
å¦ä½ä½¿ç¨ï¼
Android-PickerView åºä½¿ç¨ç¤ºä¾ï¼
1.æ·»å Jcenterä»åº Gradleä¾èµï¼
compile 'com.contrarywind:Android-PickerView:4.1.9'
æè
Maven
<dependency>
<groupId>com.contrarywind</groupId>
<artifactId>Android-PickerView</artifactId>
<version>4.1.9</version>
<type>pom</type>
</dependency>
2.å¨é¡¹ç®ä¸æ·»å å¦ä¸ä»£ç ï¼
//æ¶é´éæ©å¨
TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(MainActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
}
}).build();
//æ¡ä»¶éæ©å¨
OptionsPickerView pvOptions = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
//è¿åçåå«æ¯ä¸ä¸ªçº§å«çéä¸ä½ç½®
String tx = options1Items.get(options1).getPickerViewText()
+ options2Items.get(options1).get(option2)
+ options3Items.get(options1).get(option2).get(options3).getPickerViewText();
tvOptions.setText(tx);
}
}).build();
pvOptions.setPicker(options1Items, options2Items, options3Items);
pvOptions.show();
大ååæ~
3.å¦æé»è®¤æ ·å¼ä¸ç¬¦åä½ çå£å³ï¼å¯ä»¥èªå®ä¹åç§å±æ§ï¼
Calendar selectedDate = Calendar.getInstance();
Calendar startDate = Calendar.getInstance();
//startDate.set(2013,1,1);
Calendar endDate = Calendar.getInstance();
//endDate.set(2020,1,1);
//æ£ç¡®è®¾ç½®æ¹å¼ åå ï¼æ³¨æäºé¡¹æ说æ
 startDate.set(2013,0,1);
 endDate.set(2020,11,31);
pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date,View v) {//éä¸äºä»¶åè°
tvTime.setText(getTime(date));
}
})
.setType(new boolean[]{true, true, true, true, true, true})// é»è®¤å
¨é¨æ¾ç¤º
.setCancelText("Cancel")//åæ¶æé®æå
.setSubmitText("Sure")//确认æé®æå
.setContentSize(18)//æ»è½®æå大å°
.setTitleSize(20)//æ é¢æå大å°
.setTitleText("Title")//æ é¢æå
.setOutSideCancelable(false)//ç¹å»å±å¹ï¼ç¹å¨æ§ä»¶å¤é¨èå´æ¶ï¼æ¯å¦åæ¶æ¾ç¤º
.isCyclic(true)//æ¯å¦å¾ªç¯æ»å¨
.setTitleColor(Color.BLACK)//æ é¢æåé¢è²
.setSubmitColor(Color.BLUE)//ç¡®å®æé®æåé¢è²
.setCancelColor(Color.BLUE)//åæ¶æé®æåé¢è²
.setTitleBgColor(0xFF666666)//æ é¢èæ¯é¢è² Night mode
.setBgColor(0xFF333333)//æ»è½®èæ¯é¢è² Night mode
.setDate(selectedDate)// å¦æä¸è®¾ç½®çè¯ï¼é»è®¤æ¯ç³»ç»æ¶é´*/
.setRangDate(startDate,endDate)//èµ·å§ç»æ¢å¹´ææ¥è®¾å®
.setLabel("å¹´","æ","æ¥","æ¶","å","ç§")//é»è®¤è®¾ç½®ä¸ºå¹´ææ¥æ¶åç§
.isCenterLabel(false) //æ¯å¦åªæ¾ç¤ºä¸é´éä¸é¡¹çlabelæåï¼falseåæ¯é¡¹itemå
¨é¨é½å¸¦ælabelã
.isDialog(true)//æ¯å¦æ¾ç¤ºä¸ºå¯¹è¯æ¡æ ·å¼
.build();
pvOptions = new OptionsPickerBuilder(this, new OptionsPickerView.OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
//è¿åçåå«æ¯ä¸ä¸ªçº§å«çéä¸ä½ç½®
String tx = options1Items.get(options1).getPickerViewText()
+ options2Items.get(options1).get(option2)
+ options3Items.get(options1).get(option2).get(options3).getPickerViewText();
tvOptions.setText(tx);
}
}) .setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
@Override
public void onOptionsSelectChanged(int options1, int options2, int options3) {
String str = "options1: " + options1 + "\noptions2: " + options2 + "\noptions3: " + options3;
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
})
.setSubmitText("ç¡®å®")//ç¡®å®æé®æå
.setCancelText("åæ¶")//åæ¶æé®æå
.setTitleText("åå¸éæ©")//æ é¢
.setSubCalSize(18)//ç¡®å®ååæ¶æå大å°
.setTitleSize(20)//æ é¢æå大å°
.setTitleColor(Color.BLACK)//æ é¢æåé¢è²
.setSubmitColor(Color.BLUE)//ç¡®å®æé®æåé¢è²
.setCancelColor(Color.BLUE)//åæ¶æé®æåé¢è²
.setTitleBgColor(0xFF333333)//æ é¢èæ¯é¢è² Night mode
.setBgColor(0xFF000000)//æ»è½®èæ¯é¢è² Night mode
.setContentTextSize(18)//æ»è½®æå大å°
.setLinkage(false)//设置æ¯å¦èå¨ï¼é»è®¤true
.setLabels("ç", "å¸", "åº")//设置éæ©çä¸çº§åä½
.isCenterLabel(false) //æ¯å¦åªæ¾ç¤ºä¸é´éä¸é¡¹çlabelæåï¼falseåæ¯é¡¹itemå
¨é¨é½å¸¦ælabelã
.setCyclic(false, false, false)//循ç¯ä¸å¦
.setSelectOptions(1, 1, 1) //设置é»è®¤éä¸é¡¹
.setOutSideCancelable(false)//ç¹å»å¤é¨dismiss default true
.isDialog(true)//æ¯å¦æ¾ç¤ºä¸ºå¯¹è¯æ¡æ ·å¼
.isRestoreItem(true)//åæ¢æ¶æ¯å¦è¿åï¼è®¾ç½®é»è®¤éä¸ç¬¬ä¸é¡¹ã
.build();
pvOptions.setPicker(options1Items, options2Items, options3Items);//æ·»å æ°æ®æº
4.å¦æéè¦èªå®ä¹å¸å±ï¼
// 注æï¼èªå®ä¹å¸å±ä¸ï¼id为 optionspicker æè
timepicker çå¸å±ä»¥åå
¶åæ§ä»¶å¿
é¡»è¦æï¼å¦åä¼æ¥ç©ºæé
// å
·ä½å¯åèdemo éé¢ç两个èªå®ä¹å¸å±
pvCustomOptions = new OptionsPickerBuilder(this, new OptionsPickerView.OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int option2, int options3, View v) {
//è¿åçåå«æ¯ä¸ä¸ªçº§å«çéä¸ä½ç½®
String tx = cardItem.get(options1).getPickerViewText();
btn_CustomOptions.setText(tx);
}
})
.setLayoutRes(R.layout.pickerview_custom_options, new CustomListener() {
@Override
public void customLayout(View v) {
//èªå®ä¹å¸å±ä¸çæ§ä»¶åå§ååäºä»¶å¤ç
final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);
final TextView tvAdd = (TextView) v.findViewById(R.id.tv_add);
ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);
tvSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomOptions.returnData(tvSubmit);
}
});
ivCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pvCustomOptions.dismiss();
}
});
tvAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getData();
pvCustomOptions.setPicker(cardItem);
}
});
}
})
.build();
pvCustomOptions.setPicker(cardItem);//æ·»å æ°æ®
5.对使ç¨è¿æçé®çè¯ï¼å¯åèdemo代ç
6.è¥åªéè¦WheelViewåºç¡æ§ä»¶èªè¡æ©å±å®ç°é»è¾ï¼å¯ç´æ¥æ·»å åºç¡æ§ä»¶åºï¼Gradle ä¾èµï¼
compile 'com.contrarywind:wheelview:4.1.0'
WheelView 使ç¨ä»£ç 示ä¾ï¼
xmlå¸å±ï¼
<com.contrarywind.view.WheelView
android:id="@+id/wheelview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Java 代ç ï¼
WheelView wheelView = findViewById(R.id.wheelview);
wheelView.setCyclic(false);
final List<String> mOptionsItems = new ArrayList<>();
mOptionsItems.add("item0");
mOptionsItems.add("item1");
mOptionsItems.add("item2");
wheelView.setAdapter(new ArrayWheelAdapter(mOptionsItems));
wheelView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(int index) {
Toast.makeText(MainActivity.this, "" + mOptionsItems.get(index), Toast.LENGTH_SHORT).show();
}
});
ææå¾ï¼æè¡ä¿¡ç¨å¡çâæä¸çæ´»âéé¢æ¡ä»¶éæ©å¨ä»ä»¬ç¨çå°±æ¯æè¿ä¸ªåºï¼å¤§å®¶å¯ä»¥å½å®é 项ç®åèï¼
Thanks
- WheelView
- androidWheelView
License
Copyright 2014 Bigkoo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Top Related Projects
[NO LONGER MAINTAINED] Android library for better Picker DialogFragments
Simple and fantastic wheel view in realistic effect for android.
You can now select a date and a time with only one widget !
Pick a date or time on Android in style
Photopicker and document picker for android
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot