今天我们学习的内容是实现两种对话框(Dialog),第一种是询问是否退出对话框,另外一种是带图标的列表对话框,程序的执行效果是,我们点击button1的时候,弹出第一种对话框,我们点击button2的时候,弹出另外一种对话框。

(1)  首先是布局方面,有三个xml文件,一个是Activity的布局文件,一个是Dialog的布局文件,一个是ListView的布局文件,内容分别例如以下:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent" android:orientation="vertical"><Button android:id="@+id/exit_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="对话框1"/><Button android:id="@+id/list_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:text="对话框2"/></LinearLayout>

dialog_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ListViewandroid:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="fill_parent"android:cacheColorHint="#00000000" ></ListView></LinearLayout>

items.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><ImageViewandroid:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:adjustViewBounds="true"android:maxHeight="72px"android:maxWidth="72px"android:paddingBottom="20px"android:paddingLeft="10px"android:paddingTop="20px" /><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:padding="10px" /></LinearLayout>

(2)然后就Java代码部分,代码部分关于dialog我已经具体凝视,具体请看:

package com.example.dialogdemo;import java.util.ArrayList;
import java.util.HashMap;import android.app.Activity;
import android.app.AlertDialog;
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.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;public class MainActivity extends Activity {//定义两个静态字符串private static final String DIALOG_ICON = "icon";private static final String DIALOG_TITLE = "title";//声明Button类型的变量button1private Button button1;//声明Button类型的变量button2private Button button2;//声明View类型的变量viewprivate View view;//声明ListView类型的变量listViewprivate ListView listView;//声明一个ArrayList变量mList,它里面的item都是HashMap类型private ArrayList<HashMap<String, Object>> mList;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();setupViews();}/*** 初始化数据*/private void initData(){//初始化mListif(mList == null){mList = new ArrayList<HashMap<String,Object>>();}else{mList.clear();}//向mList里面加入数据HashMap<String, Object> map  = new HashMap<String, Object>();map.put(DIALOG_ICON, R.drawable.img01);map.put(DIALOG_TITLE, "程序管理");mList.add(map);map = new HashMap<String, Object>();map.put(DIALOG_ICON, R.drawable.img02);map.put(DIALOG_TITLE, "保密设置");mList.add(map);map = new HashMap<String, Object>();map.put(DIALOG_ICON, R.drawable.img03);map.put(DIALOG_TITLE, "安全设置");mList.add(map);map = new HashMap<String, Object>();map.put(DIALOG_ICON, R.drawable.img04);map.put(DIALOG_TITLE, "邮件设置");mList.add(map);map = new HashMap<String, Object>();map.put(DIALOG_ICON, R.drawable.img05);map.put(DIALOG_TITLE, "铃声设置");mList.add(map);}/*** 初始化视图*/private void setupViews(){LayoutInflater inflater = LayoutInflater.from(MainActivity.this);view = inflater.inflate(R.layout.dialog_list, null);listView = (ListView) view.findViewById(R.id.listview);DialogListViewAdapter adapter = new DialogListViewAdapter();listView.setAdapter(adapter);//通过findviewbyid()获取Button对象button1 = (Button) findViewById(R.id.exit_button);button2 = (Button) findViewById(R.id.list_button);//为button1设置点击监听器button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//初始化一个AlertDialog对象AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();//为dialog设置图标alertDialog.setIcon(getResources().getDrawable(R.drawable.advise));//为dialog设置标题alertDialog.setTitle("退出?");//为dialog设置主体内容alertDialog.setMessage("是否真的要退出当前应用?");//为dialog设置一个按钮alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "不退出", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});//为dialog设置还有一个按钮alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是的", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubMainActivity.this.finish();}});//显示dialogalertDialog.show();}});//为button2设置点击监听器button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//初始化一个AlertDialogAlertDialog alertDialog = new  AlertDialog.Builder(MainActivity.this).create();//为alertDialog设置视图alertDialog.setView(view);//显示alertDialogalertDialog.show();}});}/***  定义ListView的Adapter,其作用是为ListView视图提供数据*/class DialogListViewAdapter extends BaseAdapter{@Overridepublic int getCount() {return mList.size();}@Overridepublic Object getItem(int position) {return mList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ListViewItemHolder holder;if(convertView == null){convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.items, null);holder = new ListViewItemHolder();holder.imageView = (ImageView) convertView.findViewById(R.id.image);holder.textView = (TextView) convertView.findViewById(R.id.title);convertView.setTag(holder);}else{holder = (ListViewItemHolder) convertView.getTag();}HashMap<String, Object> map = mList.get(position);int iconId = (Integer) map.get(DIALOG_ICON);String title = (String) map.get(DIALOG_TITLE);holder.imageView.setImageResource(iconId);holder.textView.setText(title);return convertView;}}//两个视图控件的一个封装类class ListViewItemHolder{ImageView imageView;TextView textView;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}
}

