Android Date Time Picker Dialog

أدوات اختيار التاريخ والوقت في أندرويد تُستخدم كثيرًا في تطبيقات الأندرويد. في هذا البرنامج التعليمي، سنقوم بتوضيح استخدام محدد التاريخ و محدد الوقت كجلسة حوار في تطبيق الأندرويد الخاص بنا. تُستخدم هذه المكونات لتحديد التاريخ والوقت في واجهة مستخدم مُخصصة. سنستخدم فئات DatePickerDialog و TimePickerDialog بالتعاون مع فئة Calendar في كود تطبيق الأندرويد الخاص بنا لتحقيق هذا الغرض.

مربع حوار اختيار التاريخ ومربع حوار اختيار الوقت في أندرويد

على الرغم من أن محدد التاريخ ومحدد الوقت يمكن استخدامهما كعناصر واجهة مستخدم مستقلة، إلا أنهما يشغلان مساحة أكبر على الشاشة. لذلك، استخدامهما داخل حوار يعتبر خيارًا أفضل. لحسن الحظ، يوفر أندرويد فئتي DatePickerDialog و TimePickerDialog بالإضافة إلى ذلك، فئتي onDateSetListener() و onTimeSetListener() تحتوي على طرق انتظار انتهاء تحديد التاريخ والوقت على التوالي. تتألف فئة DatePickerDialog من بناء بـ 5 وسيطة مع المعلمات المذكورة أدناه.

  1. Context: يتطلب سياق التطبيق
  2. CallBack Function: يتم استدعاء onDateSet() عندما يقوم المستخدم بتعيين التاريخ بالمعلمات التالية:
  • int year : سيتم تخزين السنة المحددة حاليًا من الحوار
  • int monthOfYear : سيتم تخزين الشهر الحالي المحدد من الحوار
  • int dayOfMonth : سيتم تخزين اليوم الحالي المحدد من الحوار
  1. int mYear : يظهر العام الحالي الذي يكون مرئيًا عند ظهور حوار الحوار
  2. int mMonth : يظهر الشهر الحالي الذي يكون مرئيًا عند ظهور حوار الحوار
  3. int mDay : يظهر اليوم الحالي الذي يكون مرئيًا عند ظهور حوار الحوار

تتألف فئة TimePickerDialog من مُنشئ مكون من 5 حجج مع المعلمات المدرجة أدناه.

  1. Context: يتطلب سياق التطبيق
  2. CallBack Function: يتم استدعاء onTimeSet() عندما يضبط المستخدم الوقت بالمعلمات التالية:
  • int hourOfDay : سيتم تخزين الساعة الحالية المحددة من اليوم من الحوار
  • int minute : سيتم تخزين الدقيقة الحالية المحددة من الحوار
  1. int mHours : يظهر الساعة الحالية الذي يكون مرئيًا عند ظهور حوار الحوار
  2. int mMinute : يظهر الدقيقة الحالية التي تكون مرئية عندما يظهر الحوار
  3. boolean false : إذا تم تعيينه على false ، فسوف يظهر الوقت بتنسيق 24 ساعة وإلا لا

مثال على بنية مشروع محدد التاريخ والوقت في أندرويد

كود مشروع مربع حوار تحديد التاريخ والوقت في أندرويد

تتكون activity_main.xml من زرين لاستدعاء مربعي حوار تحديد التاريخ والوقت وتعيين الوقت الذي اختاره المستخدم في عرضي EditText. يتم توفير رمز XML أدناه. activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/in_date"
        android:layout_marginTop="82dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SELECT DATE"
        android:id="@+id/btn_date"
        android:layout_alignBottom="@+id/in_date"
        android:layout_toRightOf="@+id/in_date"
        android:layout_toEndOf="@+id/in_date" />

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/in_time"
        android:layout_below="@+id/in_date"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SELECT TIME"
        android:id="@+id/btn_time"
        android:layout_below="@+id/btn_date"
        android:layout_alignLeft="@+id/btn_date"
        android:layout_alignStart="@+id/btn_date" />

</RelativeLayout>

يتم توفير فئة MainActivity.java أدناه:

package com.journaldev.datetimepickerdialog;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity implements
        View.OnClickListener {

    Button btnDatePicker, btnTimePicker;
    EditText txtDate, txtTime;
    private int mYear, mMonth, mDay, mHour, mMinute;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnDatePicker=(Button)findViewById(R.id.btn_date);
        btnTimePicker=(Button)findViewById(R.id.btn_time);
        txtDate=(EditText)findViewById(R.id.in_date);
        txtTime=(EditText)findViewById(R.id.in_time);

        btnDatePicker.setOnClickListener(this);
        btnTimePicker.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        if (v == btnDatePicker) {

            // الحصول على التاريخ الحالي
            final Calendar c = Calendar.getInstance();
            mYear = c.get(Calendar.YEAR);
            mMonth = c.get(Calendar.MONTH);
            mDay = c.get(Calendar.DAY_OF_MONTH);


            DatePickerDialog datePickerDialog = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {

                            txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);

                        }
                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
        }
        if (v == btnTimePicker) {

            // الحصول على الوقت الحالي
            final Calendar c = Calendar.getInstance();
            mHour = c.get(Calendar.HOUR_OF_DAY);
            mMinute = c.get(Calendar.MINUTE);

            // تشغيل مربع حوار اختيار الوقت
            TimePickerDialog timePickerDialog = new TimePickerDialog(this,
                    new TimePickerDialog.OnTimeSetListener() {

                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay,
                                              int minute) {

                            txtTime.setText(hourOfDay + ":" + minute);
                        }
                    }, mHour, mMinute, false);
            timePickerDialog.show();
        }
    }
}

في الشيفرة أعلاه، قمنا بإنشاء كائن تقويم باستخدام Calendar.getInstance() لعرض التاريخ والوقت الحالي باستخدام الحقول الثابتة الخاصة به. ملحوظة: تعتبر واجهة عرض التقويم والساعة هي واجهة المستخدم الافتراضية كما هو موضح في AppCompat Theme. فيما يلي الإخراج الذي أنتجته تطبيقنا لمثال مشبه بالتقويم والوقت على نظام Android. يأتي هذا الى نهاية شرح مثال حوار اختيار التاريخ والوقت على Android. يمكنك تحميل المشروع النهائي مشروع Android DateTimePickerDialog من الرابط أدناه.

تحميل مشروع اختيار تاريخ ووقت على Android

Source:
https://www.digitalocean.com/community/tutorials/android-date-time-picker-dialog