1. 程式人生 > >Android-PickerView系列之介紹與使用篇(一)

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

宣告:本文為博主原創文章,轉載請註明出處:小嵩的部落格

一、介紹

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

WheelView —— 基礎控制元件

  • 帶有3D圓弧效果。
  • 支援文字、顏色、大小設定。
  • 支援背景顏色設定。
  • 支援item的分隔線設定。
  • 支援item間距設定。
  • 支援設定是否迴圈。

OptionsPickerView —— 選項選擇器

  • 支援一、二、三級聯動資料。
  • 支援一、二、三級不聯動資料。
  • 支援自定義佈局。
  • 支援自定義標題欄。
  • 支援“省,市,區”等選項的單位(label)顯示、隱藏和自定義。
  • 支援dialog 模式顯示。
  • 支援自定義設定容器。

TimePickerView —— 時間選擇器

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

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

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

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

TimePicker.gif

OptionsPickerView —— 選項選擇器,支援一,二,三級選項選擇,並且可以設定是否聯動 ,效果如下:



OptionsPicker.gif

二、使用

1.新增 Jcenter 倉庫 Gradle 依賴:

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

2.在專案中新增如下程式碼:

//時間選擇器
 pvTime = new TimePickerView.Builder(MainActivity.this, new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date,View v) {//選中事件回撥
                tvTime.setText(getTime(date));
            }
        })
             .build();
 pvTime.show();

或者