(3)执行一下android project,效果图例如以下:

最后附上源代码下载地址:

Android对话框(dialog)实例

Android实现“是否退出”对话框和“带图标的列表”对话框相关推荐

  1. Android之列表对话框

    main.xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...

  2. Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框

    1.首先,新建一个安卓项目,项目名称为DialogTest1,首先,进行界面布局,打开布局文件res下的layout文件夹下的activity_main.xml文件,附上activity_main的代 ...

  3. Android高效率实现弹出带动画效果的对话框,仿照微信对话框效果

    转载请注明出处: http://blog.csdn.net/jakeyangchina/article/details/53423453 看到很多app页面里都有弹出对话框效果,今天使用PopupWi ...

  4. Android 自带图标库 android.R.drawable

    在xml文件中调用. android:title="@string/secure_connect" android:orderInCategory="100" ...

  5. android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...

    标签: 对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用 ...

  6. Android UI之ImageButton(带图标的按钮)

    除了Android系统自带的Button按钮一万,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首先要在布局文件中定义ImageButton,然后通过setImageDrawable ...

  7. Android 自定义带图标Toast,工具方法,Toast自定义显示时间

    带图标Toast工具方法1 样式 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:an ...

  8. android 按钮带图标 阴影_android中带图标的按钮(ImageButton)怎么用

    展开全部 除了Android系统自带的Button按钮以外,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首先要在布局62616964757a686964616fe58685e5ae ...

  9. Android Studio自带图标制作利器 Image Asset Studio

    曾几何时, Android开发没有那么方便, 制作一个图标也许都要请美工, 或者自己花时间去PS. 或者去一些在线图标制作网站, 例如: https://makeappicon.com/ http:/ ...

  10. Android自带图标大全

    以下是Android2.1系统自带图标大全 Java Usage example: myMenuItem.setIcon(android.R.drawable.ic_menu_save); Resou ...

最新文章

  1. 通过读源码win10驱动下实现3环的GetEnvironmentVariable
  2. Chino的成绩(chino的公开赛T3)
  3. mochawesome如何合并测试报告_Vue项目采用Cypress做e2e自动化测试,手把手一撸到底...
  4. 成功解决当Win10系统进行深度学习的时候发现系统C盘满了,教你如何正确卸载一些非必要的内容
  5. cglib动态代理jar包_代理模式详解:静态代理+JDK/CGLIB 动态代理实战
  6. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 1.)(python/c/c++版)(笔记)
  7. .net core 2.0学习记录(一):搭建一个.Net Core网站项目
  8. 餐馆的故事-浅析职责链模式
  9. 标准C语言各种时间函数用法,使用c语言标准库中的时间函数
  10. 【ZJOI2010】数字计数 数位dp
  11. 从Postman到ApiPost——码农闰土
  12. linux笔记:linux帮助命令,man,help,whatis,apropos
  13. 米勒-拉宾质数判断证明
  14. mysql修改金钱_mysqli修改数据库
  15. 未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)解决
  16. 三分钟读懂2019苹果秋季发布会:没熬夜的直接进
  17. AJAX技术学院风连衣裙,清新又减龄学院风连衣裙,轻松穿出少女感
  18. 怎么获取网络舆情舆论数据的三大技术解决方法
  19. 小飞升值记——(终章)
  20. Android 百分比布局

热门文章

  1. 过去的七天我是这样过的
  2. Python基本数据类型之tuple
  3. .Net Core下如何管理配置文件(转载)
  4. jwt token and shiro
  5. JMV监控工具之JConsole
  6. 5.MySQL优化---索引优化专题
  7. mongo 的逻辑存储和物理存储
  8. jquery validate使用笔记
  9. finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码...
  10. hdu 4864 task 贪心