`

Dialog&Notification&OptionsMenu练习

阅读更多
下面的menu没有意义,仅仅是个练习而已,看图先:

布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
	android:id="@+id/textViewName"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/name"
    android:textSize="20dp"
    />
    <EditText 
    android:id="@+id/editTextName"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
    <TextView  
	android:id="@+id/textViewAge"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/age"
    android:textSize="20dp"
    />
    <EditText 
    android:id="@+id/editTextAge"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>



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;
    @Override
	protected 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() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					dialog.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() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						dialog.cancel();
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						dialog.cancel();
					}
				})
				.create();
				loginDialog.setCanceledOnTouchOutside(true);
				return loginDialog;
			case DIALOG_DATE:
				Calendar c = Calendar.getInstance();
				DatePickerDialog dateDialog=new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener(){
					@Override
					public void onDateSet(DatePicker view, int year,
							int monthOfYear, int dayOfMonth) {
						// TODO Auto-generated method stub
						showDialog(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);
    }
}

  • 大小: 24.8 KB
分享到:
评论

相关推荐

    Dialog&Toast示例大全

    在"Dialog&ToastTest"项目中,你可能会发现各种`Dialog`和`Toast`的使用示例,包括如何改变其背景、字体、颜色、按钮等属性,以及如何处理点击事件。通过这些实例,你可以了解到如何根据实际需求灵活运用`Dialog`和`...

    自动更新:Dialog和Notification

    "自动更新:Dialog和Notification"这一主题涉及到如何优雅地提示用户进行应用更新,通常通过两种常见的方式:对话框(Dialog)和通知(Notification)。这两种方法各有特点,适用于不同的场景。 首先,让我们详细...

    ListView&Spinner&Dialog练习

    在"ListView&Spinner&Dialog练习"中,ListView被用来展示数据列表,例如成绩列表。它通常与Adapter配合使用,Adapter是连接数据源(如数组或数据库)和ListView的桥梁。在这个小练习中,你可能会看到一个自定义的...

    Android的各种通知Notification、Dialog、Toast、Snackbar

    通知(Notification)、对话框(Dialog)、吐司(Toast)和Snackbar是Android系统提供的一些关键组件,用于向用户展示各种信息和提示。下面将详细介绍这些组件的功能、用法以及它们在不同场景下的适用性。 **1. ...

    自画Menu Dialog

    "自画Menu Dialog"是一个项目,旨在通过自定义一个类来重新实现Dialog中的Menu功能,以便控制字体、颜色等视觉样式。这个项目涉及到几个关键的技术点,包括CMenu类的使用、菜单项的绘制以及对话框的定制。 首先,...

    jquery.ui.dialog修改版,支持closable

    《jQuery UI Dialog 修改版:支持可关闭性控制详解》 jQuery UI 是一个强大的JavaScript库,提供了许多用户界面组件,其中包括Dialog(对话框)模块。Dialog组件可以用来创建模态或非模态的弹出窗口,常用于显示...

    对话框切换的各种特效 缩放 开关门 挤压 淡入淡出 拖曳 黑夜白天

    dialog&gt; &lt;show class=&quot;CEffDlgLight&quot; Way=&quot;Light&quot; Slow_Level=&quot;14&quot;/&gt; &lt;exit class=&quot;CEffDlgLight&quot; Way=&quot;Dark&quot; Slow_Level=&quot;18&quot;/&gt; &...

    Notification

    本文将深入探讨`Notification`的实现,并结合自定义`Dialog`消息展示来增强用户体验。 首先,`Notification`是Android应用程序与用户交互的重要方式,特别是在后台运行时。当应用程序需要告知用户一些信息,但不...

    自定义Dialog实现Menu菜单

    在标题“自定义Dialog实现Menu菜单”中,我们主要探讨的是如何模仿酷狗和淘宝应用中的Menu样式,创建一个具有类似效果的自定义Dialog。Menu通常用于展示一组可选操作,而Dialog则是一个浮动窗口,可以更好地吸引用户...

    android各组件详解

    本篇文章将详细讲解Android中的主要组件,包括`Dialog&Notification`、`WebKit`、`Menu`和`Theme`等。 **1. Dialog&Notification** 对话框(Dialog)在Android中用于显示临时信息或获取用户输入,它不会占据整个...

    Android_内部培训教材

    后来转换成了PDF,便于阅读吧,一共有28个PDF文件,每个文件是一章,内容涉及Android 介绍、Android应用程序基储Activity、SQLite、Webkit、Hardware、Localization、Socket、Audio&Video、Dialog&Notification、...

    各种自定义Dialog 以及Dialog加载动画

    在Android开发中,自定义Dialog和Dialog加载动画是提升应用用户体验的重要手段。默认的Dialog样式虽然功能齐全,但在追求个性化和美观的今天,往往显得过于简单甚至有些过时。因此,开发者常常需要根据应用的设计...

    Android NOtification 使用

    Notification分为多种类型,包括Toast、StatusBar Notification和Dialog Notification,每种都有其特定的使用场景。 1. Toast Notification: Toast是一种短暂的通知方式,它在屏幕上显示一段时间后自动消失,不会...

    Android学习笔记之Dialog Notification

    对话框通知是一种可以与用户进行交互的通知形式,会使当前的活动失焦。 AlertDialog(警告对话框) 用于创建警告对话框。一个警告对话框最多可以包含三个按钮(和/或)一个包含复选框或单选按钮的可选项列表。...

    各种android弹出dialog效果以及各种dialog样式

    各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...

    android创建optionsmenu的方法

    在Android应用开发中,OptionsMenu是显示在屏幕顶部或者在动作栏(Action Bar)中的一个菜单,通常包含一些常用的操作选项。下面将详细介绍如何在Android中创建OptionsMenu,包括使用XML配置和直接通过代码创建两种...

    jquery_dialog jquery_dialog jquery_dialog

    《jQuery Dialog 深度解析与实践应用》 在Web开发领域,jQuery Dialog是一款非常流行的JavaScript库,用于创建可交互的对话框。它基于jQuery框架,提供了丰富的功能和灵活的定制选项,使得开发者能够轻松地在网页上...

    自定义圆角的dialog

    在Android应用开发中,Dialog是一种重要的用户交互组件,它用于显示临时信息或提示用户进行选择。系统提供的默认Dialog样式虽然实用,但往往无法满足开发者对于界面个性化和用户体验优化的需求。因此,自定义Dialog...

    ABAP DIALOG入门

    6. **Menu**:通过Menu Painter可以定义菜单栏上的选项,以及这些选项对应的处理逻辑。 7. **Subroutines**:自定义的子程序,可以用于复用代码。 8. **其他组件**:还包括Title、Variant等辅助性组件,用于定义...

Global site tag (gtag.js) - Google Analytics