`

Android开发06—菜单与对话框(下)

阅读更多
Android开发06—菜单与对话框(下)

1. 进度对话框
ProgressDialog可以显示进度轮和进度条,由于ProgressDialog继承自AlertDialog,所以在进度对话框中也可以添加按钮。
实例说明进度对话框的用法:
package qijia.si;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ContextMenuDemo extends Activity {
	//声明进度对话框id
	final int PROGRESS_DIALOG = 0;
	//Handler消息类型
	final int INCREASE = 0;
	//进度对话框对象引用
	ProgressDialog pd;
	//Handler对象引用
	Handler myHandler;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //获得Button对象
        Button bt = (Button)this.findViewById(R.id.button1);
        //设置onClickListener监听器
        bt.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				// TODO Auto-generated method stub
				showDialog(PROGRESS_DIALOG);
			}
        	
        });
        //创建handler对象
        myHandler = new Handler(){

			@Override
			public void handleMessage(Message msg) {
				// TODO Auto-generated method stub
				switch(msg.what){
				case INCREASE:
					pd.incrementProgressBy(1);
					//如果进度走完就关闭
					if(pd.getProgress()>=100){
						pd.dismiss();
					}
					break;
				}
				super.handleMessage(msg);
			}
        	
        };
    }  
    //重写onCreateDialog方法
    public Dialog onCreateDialog(int id){
    	switch(id){
    	//创建进度对话框
    	case PROGRESS_DIALOG:
    		pd = new ProgressDialog(this);
    		//设置进度对话框
    		pd.setMax(100);
    		pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    		pd.setTitle(R.string.title);
    		pd.setCancelable(false);
    		new Thread(){
    		public void run(){
				while(true){
					//发送Handler消息
					myHandler.sendEmptyMessage(INCREASE);
					if(pd.getProgress()>=100){
						break;
					}
					try{
						Thread.sleep(100);
					}catch(Exception e){
						e.printStackTrace();
					}
				}
			}
		}.start();
    		break;
    	}
		return pd;
    	
    }
    //每次弹出对话框时被动态回调以动态更新对话框
    public void onPrePareDialog(int id,Dialog dialog){
    	super.onPrepareDialog(id, dialog);
    	switch(id){
    	case PROGRESS_DIALOG:
    		//对话框进度清零
    		pd.incrementProgressBy(-pd.getProgress());
    		//匿名对象
    		new Thread()
    		{
    			public void run(){
    				while(true){
    					//发送Handler消息
    					myHandler.sendEmptyMessage(INCREASE);
    					if(pd.getProgress()>=100){
    						break;
    					}
    					try{
    						Thread.sleep(100);
    					}catch(Exception e){
    						e.printStackTrace();
    					}
    				}
    			}
    		}.start();
    		break;
    		}
    }
    
}

2. 消息提示
1) Toast的使用
Toast向用户提供比较快速的即时消息,当Toast被显示时,虽然其悬浮于应用程序的最上方,但是Toast从不获得焦点。因为涉及Toast时就是为了让其在提示有用信息时尽量不显眼。Toast用于用户某项设置成功等。
Toast对象的创建通过Toast类的静态方法makeText来实现,该方法有两个重载实现,主要的不同时一个接受字符串,而另一个接收字符串的资源标识符作为参数。Toast对象创建好之后通过show方法即可将消息提示显示到屏幕上。

实例:
package qijia.si;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class ContextMenuDemo extends Activity {

	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button) this.findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				// TODO Auto-generated method stub
				//创建ImageView
				ImageView iv = new ImageView(ContextMenuDemo.this);
				iv.setImageResource(R.drawable.header);
				//创建一个线性布局
				LinearLayout ll = new LinearLayout(ContextMenuDemo.this);
				
				Toast toast = Toast.makeText(ContextMenuDemo.this, "Hello World", Toast.LENGTH_LONG);
				toast.setGravity(Gravity.CENTER, 0, 0);
				View toastView = toast.getView();
				ll.setOrientation(LinearLayout.HORIZONTAL);
				//将ImageView添加到线性布局
				ll.addView(iv);
				//将Toast的View添加到线性布局
				ll.addView(toastView);
				toast.setView(ll);
				//显示toast
				toast.show();
			}
        	
        });
    }
    
}
2) Notification
Notification是另一种消息提示的方式。Notification位于手机的状态栏,在Android手机中用手指按下状态栏并往下拉可以打开状态栏查看系统的提示信息。

实例:

main.xml:
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:orientation="vertical">
        <Button android:layout_height="wrap_content" android:id="@+id/button1" android:text="@string/btn" android:layout_width="fill_parent"></Button>
    </LinearLayout>
   
  
  

notified.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:text="@string/tv" android:layout_width="fill_parent" android:editable="false" android:layout_gravity="center_horizontal"></EditText>
    </LinearLayout>



1. Activity
package qijia.si;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ContextMenuDemo extends Activity {

	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button)findViewById(R.id.button1);
        //添加监听
        btn.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent i = new Intent(ContextMenuDemo.this,NotifiedActivity.class);
				//建立一个新的Activity
				PendingIntent pi = PendingIntent.getActivity(ContextMenuDemo.this, 0, i, 0);
				//创建一个Notification对象
				Notification myNotification = new Notification();
				myNotification.icon = R.drawable.header;
				//设置文字和声音
				myNotification.tickerText = getResources().getString(R.string.Notification);
				myNotification.defaults = Notification.DEFAULT_SOUND;
				myNotification.setLatestEventInfo(ContextMenuDemo.this, "Example", "Hello World", pi);
				//建立NotificationManger并发送消息
				NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
				notificationManager.notify(0,myNotification);
			}
        	
        });
    }
    
}
2. Activity
package qijia.si;

import android.app.Activity;
import android.os.Bundle;

//当用户在状态栏点击Notification时会启动该Activity
public class NotifiedActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.notified);
	}
	

}

注意最后在AndroidManifest.xml中添加新的Acitivity,否则无法显示。
分享到:
评论

相关推荐

    Android游戏开发系列教程第六讲(菜单对话框)源码

    Android游戏开发系列教程第六讲(菜单对话框)源码

    Android应用开发案例教程 (毋建军、徐振东、林瀚 编著) pdf

    全书论述了Android开发概述,Android应用程序组成,Android UI(用户界面)基础,Android UI系统控件基础,Android UI系统控件进阶,Android UI菜单、对话框,Android组件广播消息与服务,Android数据存储与访问,...

    老罗android开发视频教程全集百度网盘下载

    【第一版第十二章】老罗Android开发视频--菜单的使用(4集) 【第一版第十三章】老罗Android开发视频--异步加载数据库(2集) 【第一版第十四章】老罗Android开发视频--多线程编程(7集) 【第一版第十五章】老罗...

    android开发揭秘PDF

    第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...

    android开发入门与实战(下)

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    Android应用开发案例教程

    全书论述了android开发概述,android应用程序组成,android ui(用户界面)基础,android ui系统控件基础,android ui系统控件进阶,android ui菜单、对话框,android 组件广播消息与服务,android数据存储与访问,...

    Android 自定义弹出菜单和对话框功能实例代码

    Android 开发当中,可能会存在许多自定义布局的需求,比如自定义弹出菜单(popupWindow),以及自定义对话框(Dialog)。下面通过本文给大家介绍Android 自定义弹出菜单和对话框功能实例代码,感兴趣的朋友一起看看...

    《Google Android开发入门与实战》

    第7章 良好的学习开端——Android基本组件介绍之友好的菜单——menu介绍与实例 第7章 良好的学习开端——Android基本组件介绍之Android应用的灵魂——Intent和Activity介绍与实例 第7章 良好的学习开端——Android...

    Android开发案例驱动教程 配套代码

    《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...

    android开发入门与实战(上)

    第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...

    android开发资料大全

    android开发教程合集(推荐新手看下这一季教程) 新手入门 会员贡献电子图书整理(内含PDF下载) Android平板开发需要注意的几点 Android3D游戏开发付费视频教程共享(更新第四集) 史上最全示例Android教学视频,...

    《Google Android开发入门与实战》.pdf

    在程序实例的讲解方面,主要将实例安插在android开发的精髓知识章节,这为初学者学习与实践结合提供了很好的指导。.  本书配套有400多分钟的全程开发视频光盘,指导读者快速、无障碍地学通android实战开发技术。.. ...

    Android开发权威指南 第二版

    《Android开发权威指南(第二版)》全面介绍了Android应用开发的各种技术,主要内容包括Android的四大应用程序组件(Activity、Service、Content Provider和Broadcast Receiver)、布局、菜单、控件、资源和本地化、可视...

    Google Android SDK开发范例大全 源码

    安装Android SDK与ADT plug-in  建立第一个Android项目(Hello Android!)  Android应用程序架构——从此开始  可视化的界面开发工具  部署应用程序到Android手机  该作品是PDF文件格式请下载 福昕PDF阅读器...

    Android核心技术与实例详解 PDF扫描版

    全书分为三篇共18章 第一篇以简单易懂的实例为依托 详细介绍了Android平台的基本控件 高级控件 常用界面布局及菜单对话框等相关知识;第二篇介绍了Android平台的高级知识 包括消息与广播服务 网络数据处理 手机通信...

    《Android应用开发揭秘》附带光盘代码.

     第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android...

    《Android开发权威指南》 PDF (安卓sdk 2.3)

    第一部分 准备篇,包括第1章和第2章,第1章 Android开发简介、第2章 搭建和使用Android开发环境。 第二部分 基础篇,包括第3章~第16章,第3章 Android程序设计基础、第4章 用户界面开发基础、第5章 控件(Widget)...

    《Android应用开发揭秘》源码

     第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android...

Global site tag (gtag.js) - Google Analytics