`
01jiangwei01
  • 浏览: 541729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

安卓课程二十五 各种对话框

 
阅读更多

这节学习安卓的各种对话框。包含

1)一个确认按键的对话框

2)一个确认键和取消键的对话框

3)包括三个按键的对话框

4)下拉列表对话框

5)单选下拉列表对话框

6)多选下拉列表对话框

7)进度条对话框

8)进度条提示对话框

9)自定义对话框

效果如下:

 



 

 

 

 



 
 

 

 

 

 

将代码贴出来,便于分析。

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Dialog</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    
     <string name="alert_one_button">确定对话框</string>
    <string name="alert_button">确定取消对话框</string>
    <string name="more_button">多个按钮信息对话框</string>
    <string name="select_button">列表选项卡</string>
    <string name="select_radio_button">单选列表对话框选项卡</string>
    <string name="progress_button">进度条对话框按钮</string>
    <string name="checkbox_button">多选对话框按钮</string>
    <string name="diy_button">自定义对话框按钮</string>
    <string name="progressing_button">读取进度按钮</string>
    
    <string name="diy_uname">姓名</string>
    <string name="diy_pwd">密码</string>
</resources>

activity_main.xml

<LinearLayout 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"
    android:orientation="vertical"
     >
	<Button android:id="@+id/alert_one_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_one_button"/>
   <Button android:id="@+id/alert_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/alert_button"/>
   <Button android:id="@+id/more_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/more_button"/>
   <Button android:id="@+id/select_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/select_button"/>
   <Button android:id="@+id/radio_select_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/select_radio_button"/>
   <Button android:id="@+id/progress_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/progress_button"/>
   <Button android:id="@+id/checkbox_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/checkbox_button"/>
   <Button android:id="@+id/diy_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/diy_button"/>
    <Button android:id="@+id/progressing_btn" 
       android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/progressing_button"/>
</LinearLayout>

 MainActivity.java

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener,Runnable {
	/**
	 * 记录进度条中进度信息
	 */
	private int MAX_PROGRESS = 10;
	private ProgressDialog mProgressDialog;
	/**
	 * 记录多选框对话框中选中的信息
	 */
	private ArrayList <Integer>MultiChoiceID = new ArrayList <Integer>();  
	private final String[] mItems = {"item0","item1","itme2","item3","itme4","item5","item6"};
	//mSingleChoice 用于记录单选中的ID
	int  mSingleChoiceID = -1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		/**
		 * 只有一个确认建
		 */
		Button alert_one_button = (Button) this.findViewById(R.id.alert_one_btn) ;
		alert_one_button.setOnClickListener(this);
		
		/**
		 * 有两个键,确认和取消
		 */
		Button alert_btn = (Button) this.findViewById(R.id.alert_btn) ;
		alert_btn.setOnClickListener(this);
		
		/**
		 * 三个按键的
		 */
		Button  more_btn = (Button) this.findViewById(R.id.more_btn);
		more_btn.setOnClickListener(this);
		
		/**
		 * 下拉选的
		 */
		Button select_btn = (Button) this.findViewById(R.id.select_btn) ;
		select_btn.setOnClickListener(this) ;
		
		/**
		 * 下拉单选提示框
		 */
		Button radio_select_btn = (Button) this.findViewById(R.id.radio_select_btn) ;
		radio_select_btn.setOnClickListener(this) ;
		
		/**
		 * 进度条按钮
		 */
		Button  progress_btn = (Button) this.findViewById(R.id.progress_btn); 
		progress_btn.setOnClickListener(this) ;
		/**
		 * 多选列表按钮
		 */
		Button checkbox_button = (Button)this.findViewById(R.id.checkbox_btn); 
		checkbox_button.setOnClickListener(this) ;
		
		/**
		 * 自定义对话框
		 */
		Button diy_btn = (Button)this.findViewById(R.id.diy_btn); 
		diy_btn.setOnClickListener(this) ;
		
		/**
		 * 进度条选的
		 */
		Button progressing_btn=(Button)this.findViewById(R.id.progressing_btn); 
		progressing_btn.setOnClickListener(this) ;
		
	}

	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
    private void showDialog(String str) {
	 Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
   }

	public void onClick(View v) {
		switch(v.getId()) {
			case R.id.alert_one_btn:
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
			    builder.setIcon(R.drawable.logo3);
	            builder.setTitle("我们向您发送通知呢");
	            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    //这里添加点击确定后的逻辑
	                    showDialog("你选择了确定");
	                  }
	            }); 
	            builder.create().show();
				break;
		 
			case R.id.alert_btn:
				AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); 
			    builder1.setIcon(R.drawable.logo3);
	            builder1.setTitle("你确定要离开吗?");
	            builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    //这里添加点击确定后的逻辑
	                    showDialog("你选择了确定");
	                  }
	            });
	            builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    //这里添加点击取消后的逻辑
	                    showDialog("你选择了取消");
	                }
	            });
	            builder1.create().show();
				break;
			case  R.id.more_btn:
	            AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);		    
	            builder2.setIcon(R.drawable.logo3);
	            builder2.setTitle("投票");
	            builder2.setMessage("您认为什么样的内容能吸引您?");
	           
	            builder2.setPositiveButton("有趣味的", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    showDialog("你选择了有趣味的");
	                }
	            });
	            builder2.setNeutralButton("有思想的", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    showDialog("你选择了有思想的");                    
	                }
	            });
	            builder2.setNegativeButton("主题强的", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    showDialog("你选择了主题强的");  
	                }
	            });
	            builder2.create().show();
				break;
			case  R.id.select_btn:
				   AlertDialog.Builder builder3 = new AlertDialog.Builder(MainActivity.this);	
				   builder3.setTitle("列表选择框");
				   builder3.setItems(mItems, new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int which) {
		                    //点击后弹出窗口选择了第几项
		                    showDialog("你选择的id为" + which + " , " + mItems[which]);
		                }
		            });
				   builder3.create().show();
				   break;
			case R.id.radio_select_btn:
		         AlertDialog.Builder builder4 = new AlertDialog.Builder(MainActivity.this);	

		         
		         builder4.setIcon(R.drawable.logo3);
		         builder4.setTitle("单项选择");
		         builder4.setSingleChoiceItems(mItems, 0, new DialogInterface.OnClickListener() {
		                 public void onClick(DialogInterface dialog, int whichButton) {
		                         mSingleChoiceID = whichButton;
		                         showDialog("你选择的id为" + whichButton + " , " + mItems[whichButton]);
		                 }
		             });
		         builder4.setPositiveButton("确定", new DialogInterface.OnClickListener() {
		                 public void onClick(DialogInterface dialog, int whichButton) {
		                	 showDialog("whichButton="+whichButton);
		                     if(mSingleChoiceID >= 0) {
		                     showDialog("你选择的是" + mSingleChoiceID);
		                     }
		                 }
		             });
		         builder4.setNegativeButton("取消", new DialogInterface.OnClickListener() {
		                 public void onClick(DialogInterface dialog, int whichButton) {

		                 }
		             });
		         builder4.create().show();
				break;
			case R.id.progress_btn:
                mProgressDialog = new ProgressDialog(MainActivity.this);
	            mProgressDialog.setIcon(R.drawable.logo3);
	            mProgressDialog.setTitle("进度条窗口");
	            mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
	            mProgressDialog.setMax(MAX_PROGRESS);
	            mProgressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    //这里添加点击后的逻辑
	                	 showDialog("你选择的是确定" );
	                }
	            });
	            mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", new DialogInterface.OnClickListener() {
	                public void onClick(DialogInterface dialog, int whichButton) {
	                    //这里添加点击后的逻辑
	                	 showDialog("你选择的是取消" );
	                }
	            });
	            mProgressDialog.show();
	            new Thread(this).start();
				break;
			case R.id.checkbox_btn:
		        AlertDialog.Builder builder5 = new AlertDialog.Builder(MainActivity.this);	
		        MultiChoiceID.clear();
		        builder5.setIcon(R.drawable.logo3);
		        builder5.setTitle("多项选择");
		        builder5.setMultiChoiceItems(mItems,
		                    new boolean[]{false, false, false, false, false, false, false},
		                    new DialogInterface.OnMultiChoiceClickListener() {
		                        public void onClick(DialogInterface dialog, int whichButton,
		                                boolean isChecked) {
		                           if(isChecked) {
		                               MultiChoiceID.add(whichButton);
		                               showDialog("你选择的id为" + whichButton + " , " + mItems[whichButton]);
		                           }else {
		                               MultiChoiceID.remove(whichButton);
		                           }
		                        }
		                    });
		        builder5.setPositiveButton("确定", new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int whichButton) {
		                    String str = "";
		                    int size = MultiChoiceID.size();
		                    for (int i = 0 ;i < size; i++) {
		                    str+= mItems[MultiChoiceID.get(i)] + ", ";
		                    }
		                    showDialog("你选择的是" + str);
		                }
		            });
		        builder5.setNegativeButton("取消", new DialogInterface.OnClickListener() {
		                public void onClick(DialogInterface dialog, int whichButton) {
		                }
		            });
		        builder5.create().show();
				break;
			case R.id.diy_btn:
		           AlertDialog.Builder builder6 = new AlertDialog.Builder(MainActivity.this);	
		            LayoutInflater factory = LayoutInflater.from(this);
		            final View textEntryView = factory.inflate(R.layout.diydialog, null);
		            builder6.setIcon(R.drawable.logo3);
		            builder6.setTitle("自定义输入框");
		            builder6.setView(textEntryView);
		            builder6.setPositiveButton("确定", new DialogInterface.OnClickListener() {
		                    public void onClick(DialogInterface dialog, int whichButton) {
		                    EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName);
		                    EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord);
		                    showDialog("姓名 :"  + userName.getText().toString()  + "密码:" + password.getText().toString() );
		                    }
		                });
		            builder6.setNegativeButton("取消", new DialogInterface.OnClickListener() {
		                    public void onClick(DialogInterface dialog, int whichButton) {

		                    }
		                });
		            builder6.create().show();
				break;
			case R.id.progressing_btn:
			    mProgressDialog = new ProgressDialog(this);
			    mProgressDialog.setIcon(R.drawable.logo3);
			    mProgressDialog.setTitle("读取ing");
			    mProgressDialog.setMessage("正在读取中请稍候");
			    mProgressDialog.setIndeterminate(true);
			    mProgressDialog.setCancelable(true);
			    mProgressDialog.show();
			    //mProgressDialog.cancel();
				break;
		}
	}
	public void run() {
	      int Progress = 0;
	      while(Progress < MAX_PROGRESS) {
	      try {
	          Thread.sleep(100);
	          Progress++;  
	          mProgressDialog.incrementProgressBy(1);
	      } catch (InterruptedException e) {
	          // TODO Auto-generated catch block
	          e.printStackTrace();
	      }
	      }
	  }
}

 diydialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/dialogname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tvUserName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="@string/diy_uname" />

        <EditText
            android:id="@+id/etUserName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:minWidth="200dip" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/dialognum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/dialogname"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/tvPassWord"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
           	android:textSize="20sp"
            android:text="@string/diy_pwd" />

        <EditText
            android:id="@+id/etPassWord"
            android:inputType="textWebPassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="200dip" />
    </LinearLayout>
</RelativeLayout>
 讲到自定义布局我就得多说一说了,为什么要多说一说呢?
其实自定义布局在Android的开发中非常重要 因为它能让开发者做出自己五彩缤纷的Activity 而不用去使用系统枯燥的界面。

 

自定义dialog有什么好处?

比如我们在开发过长当中 要通过介绍系统发送的一个广播弹出一个dialog . 但是dialog必需是基于activity才能呈现出来 如果没有activity 的话 程序就会崩溃。所以我们可以写一个自定义的 dialog 把它定义成一个activity
这样我们收到一条打开dialog的广播后 直接启动这个 activity  程序正常运行~~

这就是自定义dialog的好处。

注明:例子中只是写了自定义dialog 没有把它单独的写在一个activity中

  • 大小: 85.2 KB
  • 大小: 24.8 KB
  • 大小: 25.2 KB
  • 大小: 34.6 KB
  • 大小: 29.7 KB
  • 大小: 42.6 KB
  • 大小: 44.9 KB
  • 大小: 34.7 KB
  • 大小: 24.1 KB
  • 大小: 36.8 KB
  • 大小: 7.4 KB
分享到:
评论

相关推荐

    Android程序技术:对话框的使用.pptx

    本节课程内容:对话框的使用 对话框的使用 对话框是出现在当前Activity之上的一个小窗口。 对话框出现后,Activity失去焦点, 对话框接受所有用户交互。 对话框一般用于提示信息和实现与当前应用程序直接相关的小功能...

    Android个人课程表.rar

    Android课程表应用的界面设计是用户体验的关键。使用XML布局文件来定义界面元素,如TextView用于显示课程名称,ImageView用于图标展示,而LinearLayout或RelativeLayout等布局管理器用于组织这些元素。此外,自定义...

    程矢AndroidUI之菜单对话框.rar

    在程矢老师的课程中,他可能会深入讲解每种菜单和对话框的使用场景、样式定制以及与用户交互的细节,还会涉及一些高级话题,比如自定义对话框、菜单动画效果等。通过学习这个教程,开发者能够提升Android UI设计能力...

    Android-所有Dialog对话框(源码).zip

    Android-所有Dialog对话框(源码).zip Android-所有Dialog对话框(源码).zip Android-所有Dialog对话框(源码).zip

    所有Dialog对话框.zip

    "所有Dialog对话框.zip" 文件包含的资源显然专注于这一主题,提供了安卓项目源码、论文以及参考资料,适合于毕业设计、课程设计以及安卓开发的学习者,尤其是遇到安卓开发问题时作为参考。 1. **安卓Dialog基本类型...

    Android-实验课09-上下文菜单-对话框练习.rar

    在Android应用开发中,上下文菜单(Context Menu)和对话框(Dialog)是两种常见的用户交互界面元素,它们在提供用户操作选项和展示重要信息时起到关键作用。本实验课程旨在帮助开发者深入理解和熟练运用这两种功能。 *...

    仿iPhone风格对话框示例,Jar包及源码.zip

    这个压缩包"仿iPhone风格对话框示例,Jar包及源码.zip"提供了一个很好的学习资源,它包含了实现这一功能的具体代码和相关资料,非常适合安卓开发的学习者,尤其是进行毕业设计或课程设计时使用。 首先,我们来探讨...

    Android-仿iPhone风格对话框示例,Jar包及源码.zip

    Android-仿iPhone风格对话框示例,Jar包及源码.zip

    Android Studio学生信息管理App安卓课程设计完整版-Mystudent.rar

    在安卓应用开发领域,Android Studio作为官方推荐的集成开发环境(IDE),被广泛应用于各种应用程序的构建。本课程设计的主题是“学生信息管理App”,旨在帮助开发者掌握如何利用Android Studio创建一个功能完备、...

    课程闹钟 能重复自定义重复时间 安卓android期末作业

    【课程闹钟:能重复自定义重复时间 安卓android期末作业】 在安卓平台上,创建一个自定义的、可重复的课程闹钟是一项常见的任务,尤其对于安卓开发的学习者而言,这是一项很好的实践项目。本项目的核心是使用...

    第六课 对话框用户界面程序的编写 1.rar

    在本课程“第六课 对话框用户界面程序的编写 1”中,我们将深入探讨对话框用户界面(Dialog Box User Interface)的编程技术。对话框是应用程序中常见的一种交互方式,用于显示临时信息、获取用户输入或者进行特定...

    Android账户管理(课程设计)源码

    5. **数据同步**: Android的账户管理框架也支持数据同步,通过`ContentProvider`和`SyncAdapter`组件,开发者可以将应用的数据与服务器保持一致。`SyncAdapter`是一个后台服务,负责实际的同步操作,而`...

    android模仿课程表

    在Android平台上,模仿课程表的开发是一个常见的任务,它涉及到用户界面设计、数据管理以及交互逻辑等多个方面。在这个小小的例子中,我们将探讨如何利用Android Studio和相关的开发工具来实现一个功能齐全、用户...

    安卓程序开发 课程学习 课程作业

    【安卓程序开发】是计算机科学领域的一个重要分支,主要针对谷歌Android操作系统进行应用程序的设计与实现。这门课程涵盖了从基础的界面开发到复杂的后台数据库管理,以及网络通信和硬件交互等多个方面,旨在全面...

    android_12ppt (吉林大学android课程英文讲义)

    吉林大学的这份PPT讲义显然是英文的,而且看起来是面向具有一定Android开发经验的听众,他们可能已经了解了基础知识,并准备深入学习如何创建和管理用户界面,特别是各种对话框和用户交互组件。通过这份讲义,外教...

    安卓电话簿课程设计(实现对联系人的增删改查).zip

    这个"安卓电话簿课程设计(实现对联系人的增删改查)"项目旨在帮助开发者理解如何利用Android SDK来实现这样的功能。下面我们将深入探讨这个项目所涉及的主要知识点。 首先,我们关注的是AndroidManifest.xml文件,它...

    安卓简单实用课程源码.zip

    安卓简单实用课程源码非常简单实用,没有花哨的功能,没有复杂的界面,有的只是实实在在的课表记录,这让我想起了上初中的时候画在课本封皮里或者硬纸卡上的课程表,都是非常实用主义的最佳体现。软件打开以后会显示...

Global site tag (gtag.js) - Google Analytics