安卓开发04:对话框例子

本文详细介绍了在布局中如何设置两个可点击的按钮,分别实现打开普通对话框与进度条的功能。通过示例代码展示了如何在Android应用中使用Button组件触发Dialog和ProgressDialog的显示,包括自定义对话框样式、添加输入框、多选项等功能,并通过线程实现进度条的动态更新。

layout中设置两个可点击按钮:

[html]  view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:layout_width="fill_parent"    
  4.     android:layout_height="fill_parent"    
  5.     android:orientation="vertical" >    
  6.         
  7. <Button    
  8.     android:id="@+id/btn_dialog"    
  9.     android:layout_width="fill_parent"     
  10.     android:layout_height="wrap_content"    
  11.     android:text="@string/dialog"    
  12.     android:onClick="onClickDialog" />    
  13.       
  14. <Button    
  15.     android:id="@+id/btn_dialogs"    
  16.     android:layout_width="fill_parent"     
  17.     android:layout_height="wrap_content"    
  18.     android:text="@string/progressDialog"    
  19.     android:onClick="onClickProgressDialog" />    
  20.      
  21. </LinearLayout>   

Activity代码:

[java]  view plain copy print ?
  1. package com.example.androidtest;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.app.AlertDialog;  
  6. import android.app.AlertDialog.Builder;  
  7. import android.app.Dialog;  
  8. import android.app.ProgressDialog;  
  9. import android.content.DialogInterface;  
  10. import android.os.Bundle;  
  11. import android.util.Log;  
  12. import android.view.Menu;  
  13. import android.view.View;  
  14. import android.view.Window;  
  15. import android.widget.EditText;  
  16. import android.widget.Toast;  
  17.   
  18. public class MainActivity extends Activity {  
  19.   
  20.     private String tag = "MainActivity";  
  21.   
  22.     @Override  
  23.     protected void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  26.         setContentView(R.layout.activity_main); //设置一个View模板  
  27.         Log.d(tag, "In the onCreate() event");  
  28.     }  
  29.   
  30.     @Override  
  31.     public void onStart() {  
  32.         super.onStart();  
  33.         Log.d(tag, "In the onStart() event");  
  34.         Toast.makeText(getBaseContext(), "onStart", Toast.LENGTH_SHORT).show();  
  35.     }  
  36.   
  37.     public void onRestart() {  
  38.         super.onRestart();  
  39.         Log.d(tag, "In the onRestart() event");  
  40.     }  
  41.   
  42.     public void onResume() {  
  43.         super.onResume();  
  44.         Log.d(tag, "In the onResume() event");  
  45.     }  
  46.   
  47.     public void onPause() {  
  48.         super.onPause();  
  49.         Log.d(tag, "In the onPause() event");  
  50.     }  
  51.   
  52.     public void onStop() {  
  53.         super.onStop();  
  54.         Log.d(tag, "In the onStop() event");  
  55.     }  
  56.   
  57.     public void onDestroy() {  
  58.         super.onDestroy();  
  59.         Log.d(tag, "In the onDestroy() event");  
  60.     }  
  61.   
  62.     @Override  
  63.     public boolean onCreateOptionsMenu(Menu menu) {  
  64.         getMenuInflater().inflate(R.menu.main, menu);  
  65.         return true;  
  66.     }  
  67.       
  68.     /** 
  69.      * 点击打开对话框 
  70.      * @param v 
  71.      */  
  72.     @SuppressWarnings("deprecation")  
  73.     public void onClickDialog(View v) {  
  74.         Log.d(tag, "onClickDialog");  
  75.         showDialog(0);  
  76.     }  
  77.   
  78.     /** 
  79.      * 点击打开进度条 
  80.      * @param v 
  81.      */  
  82.     public void onClickProgressDialog(View v) {  
  83.         Log.d(tag, "onClickProgressDialog");  
  84.         final ProgressDialog progressDialog = new ProgressDialog(this);  
  85.         progressDialog.setTitle("ProgressDialog"); //设置标题  
  86.         progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置样式  
  87.         progressDialog.setMessage("please wait...");  
  88.         progressDialog.setProgress(0); //设置进度开始点  
  89.         progressDialog.setMax(100); //进度最大是100  
  90.         progressDialog.show();  
  91.         new Thread(new Runnable() {  
  92.   
  93.             public void run() {  
  94.                 try {  
  95.                     Thread.sleep(1000);  
  96.                     progressDialog.setProgress(10); //每隔1秒就可以设置10  
  97.                     Thread.sleep(1000);  
  98.                     progressDialog.setProgress(20);  
  99.                     Thread.sleep(1000);  
  100.                     progressDialog.setProgress(30);  
  101.                     Thread.sleep(1000);  
  102.                     progressDialog.setProgress(40);  
  103.                     Thread.sleep(1000);  
  104.                     progressDialog.setProgress(50);  
  105.                     Thread.sleep(1000);  
  106.                     progressDialog.setProgress(60);  
  107.                     Thread.sleep(1000);  
  108.                     progressDialog.setProgress(70);  
  109.                     Thread.sleep(1000);  
  110.                     progressDialog.setProgress(90);  
  111.                     Thread.sleep(1000);  
  112.                     progressDialog.setProgress(100);  
  113.                     Thread.sleep(1000);  
  114.                     progressDialog.dismiss();  
  115.                 } catch (InterruptedException e) {  
  116.                     e.printStackTrace();  
  117.                 }  
  118.             }  
  119.         }).start();  
  120.     }  
  121.   
  122.     @Override  
  123.     protected Dialog onCreateDialog(int id) {  
  124.         switch (id) {  
  125.             case 0:  
  126.                 Builder builder = new AlertDialog.Builder(this); //创建一个对话框  
  127.                 builder.setTitle("Android 对话框"); //设置标题  
  128.                 builder.setMessage("message"); //设置message  
  129.                 builder.setIcon(android.R.drawable.ic_dialog_info); //设置图标  
  130.                 builder.setView(new EditText(this)); //设置一个填写的框  
  131.                 builder.setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, nullnull); //选择框  
  132.                 builder.setPositiveButton("确认"new DialogInterface.OnClickListener() {  
  133.                      
  134.                     public void onClick(DialogInterface dialog, int whichButton) {  
  135.                         Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show();  
  136.                     }  
  137.                 });  
  138.                 builder.setNegativeButton("取消"new DialogInterface.OnClickListener() {  
  139.   
  140.                     public void onClick(DialogInterface dialog, int whichButton) {  
  141.                         Toast.makeText(getBaseContext(), "NO!", Toast.LENGTH_SHORT).show();  
  142.                     }  
  143.                 });  
  144.                 return builder.create();  
  145.         }  
  146.         return null;  
  147.     }  
  148.   
  149. }  

