Dialog&Notification&OptionsMenu练习
下面的menu没有意义,仅仅是个练习而已,看图先:
布局:
view:package com.dc.app;import java.util.Calendar;import android.app.Activity;import android.app.AlertDialog;import android.app.DatePickerDialog;import android.app.Dialog;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.ProgressDialog;import android.app.TimePickerDialog;import android.content.DialogInterface;import android.graphics.Color;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.DatePicker;import android.widget.EditText;import android.widget.TextView;import android.widget.TimePicker;import android.widget.Toast;public class AppActivity extends Activity {private static final String TAG="AppActivity";private TextView textViewName,textViewAge;private EditText editTextName,editTextAge;private final int menuIdRegiste=1;private final int menuIdBack=2;private final int menuIdLogin=3;private final int menuIdDate=4;private final int menuIdTime=5; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.v(TAG,"start"); textViewName=(TextView)this.findViewById(R.id.textViewName); textViewName.setTextColor(Color.BLUE); textViewName.setBackgroundColor(Color.WHITE); editTextName=(EditText)this.findViewById(R.id.editTextName); textViewAge=(TextView)this.findViewById(R.id.textViewAge); textViewAge.setTextColor(Color.BLUE); textViewAge.setBackgroundColor(Color.WHITE); editTextAge=(EditText)this.findViewById(R.id.editTextAge); } public boolean onCreateOptionsMenu(Menu menu) {//初始化Menu菜单选择项 super.onCreateOptionsMenu(menu); //添加菜单项,比如: menu.add(0, menuIdRegiste, 0, R.string.registe).setShortcut('1', 'r');//设置快捷键 menu.add(0, menuIdBack, 0, R.string.back).setShortcut('2', 'b');//设置快捷键 menu.add(0, menuIdLogin, 0, R.string.login).setShortcut('3', 'l');//设置快捷键 menu.add(0, menuIdDate, 0, R.string.date).setShortcut('4', 'd');//设置快捷键 menu.add(0, menuIdTime, 0, R.string.time).setShortcut('5', 't');//设置快捷键 //添加其他菜单项。。。。。。 return true; } public boolean onPrepareOptionsMenu(Menu menu) {// super.onPrepareOptionsMenu(menu); //这里可以事先设置菜单的可见性,如果都可见,可以不设置 menu.findItem(menuIdRegiste).setVisible(true).setIcon(android.R.drawable.ic_menu_add);//设置菜单项可见性 menu.findItem(menuIdBack).setVisible(true).setIcon(android.R.drawable.ic_menu_save);//设置菜单项可见性 menu.findItem(menuIdLogin).setVisible(true).setIcon(android.R.drawable.ic_menu_camera);//设置菜单项可见性 menu.findItem(menuIdDate).setVisible(true).setIcon(android.R.drawable.ic_menu_compass);//设置菜单项可见性 menu.findItem(menuIdTime).setVisible(true).setIcon(R.drawable.icon);//设置菜单项可见性 return true; } public boolean onOptionsItemSelected(MenuItem item) {//选择了一个菜单项的时候调用 //这里可以预先处理想要的变量 switch (item.getItemId()) { case menuIdRegiste://一项一项的处理想要做的,不用我介绍了吧 Toast.makeText(this, R.string.menuIdRegisteContent, Toast.LENGTH_LONG).show(); showDialog(DIALOG_KEY); return true; case menuIdBack: Toast.makeText(this, R.string.menuIdBackContent, Toast.LENGTH_LONG).show(); showNotify(); return true; case menuIdLogin: showDialog(DIALOG_LOGIN); return true; case menuIdDate: showDialog(DIALOG_DATE); return true; case menuIdTime: showDialog(DIALOG_TIME); return true; } return super.onOptionsItemSelected(item); } private static final int DIALOG_KEY = 0; private static final int DIALOG_LOGIN = 3; private static final int DIALOG_DATE = 4; private static final int DIALOG_TIME = 5; @Overrideprotected Dialog onCreateDialog(int id) {switch (id) {case DIALOG_KEY:ProgressDialog progressDialog = new ProgressDialog(this);progressDialog.setTitle("通讯录");progressDialog.setMessage("获取通讯录中...请稍候");progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);progressDialog.setIndeterminate(true);//不明确progressDialog.setCancelable(true);//是否可以按退回按键取消progressDialog.setButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.cancel();//removeDialog(DIALOG_KEY);}});progressDialog.setCanceledOnTouchOutside(true);return progressDialog;case DIALOG_LOGIN:View dialogview=LayoutInflater.from(this).inflate(R.layout.main, null);Dialog loginDialog=new AlertDialog.Builder(this).setTitle("登录").setView(dialogview)//this.findViewById(R.layout.main),不可以,why?.setCancelable(true).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.cancel();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.cancel();}}).create();loginDialog.setCanceledOnTouchOutside(true);return loginDialog;case DIALOG_DATE:Calendar c = Calendar.getInstance();DatePickerDialog dateDialog=new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener(){@Overridepublic void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) {// TODO Auto-generated method stubshowDialog(DIALOG_KEY);}},c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE));return dateDialog;case DIALOG_TIME:Calendar c2 = Calendar.getInstance(); TimePickerDialog timeDialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { showDialog(DIALOG_KEY); } }, c2.get(Calendar.HOUR), c2.get(Calendar.MINUTE), true); return timeDialog;}return null;} private void showNotify(){ Notification notice=new Notification(); notice.icon=R.drawable.icon; notice.tickerText="您有一条新的信息"; notice.defaults=Notification.DEFAULT_SOUND; notice.when=10L; // 100 毫秒延迟后,震动 250 毫秒,暂停 100 毫秒后,再震动 500 毫秒 // notice.vibrate = new long[] { 100, 250, 100, 500 }; notice.setLatestEventInfo(this, "通知", "开会啦", PendingIntent.getActivity(this, 0, null, 0)); NotificationManager manager=(NotificationManager)getSystemService(this.NOTIFICATION_SERVICE); manager.notify(0,notice); }}