Create Range Time Picker Android Simple

Chuyện là hôm nay mình code 1 cái Range time picker ban đầu tính sẽ sử dụng thư viện luôn cho lẹ, tuy nhiên thời gian cũng thư thả nên mình cũng thử tự tạo bằng code của mình.

Và kết quả như này:

Nhìn cũng khá là ổn áp ấy chứ, nhưng cuối cùng không đúng yêu cầu của ứng dụng nên không dùng nữa =)))

Oke giờ mình sẽ Step by step cách làm:

1. Dựng layout y như hình ở trên:

Tạo file layout_rang_time_picker.xml

Các file liên quan background, icon, string, color download tại source code bên dưới.

2. Tạo interface dể trả về giá trị sau khi chọn.

3. Tạo PickerRangeTimeDialog.kt để xử lý các logic về chọn thời gian

  • Khai báo các giá trị đầu vào, các hàm format thời gian.

  • Tạo  newInstance cho PickerRangeTimeDialog

Instance này có thể truyền vào startTime- EndTime để hiện giá trị default mà bạn muốn.

Tiếp tục xử lý các logic ở onViewCreated

Đầu tiên đọc giá trị truyền vào.

Setup Picker format 24h và tiến hành lắng nghe khi picker thay đổi và update giá trị theo các mode tương ứng.

Tạo hàm setUpStartTime() cho mode start và thiết lập giá trị startTime vào picker.

Tương tự tạo hàm setUpEndTime() cho mode end và thiết lập giá trị endTime vào picker.

Oke đã xong các hàm cần thiết, chung ta quay lại onViewCreate để sử dụng các hàm trên.

Setup buttton OK để lấy giá trị.

Như bạn thấy để parser giá trị nhận được về format “HH:mm” thì đầu tiên mình đã chuyển nó về dạng đầy đủ “yyyy-MM-dd HH:mm“.

Sau đó mình muốn so sánh startTime không được quyền lớn hơn endTime mình format nó về date và tiến hành so sánh.

Và khi thoả mãn điều kiện thì giá trị sẽ được return về qua hàm callback:


Và không quên hàm quan trong để mở Dialog:

Source Github.

Nguyễn Linh

Nguyễn Linh

Chia sẻ để cùng tiến bộ...