普通对话框:

我们可以看到layout布局视图中有两个按钮,第一个按钮点击后打开的是普通对话框,点击事件android:onClick后调用Activity中的onClickDialog方法

[html]  view plain copy print ?
  1.       
  2. <Button    
  3.     android:id="@+id/btn_dialog"    
  4.     android:layout_width="fill_parent"     
  5.     android:layout_height="wrap_content"    
  6.     android:text="@string/dialog"    
  7.     android:onClick="onClickDialog" />    

Activity中,Dialog代码:

[java]  view plain copy print ?
  1. /** 
  2.  * 点击打开对话框 
  3.  * @param v 
  4.  */  
  5. @SuppressWarnings("deprecation")  
  6. public void onClickDialog(View v) {  
  7.     Log.d(tag, "onClickDialog");  
  8.     showDialog(0);  
  9. }  
  10.   
  11. /** 
  12.  * 需要重写创建Dialog方法 
  13.  */  
  14. @Override  
  15. protected Dialog onCreateDialog(int id) {  
  16.     switch (id) {  
  17.         case 0:  
  18.             Builder builder = new AlertDialog.Builder(this); //创建一个对话框  
  19.             builder.setTitle("Android 对话框"); //设置标题  
  20.             builder.setMessage("message"); //设置message  
  21.             builder.setIcon(android.R.drawable.ic_dialog_info); //设置图标  
  22.             builder.setView(new EditText(this)); //设置一个填写的框  
  23.             builder.setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, nullnull); //选择框  
  24.             builder.setPositiveButton("确认"new DialogInterface.OnClickListener() {  
  25.                  
  26.                 public void onClick(DialogInterface dialog, int whichButton) {  
  27.                     Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show();  
  28.                 }  
  29.             });  
  30.             builder.setNegativeButton("取消"new DialogInterface.OnClickListener() {  
  31.   
  32.                 public void onClick(DialogInterface dialog, int whichButton) {  
  33.                     Toast.makeText(getBaseContext(), "NO!", Toast.LENGTH_SHORT).show();  
  34.                 }  
  35.             });  
  36.             return builder.create();  
  37.     }  
  38.     return null;  
  39. }  




进度对话框:

layout中第二个按钮就是调用进度对话框,进度对话框可以显示程序运行进度。

[html]  view plain copy print ?
  1. <Button    
  2.     android:id="@+id/btn_dialogs"    
  3.     android:layout_width="fill_parent"     
  4.     android:layout_height="wrap_content"    
  5.     android:text="@string/progressDialog"    
  6.     android:onClick="onClickProgressDialog" />   

Activity中,我们需要创建一个进度Dialog:

