Android-PickerView系列之介紹與使用篇(一)

1、介紹

Android-PickerView是一款仿iOS的PickerView控件,並封裝了時間選擇和選項選擇這兩種選擇器,詳細特性以下:java

WheelView —— 基礎控件

  • 帶有3D圓弧效果。
  • 支持文字、顏色、大小設置。
  • 支持背景顏色設置。
  • 支持item的分隔線設置。
  • 支持item間距設置。
  • 支持設置是否循環。

OptionsPickerView —— 選項選擇器

  • 支持1、2、三級聯動數據。
  • 支持1、2、三級不聯動數據。
  • 支持自定義佈局。
  • 支持自定義標題欄。
  • 支持「省,市,區」等選項的單位(label)顯示、隱藏和自定義。
  • 支持dialog 模式顯示。
  • 支持自定義設置容器。

TimePickerView —— 時間選擇器

  • 支持選擇年、月、日的範圍。
  • 支持年月日時分秒顯示。
  • 支持設置當前默認時間。
  • 支持自定義佈局。
  • 支持自定義標題欄。
  • 支持「年,月,日,時,分,秒」等選項的單位(label)顯示、隱藏和自定義。
  • 支持dialog 模式顯示。
  • 支持自定義設置容器。

其中,WheelView 可在XML佈局中直接引用:android

<com.bigkoo.pickerview.lib.WheelView
            android:id="@+id/wv_options"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
  • 1
  • 2
  • 3
  • 4

TimePickerView —— 時間選擇器,支持年月日時分,年月日,年月,時分等格式 ,效果以下:

TimePicker.gif 
 

OptionsPickerView —— 選項選擇器,支持一,二,三級選項選擇,而且能夠設置是否聯動 ,效果以下:



OptionsPicker.gif

 

2、使用

 

1.添加 Jcenter 倉庫 Gradle 依賴:

compile 'com.contrarywind:Android-PickerView:3.x'
//注:實際引入請把"3.x"替換成具體版本號,最新版本號請以GitHub上面提供的爲準
  • 1
  • 2

  GitHub的項目官方地址

2.在你的Activity中添加以下代碼:

//時間選擇器
 pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date,View v) {//選中事件回調
                tvTime.setText(getTime(date));
            }
        })
             .build();
 pvTime.show();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

或者git

//條件選擇器
 pvOptions = new  OptionsPickerView.Builder(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);
            }
        }).build();
 pvOptions.setPicker(options1Items, options2Items, options3Items);
 pvOptions.show();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

  簡單的兩個步驟就能實現功能了,就是這麼簡單~ 若是默認的樣式不符合你的口味,請繼續往下看~github

 

3、自定義樣式

pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date,View v) {//選中事件回調
                tvTime.setText(getTime(date));
            }
        })
                .setType(TimePickerView.Type.ALL)//默認所有顯示
                .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
                .setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR) + 20)//默認是1900-2100年
                .setDate(new Date())// 默認是系統時間*/
                .setLabel("年","月","日","時","分","秒")
                .build();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
pvOptions = new  OptionsPickerView.Builder(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);
            }
        })
                .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("省", "市", "區")//設置選擇的三級單位
                .setCyclic(false, false, false)//循環與否
                .setSelectOptions(1, 1, 1)  //設置默認選中項
                .setOutSideCancelable(false)//點擊外部dismiss default true
                .build();

        pvOptions.setPicker(options1Items, options2Items, options3Items);//添加數據源
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

4、更多

  1. 若是對以上的使用還有疑問的話,可參考Demo代碼,請戳我查看demo代碼app

  2. 若是仍是不能知足你產品經理的需求,那麼~ 默哀三秒鐘… 而後把源代碼下載下來本身作改動吧,源代碼基本都寫了註釋了,我也只能幫到這兒了。Github項目地址:Android-PickerViewide

  3. 關於方法名和參數的詳細說明,請參考Wiki:請戳我查看Wiki文檔,歡迎提issue,提建議,Pull Request.    
相關文章
相關標籤/搜索