Android如何實現(xiàn)年月選擇器功能
開發(fā)過程中,年月的選擇功能還是比較常見的,像這種功能點比較常見,要是每次都要自己手動去寫,這無疑會耗費比較多的時間與精力,今天給大家介紹一個第三方庫,使用該庫來完成年月選擇器功能。
一、效果圖

二、實現(xiàn)步驟:
1、依賴庫
implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.3'
2、xml布局文件
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="200dp" android:background="#ffffff"> <TextView android:id="@+id/cancel" android:layout_width="60dp" android:layout_height="40dp" android:gravity="center" android:text="取消" android:textColor="#666666" android:textSize="17sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/ok" android:layout_width="60dp" android:layout_height="40dp" android:gravity="center" android:text="確定" android:textColor="#3C76FF" android:textSize="17sp" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <View android:id="@+id/view_line" android:layout_width="match_parent" android:layout_height="1dp" android:background="#e5e5e5" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toBottomOf="@id/cancel" /> <com.aigestudio.wheelpicker.WheelPicker android:id="@+id/mWheelPicker_1" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginLeft="30dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/mWheelPicker_2" app:layout_constraintTop_toBottomOf="@id/view_line" app:wheel_atmospheric="true" app:wheel_curtain_color="#1886F7" app:wheel_curved="true" app:wheel_cyclic="true" app:wheel_indicator_color="#e5e5e5" app:wheel_item_text_color="#919191" app:wheel_item_text_size="23sp" app:wheel_selected_item_text_color="#000000" /> <com.aigestudio.wheelpicker.WheelPicker android:id="@+id/mWheelPicker_2" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginRight="30dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/mWheelPicker_1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="@id/mWheelPicker_1" app:wheel_atmospheric="true" app:wheel_curtain_color="#1886F7" app:wheel_curved="true" app:wheel_cyclic="true" app:wheel_indicator_color="#e5e5e5" app:wheel_indicator_size="24sp" app:wheel_item_text_color="#919191" app:wheel_item_text_size="23sp" app:wheel_selected_item_text_color="#000000" /> </android.support.constraint.ConstraintLayout>
3、添加數(shù)據(jù)
List<String> CEOYEAR = new ArrayList<>();
List<String> CEOMONTH = new ArrayList<>();
for (int i = 2000; i < 2051; i++) {
CEOYEAR.add(i + "");
}
for (int i = 1; i < 13; i++) {
CEOMONTH.add(i + "");
}
4、設(shè)置選擇器彈出框
/**
* @desc : 兩個滾動器
**/
private void showTwoWheelPicker(Context context, final List<String> data1, final List<String> data2, final TwoWheelListener mTwoWheelListener) {
final Dialog dialog = getDialog(context);
Window window = dialog.getWindow();
window.setGravity(Gravity.BOTTOM);
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window.setContentView(R.layout.fragment_sami);
final WheelPicker wv1 = window.findViewById(R.id.mWheelPicker_1);
final WheelPicker wv2 = window.findViewById(R.id.mWheelPicker_2);
wv1.setData(data1);
wv2.setData(data2);
//取消
window.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
//確定
window.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
if (mTwoWheelListener != null) {
mTwoWheelListener.onOk(data1.get(wv1.getCurrentItemPosition()), data2.get(wv2.getCurrentItemPosition()));
}
}
});
}
private Dialog getDialog(Context context) {
return new AlertDialog.Builder(context, R.style.RoundCornerDialog).setCancelable(false).show();
}
private TwoWheelListener mTwoWheelListener = null;
public static interface TwoWheelListener {
void onOk(String str1, String str2);
}
5、設(shè)置彈出框dialog樣式
<!--圓角的dialog樣式--> <style name="RoundCornerDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.6</item> </style>
6、設(shè)置點擊事件彈出
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showTwoWheelPicker(AppBarLayoutActivity.this, CEOYEAR, CEOMONTH, new TwoWheelListener() {
@Override
public void onOk(String str1, String str2) {
Toast.makeText(AppBarLayoutActivity.this, str1 + "年" + str2 + "日", Toast.LENGTH_SHORT).show();
}
});
}
});
四、總結(jié)
這個第三方庫我這里只是做了簡單的介紹,還有更多需求的還是去閱讀第三方庫。
第三方庫地址:
https://github.com/AigeStudio/WheelPicker
到這里就結(jié)束啦。
以上就是Android如何實現(xiàn)年月選擇器功能的詳細(xì)內(nèi)容,更多關(guān)于Android實現(xiàn)年月選擇器功能的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android ViewPager與radiogroup實現(xiàn)關(guān)聯(lián)示例
本篇文章主要介紹了Android ViewPager與radiogroup實現(xiàn)關(guān)聯(lián)示例,具有一定的參考價值,有興趣的可以了解一下。2017-03-03
Android AIDL實現(xiàn)與服務(wù)相互調(diào)用方式
這篇文章主要介紹了Android AIDL實現(xiàn)與服務(wù)相互調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android開發(fā)實現(xiàn)SubMenu選項菜單和子菜單示例
這篇文章主要介紹了Android開發(fā)實現(xiàn)SubMenu選項菜單和子菜單,結(jié)合實例形式分析了Android開發(fā)中SubMenu選項菜單和子菜單的功能、配置、布局等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
Android 藍(lán)牙連接 ESC/POS 熱敏打印機打印實例(藍(lán)牙連接篇)
這篇文章主要介紹了Android 藍(lán)牙連接 ESC/POS 熱敏打印機打印實例(藍(lán)牙連接篇),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-04-04
android系統(tǒng)拍照結(jié)合android-crop裁剪圖片
這篇文章主要為大家詳細(xì)介紹android系統(tǒng)拍照結(jié)合android-crop裁剪圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01

