টাইম পিকার

টাইম পিকার ব্যবহারকারীদের সময় বেছে নেওয়ার সুবিধা প্রদান করে। আপনার অ্যাপে টাইম পিকার প্রয়োগ করতে আপনি TimePicker এবং TimeInput কম্পোজেবল ব্যবহার করতে পারেন।

ধরন

দুই ধরনের টাইম পিকার আছে:

  • ডায়াল: ডায়ালের চারপাশে হ্যান্ডেল ঘুরিয়ে ব্যবহারকারীকে সময় সেট করতে দেয়।
  • ইনপুট: ব্যবহারকারীদের কীবোর্ড ব্যবহার করে সময় সেট করতে দেয়।

নিচের ছবিতে বাঁদিকে ডায়াল টাইম পিকার ও ডানদিকে ইনপুট টাইম পিকারের উদাহরণ দেওয়া হল:

একটি ডায়াল ও ইনপুট টাইম পিকার।
ছবি ১. একটি ডায়াল ও ইনপুট টাইম পিকার।

API সারফেস

টাইম পিকার প্রয়োগ করতে, TimePicker বা TimeInput কম্পোজেবল ব্যবহার করুন:

  • TimePicker: ডায়াল টাইম পিকার প্রয়োগ করে।
  • TimeInput: ইনপুট টাইম পিকার প্রয়োগ করে।

রাজ্য

TimePicker এবং TimeInput, দুটির জন্যই আপনাকে TimePickerState পাস করতে হবে। এর মাধ্যমে আপনি ডিফল্ট হিসেবে বেছে নেওয়া সময় সেট করতে পারবেন যা পিকারে দেখা যাবে। এছাড়াও, এটি পিকার ব্যবহার করে ব্যবহারকারীর বেছে নেওয়া সময় ক্যাপচার করে।

ডায়ালগ

ডায়ালগে টাইম পিকার দেখা যায়। এই গাইডের উদাহরণে ডায়ালগ ব্যবহার করা হয়নি। ডায়ালগ ব্যবহার করে এমন উদাহরণ দেখতে, সময় বেছে নেওয়ার জন্য ডায়ালগ সংক্রান্ত নির্দেশিকা দেখুন।

ডায়াল টাইম পিকার

এই স্নিপেট থেকে বোঝা যায়, কীভাবে একটি বেসিক ডায়াল টাইম পিকার প্রয়োগ করা যায়।

@Composable
fun DialExample(
    onConfirm: () -> Unit,
    onDismiss: () -> Unit,
) {
    val currentTime = Calendar.getInstance()

    val timePickerState = rememberTimePickerState(
        initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
        initialMinute = currentTime.get(Calendar.MINUTE),
        is24Hour = true,
    )

    Column {
        TimePicker(
            state = timePickerState,
        )
        Button(onClick = onDismiss) {
            Text("Dismiss picker")
        }
        Button(onClick = onConfirm) {
            Text("Confirm selection")
        }
    }
}

এই স্নিপেটে নিম্নলিখিত বিষয়গুলি বিবেচনা করুন:

  • Calendar.getInstance() বর্তমান সময়ের সাথে TimePickerState শুরু করে।
    • এই উদাহরণে java.util.Calendar ব্যবহার করা হয়েছে। বিকল্প হিসেবে সব Android ভার্সনে java.time.LocalTime ব্যবহার করতে, আপনার প্রোজেক্টে Java 8+ API ডিসুগারিং চালু করুন।
  • TimePicker কম্পোজ করার উপযুক্ত আইটেমটি টাইম পিকার দেখায়, timePickerState-কে প্যারামিটার হিসেবে গ্রহণ করে।
  • প্রয়োগের মধ্যে দুটি বোতাম অন্তর্ভুক্ত থাকে: একটি বেছে নেওয়া কনফার্ম করার জন্য এবং অন্যটি পিকার বাতিল করার জন্য।

এই প্রয়োগটি নিম্নলিখিতভাবে দেখানো হয়:

