1.TimePick控件
TimePick控件显示一个可以更改时间的空间,不过好像并没有什么用(估计是我没用到),下面代码(代码是我写的一个小闹钟,不过提示时间到了的对话框,提示的比较慢):
就是这样子。
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: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/timePicker"
android:layout_height="wrap_content"
android:layout_width="match_parent"
/>
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/timePicker"
android:text="@string/button1"
/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/button1"
android:text="@string/button2"
/>
</RelativeLayout>
TimePickActivity类:
package com.example.timepick;
import java.util.Calendar;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
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 TimepickActivity extends ActionBarActivity {
private int h,m = 0;;
private TimePicker timePicker;
private Button button1,button2;
private AlarmManager alarmManager=null;
private Calendar currentTime = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timepick);
timePicker = (TimePicker) findViewById(R.id.timePicker);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new ButtonListenerOne());//获取时分值
//设置闹钟(这里不用看是闹钟设置时间的)
currentTime = Calendar.getInstance();//获取日期对象
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new ButtonListenerTwo());
timePicker.setIs24HourView(true);//是否设置为24小时制
timePicker.setOnTimeChangedListener(new TimeListener());//获取时分值
}
//获取TimePick时间
class ButtonListenerOne implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
h = timePicker.getCurrentHour();
m = timePicker.getCurrentMinute();
//System.out.println("h:"+h+" m:"+m);
Toast.makeText(TimepickActivity.this, "当前设置的时间为:"+h+":"+m, Toast.LENGTH_LONG).show();
}
}
//读取TimePick时间(这个是TimePick改到那里提示到哪里。)
class TimeListener implements OnTimeChangedListener{
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
/**
* view 当前选中TimePicker控件
* hourOfDay 当前控件选中TimePicker 的小时
* minute 当前选中控件TimePicker 的分钟
*/
//System.out.println("h:"+ hourOfDay +" m:"+minute);
Toast.makeText(TimepickActivity.this, "当前设置的时间为:"+hourOfDay+":"+minute, Toast.LENGTH_LONG).show();
}
}
}
AlarmReceiver类:
package com.example.timepick;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent data) {
// TODO Auto-generated method stub
//Intent对象
Intent intent=new Intent(context, AlarmActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
2.TimePickDialog
这个方法设置闹钟必写的,下面代码:
//设置闹钟(button2绑定)
class ButtonListenerTwo implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
currentTime.setTimeInMillis(System.currentTimeMillis()); //设置Calendar对象
int mHour=currentTime.get(Calendar.HOUR_OF_DAY);
int mMinute=currentTime.get(Calendar.MINUTE);
new TimePickerDialog(TimepickActivity.this,new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
currentTime.setTimeInMillis(System.currentTimeMillis());//设置当前时间
currentTime.set(Calendar.HOUR_OF_DAY, hourOfDay);//设置小时
currentTime.set(Calendar.MINUTE, minute); //设置分钟
currentTime.set(Calendar.SECOND, 0); //设置秒数
currentTime.set(Calendar.MILLISECOND, 0); //设置毫秒
//建立Intent和PendingIntent,来调用目标组件
Intent intent = new Intent(TimepickActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(TimepickActivity.this, 0, intent, 0);
//获取闹钟管理的实例
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
//设置闹钟
am.set(AlarmManager.RTC_WAKEUP, currentTime.getTimeInMillis(), pendingIntent);
//设置周期闹钟
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+(10*1000), (24*60*60*1000), pendingIntent);
Toast.makeText(TimepickActivity.this, "闹钟设置好了", Toast.LENGTH_LONG).show();
}
} , mHour, mMinute, true).show();//备注这个必须要有不然不会提示的(因为你没执行)
}
}
AlarmReceiver类:
package com.example.timepick;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent data) {
// TODO Auto-generated method stub
//Intent对象
Intent intent=new Intent(context, AlarmActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
AlarmActivity类(显示对话框的):
package com.example.timepick;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
public class AlarmActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//显示对话框
new AlertDialog.Builder(AlarmActivity.this).
setTitle("闹钟").//设置标题
setMessage("时间到了!").//设置内容
setPositiveButton("知道了", new OnClickListener(){//设置按钮
public void onClick(DialogInterface dialog, int which) {
AlarmActivity.this.finish();//关闭Activity
}
}).create().show();
}
}
取消闹钟button:
btton3.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(TimePickActivity.this,AlamrReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(TimePickActivity.this, 0, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.cancel(pi);
//tv.setText("闹钟取消");
Toast.makeText(TimepickActivity.this, "闹钟取消了",Toast.LENGTH_LONG).show();
}
});
备注:(不然不会提示对话框的)
mainfest中必须要执行这个(位置在application中,activity下):
<receiver android:name=".AlarmReceiver" android:process=":remote" />
样式图片大概就是这样(网上找的图片)