Android開發筆記: 5種對話框案例

来源:http://www.cnblogs.com/yihoudangxian/archive/2017/09/12/7511361.html
-Advertisement-
Play Games

5種android對話框1 彈出普通對話框 系統更新2 自定義對話框-- 用戶登錄3 時間選擇對話框 -- 時間對話框4 進度條對話框 -- 信息載入..5 popuWindow對話框 1 彈出普通對話框 系統更新 [csharp] view plain copy //彈出普通對話框 public  ...


5種android對話框
1 彈出普通對話框 --- 系統更新
2 自定義對話框-- 用戶登錄
3 時間選擇對話框 -- 時間對話框
4 進度條對話框 -- 信息載入..
5 popuWindow對話框

 

1 彈出普通對話框 --- 系統更新

 

 

[csharp] view plain copy  
  1. //彈出普通對話框   
  2.     public void showNormalDialog(View v) {  
  3.           
  4.         AlertDialog.Builder builder = new Builder(this);  
  5.         //設置Dialog的圖標  
  6.         builder.setIcon(R.drawable.ic_launcher);  
  7.         //設置對話框的標題  
  8.         builder.setTitle("更新");  
  9.         //設置message  
  10.         builder.setMessage("發現新版本是否更新?");  
  11.         //確定按鈕   取消按鈕  
  12.         builder.setPositiveButton("確定",new OnClickListener() {  
  13.             /** 
  14.              * 點擊確定按鈕 回調該方法 
  15.              */  
  16.             @Override  
  17.             public void onClick(DialogInterface dialog, int which) {  
  18.                 //到伺服器去下載新的版本 duration單詞意思:時長  
  19.                 Toast.makeText(MainActivity.this, "開始下載新版本", Toast.LENGTH_SHORT).show();  
  20.             }  
  21.         });  
  22.         builder.setNegativeButton("取消", new OnClickListener() {  
  23.             /** 
  24.              * 點擊取消按鈕 回調該方法 
  25.              */  
  26.             @Override  
  27.             public void onClick(DialogInterface dialog, int which) {  
  28.                 //到伺服器去下載新的版本 duration單詞意思:時長  
  29.                 Toast.makeText(MainActivity.this, "不需要更新", Toast.LENGTH_SHORT).show();  
  30.                   
  31.             }  
  32.         });  
  33.         builder.setNeutralButton("下一次", new OnClickListener() {  
  34.               
  35.             @Override  
  36.             public void onClick(DialogInterface dialog, int which) {  
  37.                 //到伺服器去下載新的版本 duration單詞意思:時長  
  38.                 Toast.makeText(MainActivity.this, "下一次吧", Toast.LENGTH_SHORT).show();  
  39.                   
  40.             }  
  41.         });  
  42.         //通過建造這老構建一個對話框  
  43.         Dialog dialog = builder.create();  
  44.         //顯示  
  45.         dialog.show();  
  46.       
  47.     }  



 

 

2 自定義對話框-- 用戶登錄

 

  佈局文件:

  user_name_dialog.xml

[csharp] view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:padding="10dip"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <TextView  
  9.             android:id="@+id/tv_title"  
  10.             android:layout_width="match_parent"  
  11.             android:layout_height="wrap_content"  
  12.             android:text="登錄信息"  
  13.             android:gravity="center"  
  14.             android:textAppearance="?android:attr/textAppearanceLarge" />  
  15.        
  16.       
  17.     <TextView  
  18.         android:id="@+id/tv_name"  
  19.         android:layout_width="wrap_content"  
  20.         android:layout_height="wrap_content"  
  21.         android:text="用戶名:" />  
  22.       
  23.     <EditText android:id="@+id/et_name"  
  24.         android:layout_width="match_parent"  
  25.         android:layout_height="wrap_content"  
  26.         android:hint="請輸入用戶名"/>  
  27.       
  28.     <TextView  
  29.         android:id="@+id/tv_pwd"  
  30.         android:layout_width="wrap_content"  
  31.         android:layout_height="wrap_content"  
  32.         android:text="密 碼:" />  
  33.       
  34.     <EditText android:id="@+id/et_pwd"  
  35.         android:layout_width="match_parent"  
  36.         android:layout_height="wrap_content"  
  37.         android:inputType="textPassword"  
  38.         android:hint="請輸入密碼"/>  
  39.    
  40.         <requestFocus />  
  41.   
  42.         <Button  
  43.             android:id="@+id/btn_confirm"  
  44.             android:layout_width="150dip"  
  45.             android:layout_height="wrap_content"  
  46.             android:layout_gravity="center"  
  47.             android:text="登錄" />  
  48.   
  49.         <Button  
  50.             android:id="@+id/btn_cancel"  
  51.             android:layout_width="150dip"  
  52.             android:layout_height="wrap_content"  
  53.             android:layout_gravity="center"  
  54.             android:text="取消" />  
  55.           
  56.   
  57. </LinearLayout>  

 

 

 java代碼:

 

[csharp] view plain copy  
  1. //自定義對話框  
  2.     Dialog cus_dialog ;  
  3.     public void showCustomDialog(View v){  
  4.         AlertDialog.Builder builder = new Builder(this);  
  5.         // 佈局填充器  
  6.         LayoutInflater inflater = LayoutInflater.from(this);  
  7.         View view = inflater.inflate(R.layout.user_name_dialog, null);  
  8.           
  9.         // 設置自定義的對話框界面  
  10.         builder.setView(view);  
  11.           
  12.         // 獲取用戶名密碼  
  13.         final EditText name = (EditText) view.findViewById(R.id.et_name);  
  14.         final EditText pwd = (EditText) view.findViewById(R.id.et_pwd);  
  15.         Button btn_confirm = (Button) view.findViewById(R.id.btn_confirm);  
  16.           
  17.         btn_confirm.setOnClickListener(new View.OnClickListener() {  
  18.               
  19.             @Override  
  20.             public void onClick(View v) {  
  21.                 // TODO 自動生成的方法存根  
  22.                 if(name.getText().toString().trim().equals("abc")){  
  23.                     showToastMsg("用戶名正確");  
  24.                     // 對話框消失  
  25.                     cus_dialog.dismiss();  
  26.                 }  
  27.                 else{  
  28.                     showToastMsg("用戶名錯誤");  
  29.                 }  
  30.             }  
  31.         });  
  32.           
  33.         Button btnCancel = (Button) view.findViewById(R.id.btn_cancel);  
  34.           
  35.         btnCancel.setOnClickListener(new View.OnClickListener() {  
  36.               
  37.             @Override  
  38.             public void onClick(View v) {  
  39.                 // 對話框消失  
  40.                 cus_dialog.dismiss();  
  41.             }  
  42.         });  
  43.         cus_dialog = builder.create();  
  44.         cus_dialog.show();  
  45.           
  46.           
  47.     }  



 下載地址:http://www.jinhusns.com/Products/Download/?type=yhq

 

3 時間選擇對話框 -- 時間對話框

 

 

[csharp] view plain copy  
  1. // 時間選擇對話框  
  2. public void showTimePickerDialog(View v){  
  3.       
  4.     Calendar sysDate = Calendar.getInstance();  
  5.     //設置系統時間  
  6.     sysDate.setTimeInMillis(System.currentTimeMillis());  
  7.     int hour = sysDate.get(Calendar.HOUR_OF_DAY);  
  8.     int minute = sysDate.get(Calendar.MINUTE);  
  9.       
  10.       
  11.     TimePickerDialog time = new TimePickerDialog(this,  
  12.             new OnTimeSetListener() {  
  13.                   
  14.                 @Override  
  15.                 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {  
  16.                     // TODO 自動生成的方法存根  
  17.                     showToastMsg(" hourOfDay:" + hourOfDay + "  minute:" + minute);  
  18.                 }  
  19.             }, //callBack 選擇時間後的回調方法  
  20.             hour,//hourOfDay 當前系統時間  
  21.             minute,//hourOfDay 當前系統時間  
  22.             true);//是否24小時制  
  23.       
  24.     time.show();  
  25. }  


 

 

4 進度條對話框 -- 信息載入..

 

 

[csharp] view plain copy  
  1. /** 
  2.      * 進度條對話框 
  3.      * @param v 
  4.      */  
  5.     public void showProgressDialog(View v){  
  6.               
  7.         final ProgressDialog progress = new ProgressDialog(this);  
  8.         progress.setProgress(R.drawable.img2);  
  9.         progress.setTitle("標題");  
  10.           
  11.         progress.setMessage("載入中...");  
  12.         //樣式1 進度條樣式  
  13.         progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  
  14.         //樣式2 有載入圖標  
  15.         //progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);  
  16.           
  17.         //最大  
  18.         progress.setMax(100);  
  19.         //當前  
  20.         progress.setProgress(50);  
  21.         progress.setButton("確定", new  OnClickListener() {  
  22.               
  23.             @Override  
  24.             public void onClick(DialogInterface dialog, int which) {  
  25.                 // TODO 自動生成的方法存根  
  26.                 showToastMsg("確定按鈕");  
  27.             }  
  28.         });  
  29.           
  30.            
  31.         progress.setButton2("取消", new OnClickListener() {  
  32.               
  33.             @Override  
  34.             public void onClick(DialogInterface dialog, int which) {  
  35.                 // TODO 自動生成的方法存根  
  36.                 showToastMsg("取消按鈕");  
  37.             }  
  38.         });  
  39.           
  40.         progress.show();   
  41.            
  42.         new Thread(new Runnable() {    
  43.                 
  44.             @Override    
  45.             public void run() {    
  46.                 // TODO Auto-generated method stub    
  47.                 int i = 0;    
  48.                 while (i < 100) {    
  49.                     try {    
  50.                         Thread.sleep(200);    
  51.                         // 更新進度條的進度,可以在子線程中更新進度條進度    
  52.                        progress.incrementProgressBy(5);    
  53.                        // progress.incrementSecondaryProgressBy(10);//二級進度條更新方式    
  54.                         i += 5;    
  55.         
  56.                     } catch (Exception e) {    
  57.                         // TODO: handle exception    
  58.                     }    
  59.                 }    
  60.                 // 在進度條走完時刪除Dialog    
  61.                 progress.dismiss();    
  62.         
  63.             }    
  64.         }).start();    
  65.           
  66.     }  


 

 

 

 

 

 

 

 

 

5 popuWindow對話框

 

 

[csharp] view plain copy  
  1. Button btn_popu;  
  2.     //popuWindow對話框  
  3.     public void showPopuWindow(View v){  
  4.           
  5.         btn_popu = (Button) v;  
  6.         // 設置佈局  
  7.         View view = LayoutInflater.from(this).inflate(R.layout.pop_window, null);  
  8.           
  9.         PopupWindow window = new PopupWindow(this);  
  10.         window.setContentView(view);  
  11.         window.setWidth(360);  
  12.         window.setHeight(200);  
  13.   
  14.         int[] location = new int[2];  
  15.         // 獲取按鈕坐標  
  16.         btn_popu.getLocationInWindow(location);  
  17.         window.setFocusable(true);  
  18.         window.setBackgroundDrawable(getResources().getDrawable(R.drawable.back_null));  
  19.         window.showAtLocation(btn_popu, Gravity.LEFT |Gravity.TOP , location[0]+ btn_popu.getWidth(), location[1] + 0 );  
  20.           
  21.         //showToastMsg("" + (location[0]+ btn_popu.getWidth())+"   "+ (location[1] + btn_popu.getHeight() / 2));  
  22.           
  23.         ImageView img_start = (ImageView) view.findViewById(R.id.img_start);  
  24.         img_start.setOnClickListener(new View.OnClickListener() {  
  25.               
  26.             @Override  
  27.             public void onClick(View v) {  
  28.                 // TODO 自動生成的方法存根  
  29.                 showToastMsg("點擊了啟動");  
  30.             }  
  31.         });  
  32.           
  33.     }  



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 父頁面: 子頁面: ...
  • 上篇博文【 Js利用Canvas實現圖片壓縮 】中做了圖片壓縮上傳,但是在IOS真機測試的時候,發現圖片預覽的時候自動逆時針旋轉了90度。對於這個bug,我完全不知道問題出在哪裡,接下來就是面向百度編程了。通過度娘找到了相關資料,解決方法記錄在此。這個問題的具體因素其實我還是不清楚是為何導致的,只有 ...
  • 從廣義上來講,css3動畫可以分為兩種。 過渡動畫 第一種叫過渡(transition)動畫,就是從初始狀態過渡到結束狀態這個過程中所產生的動畫。所謂的狀態就是指大小、位置、顏色、變形(transform)等等這些屬性。css過渡只能定義首和尾兩個狀態,所以是最簡單的一種動畫。要想使一個元素產生過渡 ...
  • 程式的流程圖: 主要代碼: 服務端 app.js 先載入所需要的通信模塊: 創建用戶列表和消息列表: 綁定並監聽80埠: 客戶端連接成功後,觸發響應事件connection,完成要綁定的事件並實現客戶端出發的事件: 客戶端 index.js: 先初始化用戶信息: 然後連接伺服器端: 連接成功後,對 ...
  • 一般 直接new Date() 是不會出現相容性問題的,而 new Date(datetimeformatstring) 常常會出現瀏覽器相容性問題,為什麼,datetimeformatstring中的某些格式瀏覽器不相容。 1. 無參 a. IE > IE9-(不相容) > IE9+(相容,包含I ...
  • xml <?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too ...
  • 封面預覽 前言 使用百度貼吧客戶端的時候發發現載入的小動畫挺有意思的,於是自己動手寫寫看。想學習自定義View以及自定義動畫的小伙伴一定不要錯過哦。 讀者朋友需要有最基本的canvas繪圖功底,比如畫筆Paint的簡單使用、Path如何畫直線等簡單的操作,不熟悉也沒關係,下文帶大家擼代碼的時候會簡單 ...
  • 數組的介紹 數組的介紹 數組(Array)是一串有序的由相同類型元素構成的集合,數組中的集合元素是有序的,可以重覆出現。在Swift中數組類型是Array,是一個泛型集合。數組分成:可變數組和不可變數組,分別使用let修飾的數組是不可變數組,使用var修飾的數組是可變數組。 數組的初始化 數組的初始 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...