//條件選擇器
 pvOptions = new  OptionsPickerView.Builder(MainActivity.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(); 

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

三、自定義樣式

pvTime = new TimePickerView.Builder(MainActivity.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();
pvOptions = new  OptionsPickerView.Builder(MainActivity.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. 如果對以上的使用還有疑問的話,可參考demo程式碼,請戳我檢視demo程式碼

  2. 如果還是不能滿足產品的需求,那麼~ 默哀三秒鐘… 然後把原始碼下載下來自己做改動吧,原始碼基本都寫了註釋了,我也只能幫到這兒了。GitHub專案地址:Android-PickerView

  3. 關於方法名和引數的詳細說明,請參考Wiki:請戳我檢視Wiki文件,歡迎提Issue,提建議,Pull Request.
      

相關推薦

Android-PickerView系列介紹使用

宣告:本文為博主原創文章,轉載請註明出處:小嵩的部落格 一、介紹 Android-PickerView是一款仿iOS的PickerView控制元件,並封裝了時間選擇和選項選擇這兩種選擇器,詳細特性如下: WheelView —— 基礎控制元件

談談-Android-PickerView系列源碼解析

需求 動態 () comm tag 多個 來源 ntc 寬高 前言   WheelView想必大家或多或少都有一定了解, 它是一款3D滾輪控件,效果類似IOS 上面的UIpickerview 。按照國際慣例,先放一張效果圖:   以上是Android-PickerView

WPF入門教程系列六——布局介紹Canvas

mouse 建議 geo 自動調整 範圍 添加 ges ans colors 從這篇文章開始是對WPF中的界面如何布局做一個較簡單的介紹,大家都知道:UI是做好一個軟件很重要的因素,如果沒有一個漂亮的UI,功能做的再好也無法吸引很多用戶使用,而且沒有漂亮的界面,那麽普通用

探索ASP.NET MVC5系列~~~2.檢視---包含XSS防禦和非同步分部檢視的處理

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 4.共用其他檢視 不同控制器渲染同一個檢視檔案。這個應用場景還是比較多的,比如同樣是Article的集合,一個是顯示最新文章列表,一個是顯示文章列表,一個是顯示編輯推薦文章列表,基

探索ASP.NET MVC5系列~~~3.檢視---包含常用表單和暴力解猜防禦

其實任何資料裡面的任何知識點都無所謂,都是不重要的,重要的是學習方法,自行摸索的過程(不妥之處歡迎指正) 這幾天忙著幫別人普及安全,今天就把這篇文章結束掉,明天講下 “過度提交” 的防禦。這次開篇就激烈點==》爆破演示: 開啟Burp   設定監聽埠==》8080 設定一下代理:

死磕 java同步系列AQS終面試

問題 (1)AQS的定位? (2)AQS的重要組成部分? (3)AQS運用的設計模式? (4)AQS的總體流程? 簡介 AQS的全稱是AbstractQueuedSynchronizer,它的定位是為Java中幾乎所有的鎖和同步器提供一個基礎框架。 在之前的章節中,我們一起學習了ReentrantLock、R

內核調試神器SystemTap — 簡單介紹使用

kprobe utils its preview response art sym about output a linux trace/probe tool. 官網:https://sourceware.org/systemtap/ 簡單介紹 S

構建法--探索

構建 編寫 裏的 set namespace 對象 之前 定義 時也 問題一: 在Cust中無法找到telephone的get方法,這裏是因為我之前沒有telephone的成員變量,加上之後有沒有寫telephone的get方法; 解決方案:只要在Cust這個類裏面,加上

Docker系列CentOS7安裝Docker

add 程序 發布 更新 介紹 entos star alt ice 0、前言 整體架構目錄:ASP.NET Core分布式項目實戰-目錄 一、瞎扯淡(只講有用的) 感興趣的同學可以上網搜索一下docker具體的介紹。我這邊主要介紹偏實戰的內容,不喜勿噴,有問題也請

Gentoo無線網絡卡安裝基礎知識

已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top   最近接觸了一下Gentoo,在無線網絡卡方面遇到了問題,於是便廣泛的查詢資料,雖然到最後還是沒有搞定,但是把過程中積累下來的東西和大家分享分享,有什麼錯誤的地方,歡迎大家回帖指正 如

持續部署jenkinsgitlab

  持續部署之jenkins與gitlab(一) 主要部分 安裝部署Jenkins和gitlib 瞭解gitlib的常用命令 部署haproxy與tomcat環境 配置Jenkins使用gitlib更新程式碼 通過sonar實現程式碼檢測 實現gitlib觸發Jenkins自動部署 通過Jenkins實現自

JavaScript學習小白

好好學習 ,天天向上。Are you ready? 一、JS概述 1. 什麼是JS? Javascript是(基於物件)和(事件驅動)的(客戶端指令碼)語言。 2. 哪一年?哪家公司?誰?第一個名字? 1995 網景 布蘭登 livescript 3. W3C第一套標準:ECMA-262

ArcGIS for Android 100.3的學習應用 如何繪製點和線?

平時工作中,我們接觸到的地圖類開發平臺有很多,最常用的有高德,百度,騰訊地圖。而且它們都有自己的開發者平臺和文件供我們使用。基本能滿足我們的業務需求。 由於公司裡的專案會涉及一些地圖資料統計和展示方面的需求,同時也會發布一些地圖服務,所以選擇了使用在地圖方面比較牛逼的ArcGIS。 把平時遇

Qt開發中國象棋:工程概述

          最近看一篇關於C++實現中國象棋的部落格,於是基於該博主的框架,自己嘗試實現了一個簡單基於Qt的中國象棋遊戲,只是實現了簡單的人人對戰,還沒有實現較為複雜的人機對戰。主要涉及Qt的重繪事件QPaintEvent,用來實現棋盤的

Java多執行緒進階

一、執行緒池 1.1 執行緒池的建立 1.1.1 ThreadPoolExecutor 1.1.2 執行緒池的分類

Trinity介紹使用

<span class="s1">$TRINITY_HOME/util/filter_fasta_by_rsem_values.pl </span><span class="s1">--rsem_output=/path/to/RSEM.isoforms.result

Android四大元件Service全面解析

 在小杰的上一篇博文中給大家講了一下Android四大元件之一的Activity,也是最重要的,這一篇文章,給大家講一下Service。 什麼是Service  Service是Android的四大元件之一應用廣泛,它是一個能在後臺進行一個長時間的操作並且不提供使用者介面

Redis Cluster介紹搭建

原文地址:https:// https://blog.csdn.net/men_wen/article/details/72853078Redis Cluster 介紹與搭建1. Redis Cluster介紹Redis Cluster是Redis的分散式解決方案,在Redi

驗證碼破解技術四部曲環境搭建

前言 轉眼就變成大四狗了,大學期間做的比較深入的技術是爬蟲,但是爬蟲也有很多高階的技術沒有涉及,比如說驗證碼的破解便是其中之一,再加上我對其非常感興趣,於是乎,開始苦學影象處理、學習機器學習,驗證碼破解也有了些眉頭。 以下是我破解的幾種驗證碼。 1、最容易破解的

Android測試】LogCat命令列

預備知識   首先還是先了解一下上節沒有提到的知識,我覺得還是比較重要的,就是log分類的幾種級別(prority):   v (verbose)  d (debug)   i  (information)   w (warning)   e (error)   這