目标:学习时间日期和时钟的设置
picker的计算机专业解释是“选择器”。
简单翻译一下:
TimePicker 时间选择器
DatePicker 日期选择器
AnalogClock 模拟时钟
DigitalClock 数字时钟
一、TimePicker
1.TimePicker使用的监听器接口是OnTimeChangedListener
2.TimePicker默认显示系统当前时间,可以使用setCurrentHour和setCurrentMinute两个方法设置默认显示时间
3.可使用setIs24HourView方法设置TimePicker以24小时制显示
4.获取TimePicker的当前时间,使用getCurrentHour和getCurrentMinute两个方法
模拟器android4.2显示效果(非24小时制):
真机android2.3.7显示效果(非24小时制):
真机android2.3.7显示效果(24小时制):
Java代码:
package com.haut.a07_timepicker; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TimePicker; import android.widget.TimePicker.OnTimeChangedListener; import android.widget.Toast; public class MainActivity extends Activity { private TimePicker timePicker; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); timePicker = (TimePicker) findViewById(R.id.timePickerId); button = (Button) findViewById(R.id.buttonId); // 为timePicker创建监听器 TimePickerListener timeListener = new TimePickerListener(); timePicker.setOnTimeChangedListener(timeListener); // 为button创建监听器 ButtonListener buttonListener = new ButtonListener(); button.setOnClickListener(buttonListener); // TimePicker默认显示当前时间,可以手动制定它的默认显示时间 timePicker.setCurrentHour(12); timePicker.setCurrentMinute(0); // 设置显示格式为24小时制 timePicker.setIs24HourView(true); } class TimePickerListener implements OnTimeChangedListener { public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { // 使用Toast显示TimePicker的时间 String time = hourOfDay + "点:" + minute + "分"; Toast.makeText(MainActivity.this, time, Toast.LENGTH_SHORT).show(); } } class ButtonListener implements OnClickListener { public void onClick(View v) { String time = timePicker.getCurrentHour() + "点:" + timePicker.getCurrentMinute() + "分"; Toast.makeText(MainActivity.this, time, Toast.LENGTH_SHORT).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }xml代码:
<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:background="@drawable/folwer1" tools:context=".MainActivity" > <TimePicker android:id="@+id/timePickerId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"/> <Button android:id="@+id/buttonId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取设置时间" android:layout_below="@id/timePickerId" android:layout_centerHorizontal="true" android:layout_marginTop="50dp"/> </RelativeLayout>
二、DatePicker
1.DatePicker没有像TimePicker一样类似OnTimeChangedListener的监听器接口。有对话框,以后补充。
补充见:DatePicker的对话框设置
模拟器android4.2效果图:
手机android2.3.7效果图:
java代码:
package com.haut.a07_datepicker; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.Toast; public class MainActivity extends Activity { private DatePicker datePicker; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datePicker = (DatePicker)findViewById(R.id.datePickerId); button = (Button)findViewById(R.id.buttonId); //为button创建监听器 ButtonListener buttonListener = new ButtonListener(); button.setOnClickListener(buttonListener); } class ButtonListener implements OnClickListener{ public void onClick(View v) { String date = datePicker.getYear() + "年:" + datePicker.getMonth() + "月:" + datePicker.getDayOfMonth() + "日"; Toast.makeText(MainActivity.this, date, Toast.LENGTH_SHORT).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
xml代码:
<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:background="@drawable/leaf" tools:context=".MainActivity" > <DatePicker android:id="@+id/datePickerId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"/> <Button android:id="@+id/buttonId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取设置日期" android:layout_below="@id/datePickerId" android:layout_centerHorizontal="true" android:layout_marginTop="50dp"/> </RelativeLayout>
三、AnalogClock
显示的时钟时间会随着系统时间的变化而变化。
代码比较简单就不贴了,只是在xml布局文件中添加一个<AnalogClock/>标签。
模拟器android4.2效果图:
手机android2.3.7效果图:
四、DigitalClock
显示的时钟时间会随着系统时间的变化而变化。
模拟器android4.2效果图:
手机android2.3.7效果图:
xml代码:
<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:background="@drawable/folwer" tools:context=".MainActivity" > <DigitalClock android:id="@+id/digitalClockId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="100dp" android:textColor="#ff0000" android:textSize="30sp" /> </RelativeLayout>具体的操作以后用到再具体补充~