Header ads

Header ads
» » TimePicker

TimePicker trong Android

TimePicker là một ui widget cho phép người sử dụng chọn thời gian trong ngày theo chế độ AM/PM, chọn theo chế độ 24h. Thời gian hiển thị gồm: Giờ, Phút, Giây và theo dạng đồng hồ hiển thị. Nếu chúng ta muốn hiển thị đồng hồ theo dạng dialog thì chúng ta phải sử dụng lớp TimePickerDialog.

android.widget.TimePicker là lớp con của FrameLayout.

TimePicker code trong XML

  <TimePicker  android:id="@+id/simpleTimePicker"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:timePickerMode="spinner"/>

 


Các phương thức thường dùng của TimePicker

1. setCurrentHour(Integer currentHour): Phương thức này dùng để thiết lập ngày hiện tại cho một TimePicker

Từ API 23 trở về trước thì sử dụng phương thức setCurrentHour(). Còn từ API 23 trở về sau sử dụng phương thức setHour(Integer hour). Trong phương thức này chỉ có một tham số là số nguyên được sử dụng thiết lập giá trị giờ.

Ví dụ sau thiết lập giờ hiện tại là 5.

  TimePicker simpleTimePicker=(TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time picker  // set the value for current hours  simpleTimePicker.setCurrentHour(5); // Trước api 23  simpleTimePicker.setHour(5); // sau api 23

2. setCurrentMinute(Integer currentMinute): Phương thức này dùng để thiết lập ngày hiện tại cho một TimePicker

Từ API 23 trở về trước thì sử dụng phương thức setCurrentMinute(). Còn từ API 23 trở về sau sử dụng phương thức setMinute(Integer minute). Trong phương thức này chỉ có một tham số là số nguyên được sử dụng thiết lập giá trị phút.

Ví dụ sau thiết lập phút hiện tại là 35.

  TimePicker simpleTimePicker=(TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time picker  // set the value for current hours  simpleTimePicker.setCurrentMinute(35); // Trước api 23  simpleTimePicker.setMinute(35); // sau api 23

3. getCurrentHour(): Phương thức này lấy giờ hiện tại của TimePicker

Từ API 23 trở về trước thì sử dụng phương thức getCurrentHour(). Còn từ API 23 trở về sau sử dụng phương thức getHour(). Phương thức này trả về giá trị số nguyên

Code sau lấy giờ hiện tại của TimePicker

  TimePicker simpleTimePicker = (TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time  pickerint hours =simpleTimePicker.getCurrentHour(); // Trước api 23  int hours =simpleTimePicker.getHour(); // sau api 23

4. getCurrentMinute(): Phương thức này lấy phút hiện tại của TimePicker

Từ API 23 trở về trước thì sử dụng phương thức getCurrentMinute(). Còn từ API 23 trở về sau sử dụng phương thức getMinute(). Phương thức này trả về giá trị số nguyên

Code sau lấy phút hiện tại của TimePicker

  TimePicker simpleTimePicker = (TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time picker  int minutes = simpleTimePicker.getCurrentMinute(); // trước api 23  int minutes = simpleTimePicker.getMinute(); // sau api 23

5. setIs24HourView(Boolean is24HourView): Phương thức dùng thiết lập chế độ giờ hiển thì là 24h hay là hiển thị dạng AM/PM. Trong phương thức này thiết lập chế độ true/false. Nếu giá trị true chế độ hiển thị theo 24h, nếu false hiển thị theo chế độ AM/PM

Ví dụ thiết lập chế độ cho một TimePicker

  TimePicker simpleTimePicker = (TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time picker  simpleTimePicker.setIs24HourView(true); // set 24 hours mode for the time picker

6. is24HourView(): Phương này kiểm tra xem chế độ hiện tại là 24h hay AM/PM. Phương thức này trả về true nếu nó đang ở chế độ 24h ngược lại false đang ở chế độ AM/PM

Ví dụ sau lấy chế độ hiển thị hiện tại của TimePicker

  TimePicker simpleTimePicker = (TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time picker  Boolean mode=simpleTimePicker.is24HourView(); // Kiểm tra xem chế độ hiện tại của TimePicker  

7. setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener): Phương thức này thiết lập hàm callback mà chỉ rằng thời gian đã được chỉnh sửa bởi người dùng.

Phương thức onTimeChanged(TimePicker view, int hourOfDay, int minute) lắng nghe sự kiện từ người sử dụng, nó gồm 3 tham số: TimePicker, hourOfDay giờ trong ngày, minute dùng để lấy phút sau khi thay đổi thời gian của TimePicker.

  TimePicker simpleTimePicker = (TimePicker)findViewById(R.id.simpleTimePicker); // initiate a time picker    simpleTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {  @Override  public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {    }  });

 


Một số thuộc tính thường dùng của TimePicker

1. android:id: Là thuộc tính duy nhất của TimePicker.

  <TimePicker  android:id="@+id/simpleTimePicker"  android:layout_width="wrap_content"  android:layout_height="wrap_content"/> <!-- id of a time picker -->

Dựa vào Id ta sẽ lấy được control theo đúng Id này, xem code bên dưới để biết cách lấy control theo Id:

  TimePicker simpleTimePicker = (TimePicker)findViewById(R.id.simpleTimePicker);

2. android:timePickerMode: thuộc tính này thường được sử dụng để thiết lập chế độ hiển thị dạng đồng hồ là spinner hay là clock. trước API 21 mặc định chế độ là clock, sau API 21 phải thiết lập chế độ là spinner

  <TimePicker  android:id="@+id/simpleTimePicker"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:timePickerMode="spinner" /> <!-- time picker mode of a time picker -->

3. android:background: Thuộc tính này thiết lập màu nền hoặc image trong thư mục drawable cho TimePicker. 

  <TimePicker      android:id="@+id/simpleTimePicker"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:timePickerMode="spinner"      android:background="#F88F00" /> <!-- orange background color for the time picke

Thiết lập màu nên trong java class

  TimePicker simpleTimePicker=(TimePicker)findViewById(R.id.simpleTimePicker); //initiate a time picker  simpleTimePicker.setBackgroundColor(Color.YELLOW); //Yellow background color for the background of a time picker

4. android:padding: Thuộc tính này xác định khoảng cách từ đường viền của TimePicker với nội dung nó chứa: left, right, top or bottom. Cũng ví dụ trên bây giờ chúng ta xác định padding=50dp từ mọi phía của TimePicker.

  <TimePicker  android:id="@+id/simpleTimePicker"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:timePickerMode="spinner"  android:layout_centerHorizontal="true"  android:layout_marginTop="50dp"  android:padding="50dp"/> <!-- 20dp padding from all the sides of a time picker


Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có một TimePicker và một TextView. Khi người sử dụng tùy chỉnh giờ trên TimePicker chúng ta sẽ lấy giá trị của nó rồi hiển thị trên TextView Toast. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml thiết kế giao diện sau:

 

Bước 1: Tạo một project tên là TimePickerFile->New->Android Application Project điền các thông tin ->Next ->Finish

Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code, chúng ta sẽ tạo các đối tượng SeekBar trong  Relative Layout.

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context=".MainActivity">        <TimePicker          android:id="@+id/simpleTimePicker"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_centerHorizontal="true"          android:layout_marginTop="50dp"          android:background="#090"          android:padding="20dp"          android:timePickerMode="spinner" />        <TextView          android:id="@+id/time"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_centerHorizontal="true"          android:text="Time Is ::"          android:textColor="#090"          android:textSize="20sp"          android:textStyle="bold" />    </RelativeLayout>

Bước 3: Mở app -> src ->MainActivity.java 

Trong bươc này chúng ta khởi tạo TimePicker TextView. TextView dùng để hiển thị thời gian của TimePicker. Trong bước này chúng ta thiết lập sự kiện cho TimePicker thông qua sự kiện setOnTimeChangedListener() chúng ta sẽ lấy giá trị thời gian hiện tại của TimePicker sau đó hiển thị ra TextView Toast.

  package hiepsiit.com.timepicker;    import android.app.Activity;  import android.os.Bundle;  import android.view.Menu;  import android.view.MenuItem;  import android.widget.TextView;  import android.widget.TimePicker;  import android.widget.Toast;    public class MainActivity extends Activity {  	TextView time;      TimePicker simpleTimePicker;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  		//  initiate the view's          time = (TextView) findViewById(R.id.time);          simpleTimePicker = (TimePicker) findViewById(R.id.simpleTimePicker);          simpleTimePicker.setIs24HourView(false); // used to display AM/PM mode          // perform set on time changed listener event          simpleTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {              @Override              public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {                  // display a toast with changed values of time picker                  Toast.makeText(getApplicationContext(), hourOfDay + "  " + minute, Toast.LENGTH_SHORT).show();                  time.setText("Time is :: " + hourOfDay + " : " + minute); // set the current time in text view              }          });  	}  }  

Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11  and target sdk 21.


Kết quả khi chạy ứng dụng:

Sau đó Tùy chỉnh trên TimePicker:


Ví dụ hiển thị dạng TimePickerDialog 

Trong ví dụ này chúng ta sẽ làm ứng dụng gồm có 1 EditText. Khi người sử dụng click vào EditText sẽ hiển thị TimePicker dạng dialog (hộp thoại). sau đó, sẽ lấy giá trị giờ khi người sử dụng chọn giờ trên TimePicker.Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml thiết kế giao diện sau:

 

Bước 1: Tạo một project tên là TimePickerDialogFile->New->Android Application Project điền các thông tin ->Next ->Finish

Bước 2: Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code, chúng ta sẽ tạo các đối tượng EditText trong  Relative Layout.

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context=".MainActivity">        <EditText          android:id="@+id/time"          android:layout_width="200dp"          android:layout_height="wrap_content"          android:layout_centerHorizontal="true"          android:hint="Select Time..."          android:textColor="#090"          android:textColorHint="#090"          android:background="#d4d4d4"          android:padding="15dp"          android:textSize="20sp"          android:textStyle="bold" />    </RelativeLayout>

Bước 3: Mở app -> src ->MainActivity.java

Trong bước này chúng ta khỏi tạo cho EditText, thiết lập sự kiện cho EditText. Khi người sử dụng click vào EditText sẽ xuất hiện một Dialog TimePicker để người sử dụng thiết lập thời gian. Cuối cùng thời gian xuất hiện trên EditText

  package hiepsiit.com.timepickerdialog;    import java.sql.Date;    import android.app.Activity;  import android.app.TimePickerDialog;  import android.app.TimePickerDialog.OnTimeSetListener;  import android.os.Bundle;  import android.util.Log;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.view.View.OnClickListener;  import android.widget.Button;  import android.widget.EditText;  import android.widget.TimePicker;  import android.widget.Toast;  // chú ý import thư viện này  import java.util.Calendar;  public class MainActivity extends Activity {  	 EditText txtTime;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  		 //  initiate the edit text  		txtTime = (EditText) findViewById(R.id.txtTime);          // perform click event listener on edit text  		txtTime.setOnClickListener(new OnClickListener() {  			  			@Override  			public void onClick(View v) {  				// TODO Auto-generated method stub  				showTimePickerDialog();				  			}  		});  		  	}  	/**  	 * Hàm hiển thị TimePickerDialog  	 */  	 public void showTimePickerDialog()  	 {  		Calendar calendar = Calendar.getInstance();          final int hour = calendar.get(Calendar.HOUR_OF_DAY);           int minute = calendar.get(Calendar.MINUTE);           TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {               @Override               public void onTimeSet(TimePicker view, int hourOfDay, int minute) {              	 String s=hourOfDay +":"+minute;              	 int hourTam=hourOfDay;              	 if(hourTam>12)              	 hourTam=hourTam-12;              	 txtTime.setText              	 (hourTam +":"+minute +(hourOfDay>12?" PM":" AM"));              	 //lưu giờ thực vào tag              	 txtTime.setTag(s);               }           }, hour, minute, true);           timePickerDialog.setTitle("Chọn thời gian");           timePickerDialog.show();  	 }	  }  

 


Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 11  and target sdk 21.


Kết quả khi chạy ứng dụng:

Sau đó click vào EditText:

Chọn thời gian trên TimePickerDialog, Click Ok



Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn