安卓开发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();  

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
本系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值