একটি ডায়াল টাইম পিকার। ব্যবহারকারী ডায়াল ব্যবহার করে সময় বেছে নিতে পারবেন।
ছবি ২. একটি ডায়াল টাইম পিকার।

ইনপুট টাইম পিকার

এই স্নিপেট দেখায় যে কীভাবে একটি বেসিক ইনপুট স্টাইল টাইম পিকার প্রয়োগ করতে হয়।

@Composable
fun InputExample(
    onConfirm: () -> Unit,
    onDismiss: () -> Unit,
) {
    val currentTime = Calendar.getInstance()

    val timePickerState = rememberTimePickerState(
        initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
        initialMinute = currentTime.get(Calendar.MINUTE),
        is24Hour = true,
    )

    Column {
        TimeInput(
            state = timePickerState,
        )
        Button(onClick = onDismiss) {
            Text("Dismiss picker")
        }
        Button(onClick = onConfirm) {
            Text("Confirm selection")
        }
    }
}

এই প্রয়োগের ক্ষেত্রে মনে রাখার মতো গুরুত্বপূর্ণ পয়েন্ট:

  • স্ট্রাকচারটি মূলত ডায়াল টাইম পিকারের মতোই, তবে প্রধান পার্থক্য হল TimePicker-এর পরিবর্তে TimeInput-এর ব্যবহার।
  • timePickerState-এর জন্য is24Hour প্যারামিটার স্পষ্টভাবে true-এ সেট করা আছে। ডিফল্ট হিসেবে, এই ভ্যালু হল false।

এই প্রয়োগটি নিম্নলিখিতভাবে দেখানো হয়:

একটি ইনপুট টাইম পিকার। ব্যবহারকারী টেক্সট ফিল্ড ব্যবহার করে সময় লিখতে পারবেন।
ছবি ৩. ইনপুট টাইম পিকার।

রাজ্য ব্যবহার করুন

টাইম পিকারে ব্যবহারকারীর বেছে নেওয়া সময় ব্যবহার করতে, আপনার onConfirm ফাংশনে উপযুক্ত TimePickerState পাস করুন। প্যারেন্ট কম্পোজেবল তখন TimePickerState.hour এবং TimePickerState.minute-এর মাধ্যমে বেছে নেওয়া সময় অ্যাক্সেস করতে পারে।

নিম্নলিখিত স্নিপেট থেকে বোঝা যাবে যে এটি কীভাবে করতে হবে:

@Composable
fun DialUseStateExample(
    onConfirm: (TimePickerState) -> Unit,
    onDismiss: () -> Unit,
) {
    val currentTime = Calendar.getInstance()

    val timePickerState = rememberTimePickerState(
        initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
        initialMinute = currentTime.get(Calendar.MINUTE),
        is24Hour = true,
    )

    Column {
        TimePicker(
            state = timePickerState,
        )
        Button(onClick = onDismiss) {
            Text("Dismiss picker")
        }
        Button(onClick = { onConfirm(timePickerState) }) {
            Text("Confirm selection")
        }
    }
}

আপনি তখন কম্পোজেবলকে এইভাবে কল করতে পারেন:

var selectedTime: TimePickerState? by remember { mutableStateOf(null) }

// ...

DialUseStateExample(
    onDismiss = {
        showDialExample = false
    },
    onConfirm = {
            time ->
        selectedTime = time
        showDialExample = false
    },
)

// ...

if (selectedTime != null) {
    val cal = Calendar.getInstance()
    cal.set(Calendar.HOUR_OF_DAY, selectedTime!!.hour)
    cal.set(Calendar.MINUTE, selectedTime!!.minute)
    cal.isLenient = false
    Text("Selected time = ${formatter.format(cal.time)}")
} else {
    Text("No time selected.")
}

আরও বিবরণের জন্য, স্নিপেট অ্যাপে সম্পূর্ণ প্রয়োগ দেখুন।

অতিরিক্ত রিসোর্স