[java]  view plain copy print ?
  1. /** 
  2.    * 点击打开进度条 
  3.    * @param v 
  4.    */  
  5.   public void onClickProgressDialog(View v) {  
  6.       Log.d(tag, "onClickProgressDialog");  
  7.       final ProgressDialog progressDialog = new ProgressDialog(this);  
  8.       progressDialog.setTitle("ProgressDialog"); //设置标题  
  9.       progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置样式  
  10.       progressDialog.setMessage("please wait...");  
  11.       progressDialog.setProgress(0); //设置进度开始点  
  12.       progressDialog.setMax(100); //进度最大是100  
  13.       progressDialog.show();  
  14.       new Thread(new Runnable() {  
  15.   
  16.           public void run() {  
  17.               try {  
  18.                   //每1秒后,进度条显示10%  
  19.                   Thread.sleep(1000);  
  20.                   progressDialog.setProgress(10); //每隔1秒就可以设置10  
  21.                   Thread.sleep(1000);  
  22.                   progressDialog.setProgress(20);  
  23.                   Thread.sleep(1000);  
  24.                   progressDialog.setProgress(30);  
  25.                   Thread.sleep(1000);  
  26.                   progressDialog.setProgress(40);  
  27.                   Thread.sleep(1000);  
  28.                   progressDialog.setProgress(50);  
  29.                   Thread.sleep(1000);  
  30.                   progressDialog.setProgress(60);  
  31.                   Thread.sleep(1000);  
  32.                   progressDialog.setProgress(70);  
  33.                   Thread.sleep(1000);  
  34.                   progressDialog.setProgress(90);  
  35.                   Thread.sleep(1000);  
  36.                   progressDialog.setProgress(100);  
  37.                   Thread.sleep(1000);  
  38.                   progressDialog.dismiss();  
  39.               } catch (InterruptedException e) {  
  40.                   e.printStackTrace();  
  41.               }  
  42.           }  
  43.       }).start();  
  44.   }  




消息模式弹出框:

[java]  view plain copy print ?
  1. Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show();   

也可以自定义:

[java]  view plain copy print ?
  1. Toast toast=Toast.makeText(getApplicationContext(), "显示带图片的toast"3000);   
  2.               toast.setGravity(Gravity.CENTER, 00);   
  3.               //创建图片视图对象   
  4.               ImageView imageView= new ImageView(getApplicationContext());   
  5.               //设置图片   
  6.               imageView.setImageResource(R.drawable.ic_launcher);   
  7.               //获得toast的布局   
  8.               LinearLayout toastView = (LinearLayout) toast.getView();   
  9.               //设置此布局为横向的   
  10.               toastView.setOrientation(LinearLayout.HORIZONTAL);   
  11.               //将ImageView在加入到此布局中的第一个位置   
  12.               toastView.addView(imageView, 0);   
  13.               toast.show();  

内容概要:本文详细介绍了一个基于C++的养老院管理系统的设计与实现,旨在应对人口老龄化带来的管理挑战。系统通过整合住户档案、健康监测、护理计划、任务调度等核心功能,构建了从数据采集、清洗、AI风险预测到服务调度与可视化的完整技术架构。采用C++高性能服务端结合消息队列、规则引擎和机器学习模型,实现了健康状态实时监控、智能任务分配、异常告警推送等功能,并解决了多源数据整合、权限安全、老旧硬件兼容等实际问题。系统支持模块化扩展与流程自定义,提升了养老服务效率、医护协同水平和住户安全保障,同时为运营决策提供数据支持。文中还提供了关键模块的代码示例,如健康指数算法、任务调度器和日志记录组件。; 适合人群:具备C++编程基础,从事软件开发或系统设计工作1-3年的研发人员,尤其是关注智慧养老、医疗信息系统开发的技术人员。; 使用场景及目标:①学习如何在真实项目中应用C++构建高性能、可扩展的管理系统;②掌握多源数据整合、实时健康监控、任务调度与权限控制等复杂业务的技术实现方案;③了解AI模型在养老场景中的落地方式及系统架构设计思路。; 阅读建议:此资源不仅包含系统架构与模型描述,还附有核心代码片段,建议结合整体设计逻辑深入理解各模块之间的协同机制,并可通过重构或扩展代码来加深对系统工程实践的掌握。
内容概要:本文详细介绍了一个基于C++的城市交通流量数据可视化分析系统的设计与实现。系统涵盖数据采集与预处理、存储与管理、分析建模、可视化展示、系统集成扩展以及数据安全与隐私保护六大核心模块。通过多源异构数据融合、高效存储检索、实时处理分析、高交互性可视化界面及模块化架构设计,实现了对城市交通流量的实时监控、历史趋势分析与智能决策支持。文中还提供了关键模块的C++代码示例,如数据采集、清洗、CSV读写、流量统计、异常检测及基于SFML的柱状图绘制,增强了系统的可实现性与实用性。; 适合人群:具备C++编程基础,熟悉数据结构与算法,有一定项目开发经验的高校学生、研究人员及从事智能交通系统开发的工程师;适合对大数据处理、可视化技术和智慧城市应用感兴趣的技术人员。; 使用场景及目标:①应用于城市交通管理部门,实现交通流量实时监测与拥堵预警;②为市民出行提供路径优化建议;③支持交通政策制定与信号灯配时优化;④作为智慧城市建设中的智能交通子系统,实现与其他城市系统的数据协同。; 阅读建议:建议结合文中代码示例搭建开发环境进行实践,重点关注多线程数据采集、异常检测算法与可视化实现细节;可进一步扩展机器学习模型用于流量预测,并集成真实交通数据源进行系统验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值