與雙輪聯(lián)動機(jī)制,10分鐘上手)
WheelPickerCompose WheelDateTimePicker 解析Compose 日期時間滾輪選擇器全參數(shù)與雙輪聯(lián)動機(jī)制10分鐘上手【免費(fèi)下載鏈接】WheelPickerComposeAdd Wheel Date - Time Picker in Android Jetpack Compose.項(xiàng)目地址: https://gitcode.com/gh_mirrors/wh/WheelPickerComposeWheelPickerCompose是一個 Android Jetpack Compose 輪選器組件庫其中的WheelDateTimePicker日期時間選擇器讓你一行代碼就能在 App 里加上滾輪撥號式的日期 時間選擇器支持范圍限制、12/24 小時制、月份天數(shù)自適應(yīng)等實(shí)用特性最低兼容 API 21。30秒認(rèn)識 WheelDateTimePickerWheelDateTimePicker 把「日期輪」和「時間輪」橫向并排在一個滾輪組里日期輪日、月、年三個可滾動列年列可隱藏時間輪時、分兩列切換 12 小時制后自動多出 AM/PM 列聯(lián)動任意一列停穩(wěn)吸附后整體選中的LocalDateTime立即更新且超出限制范圍會自動彈回核心入口函數(shù)定義在 WheelDateTimePicker.kt內(nèi)部組裝邏輯在 DefaultWheelDateTimePicker.kt。最快接入兩步裝好日期時間滾輪選擇器在settings.gradle的 repositories 中加入maven { url https://jitpack.io }在依賴中添加一行implementation com.github.commandiron:WheelPickerCompose:1.1.11?? 若最低版本低于 API 26需開啟coreLibraryDesugaring以支持java.time。然后在 Compose 界面里一行調(diào)用即可拿到選中結(jié)果WheelDateTimePicker { snappedDateTime - // 滾輪停穩(wěn)后回調(diào)返回完整的 LocalDateTime println(snappedDateTime) }更多完整示例可參考 Demo 應(yīng)用的 MainActivity.kt。WheelDateTimePicker 全參數(shù)速查表參數(shù)默認(rèn)值作用startDateTime當(dāng)前時間初始選中的日期時間minDateTime/maxDateTime不限選擇范圍的上下限超出自動彈回yearsRange1922..2122年份列范圍傳null則隱藏年份列日/月平分寬度timeFormatHOUR_24HOUR_2424小時制或AM_PM12小時制多出 AM/PM 列size256dp × 128dp整個選擇器尺寸日期輪與時間輪按比例分配寬度rowCount3可見行數(shù)調(diào)大如 5滾動視野更寬textStyle/textColorMaterial3 主題滾輪文字樣式與顏色selectorProperties主題高亮框選中高亮條的開關(guān)、圓角、填充色、邊框onSnappedDateTime空滾輪吸附停穩(wěn)時的回調(diào)參數(shù)為LocalDateTime雙輪聯(lián)動機(jī)制日與時如何握手 聯(lián)動的核心是單一數(shù)據(jù)源內(nèi)部只維護(hù)一個snappedDateTime精確到分鐘狀態(tài)。拆解分發(fā)日期輪組件DefaultWheelDatePicker.kt與時間輪組件DefaultWheelTimePicker.kt通過Row并排擺放各自只負(fù)責(zé)渲染和滾動。回調(diào)匯聚任一列停穩(wěn)后通過onSnappedDate/onSnappedTime回調(diào)類型見 SnappedDateTime.kt 中的密封類Day/Month/Year/Hour/Minute 五種事件把新值合并到共享狀態(tài)例如snappedDateTime.withMonth(...)。范圍校驗(yàn)合并后先檢查是否落在minDateTime ~ maxDateTime區(qū)間內(nèi)合法才寫入狀態(tài)非法則不更新。自動回彈回調(diào)返回一個校正后的索引滾輪組件據(jù)此執(zhí)行scrollToItem讓用戶看到滾輪彈回最近合法值——所以不可能選出超出范圍的時間。 細(xì)節(jié)亮點(diǎn)切換月份/年份時日期列會按該月實(shí)際天數(shù)含閏年 2 月 29 日自動重建不會出現(xiàn)2 月 31 日這種無效選項(xiàng)。滾動手感是怎么實(shí)現(xiàn)的滾輪列基于LazyColumn Snapper 慣性吸附庫見 WheelPicker.kt每個條目隨距離選中位動態(tài)計(jì)算X 軸旋轉(zhuǎn)rotationX最大約 ±20°營造立體滾筒感透明度漸變離選中位越遠(yuǎn)越淡聚焦中央時間格式切換時12 小時制的 12 點(diǎn)邊界12:xx AM 00 時由amPmHourToHour24等工具函數(shù)內(nèi)部換算對外始終輸出標(biāo)準(zhǔn)LocalDateTime業(yè)務(wù)側(cè)無需關(guān)心格式差異。常見場景配置建議預(yù)約下單minDateTime LocalDateTime.now()防止選擇過去時間生日選擇器yearsRange 1950..2020收窄年份列緊湊布局rowCount 5 較小size一眼看到更多候選項(xiàng)暗黑風(fēng)格用WheelPickerDefaults.selectorProperties自定義高亮條顏色與邊框小結(jié)WheelPickerCompose 的 WheelDateTimePicker 以共享狀態(tài) 事件回調(diào) 范圍校驗(yàn)三步實(shí)現(xiàn)日期與時間的無縫聯(lián)動配合 Snapper 吸附動畫幾乎零成本獲得原生的滾輪選時體驗(yàn)。搭配同庫的 WheelDatePicker.kt 與 WheelTimePicker.kt日期、時間、日期時間三類選擇場景一站搞定。【免費(fèi)下載鏈接】WheelPickerComposeAdd Wheel Date - Time Picker in Android Jetpack Compose.項(xiàng)目地址: https://gitcode.com/gh_mirrors/wh/WheelPickerCompose創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考