টাইম পিকার

টাইম পিকার ব্যবহারকারীদের সময় বেছে নেওয়ার একটি উপায় প্রদান করে। আপনার অ্যাপে টাইম পিকার প্রয়োগ করতে, আপনি 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 desugaring চালু করুন।
  • 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.")
}

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

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