Android常用的Dialog對話框用法

来源:http://www.cnblogs.com/hejiaoshou/archive/2017/09/03/7468984.html
-Advertisement-
Play Games

Android的版本有很多通常開發的時候對話框大多數使用自定義或是 Google提供的V4, V7 相容包來開發保持各個版本的對話框樣式統一,所以這裡使用的是V7 包里的AlertDialog。 ...


Android的版本有很多通常開發的時候對話框大多數使用自定義或是 Google提供的V4,

V7 相容包來開發保持各個版本的對話框樣式統一,所以這裡使用的是V7 包里的AlertDialog。

  1 import android.app.ProgressDialog;
  2 import android.content.DialogInterface;
  3 import android.os.Bundle;
  4 import android.os.SystemClock;
  5 import android.support.v7.app.AlertDialog;
  6 import android.support.v7.app.AppCompatActivity;
  7 import android.view.View;
  8 import android.widget.Toast;
  9 
 10 public class MainActivity extends AppCompatActivity {
 11 
 12     @Override
 13     protected void onCreate(Bundle savedInstanceState) {
 14         super.onCreate(savedInstanceState);
 15         setContentView(R.layout.activity_main);
 16     }
 17 
 18     /**
 19      * 普通對話框
 20      *
 21      * @param view
 22      */
 23     public void click1(View view) {
 24         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 25         //設置標題
 26         builder.setTitle("用戶安全提示:");
 27         //設置提示消息
 28         builder.setMessage("你確定接受用戶隱私條款嗎?");
 29         builder.setPositiveButton("確定", null);
 30         builder.setNegativeButton("取消", null);
 31         //顯示dialog
 32         builder.show();
 33     }
 34 
 35     /**
 36      * 單選對話框
 37      *
 38      * @param view
 39      */
 40     public void click2(View view) {
 41         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 42         //設置標題
 43         builder.setTitle("選擇一項你的專業:");
 44         //設置要顯示的item條目
 45         final String items[] = {"Java", "C++", "PHP", "Android", "C#", "Python", "MySql"};
 46         //設置item點擊事件
 47         builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
 48             @Override
 49             public void onClick(DialogInterface dialog, int which) {
 50                 Toast.makeText(MainActivity.this, "你選擇了:" + items[which], Toast.LENGTH_SHORT).show();
 51                 dialog.dismiss();
 52             }
 53         });
 54         //顯示dialog
 55         builder.show();
 56     }
 57 
 58     /**
 59      * 多選對話框
 60      *
 61      * @param view
 62      */
 63     public void click3(View view) {
 64         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 65         //設置標題
 66         builder.setTitle("選擇你的興趣愛好:");
 67         //設置要顯示的item條目
 68         final String items[] = {"看書", "玩游戲", "看電影", "打球", "健身", "自駕游", "去酒吧"};
 69         //設置每個條目的選擇狀態 false為沒有選中 true為選中
 70         final boolean[] checks = {true, true, false, false, false, false, false};
 71         //設置item點擊事件 條目被選中時 修改checks里的boolean值
 72         builder.setMultiChoiceItems(items, checks, new DialogInterface.OnMultiChoiceClickListener() {
 73             @Override
 74             public void onClick(DialogInterface dialog, int which, boolean isChecked) {
 75                 checks[which] = isChecked;
 76             }
 77         });
 78         //設置確定按鈕點擊事件
 79         builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
 80             @Override
 81             public void onClick(DialogInterface dialog, int which) {
 82                 StringBuffer buffer = new StringBuffer();
 83                 for (int i = 0; i < checks.length; i++) {
 84                     if (checks[i]) {
 85                         buffer.append(items[i] + ",");
 86                     }
 87                 }
 88                 Toast.makeText(MainActivity.this, buffer.toString(), Toast.LENGTH_SHORT).show();
 89             }
 90         });
 91         builder.setNegativeButton("取消", null);
 92         //顯示dialog
 93         builder.show();
 94     }
 95 
 96     /**
 97      * 進度條對話框
 98      *
 99      * @param view
100      */
101     public void click4(View view) {
102         final ProgressDialog dialog = new ProgressDialog(this);
103         dialog.setTitle("請稍等:");
104         //dialog.setMessage("正在努力載入...");
105         //dialog.show();
106 
107         //以下的屬性不設置 進度條樣式預設為圓形
108 
109         //設置進度最大值為100
110         dialog.setMax(100);
111         //設置進度條樣式為水平
112         dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
113 
114         dialog.show();
115         //模擬一個進度載入過程
116         new Thread() {
117             @Override
118             public void run() {
119                 for (int i = 0; i <= 100; i++) {
120                     dialog.setProgress(i);
121                     //休眠200毫秒
122                     SystemClock.sleep(200);
123                 }
124                 dialog.dismiss();
125             }
126         }.start();
127     }
128 }


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

-Advertisement-
Play Games
更多相關文章
  • 一、對資料庫的操作 1、創建一個庫 create database 庫名; 創建帶有編碼的:create database 庫名 character set 編碼; 查看編碼:show create database 庫名; 2、刪除一個庫 drop database 庫名; 3、使用庫 use 庫 ...
  • 避免ANR異常 不要在主線程中執行耗時的代碼,不然很容易出現anr錯誤。 原因: 解決方法: ...
  • android中進程的優先順序 ...
  • 內容觀察者實現簡訊監聽 通過內容觀察者監聽簡訊是否發生變化,如果發生變化,就用內容提供者讀取簡訊的內容。 原理: 當簡訊發生變化(比如說來簡訊),簡訊應用就會通知內容觀察者我的簡訊發生了變化,並把變化位置簡訊的uri傳過來,有uri之後,內容提供者就可以很方便的讀取簡訊內容了,不過肯定要保證許可權夠。 ...
  • 虛擬簡訊 ...
  • 內容提供者 參考: Android四大組件之內容提供者--ContentProvider - java小兵 - CSDN博客http://blog.csdn.net/wodewutai17quiet/article/details/46670597 Android四大組件之內容提供者--Conten ...
  • 在Android開發中難免會遇到大量的數據載入到ListView中進行顯示, 然後其中最重要的數據傳遞橋梁Adapter適配器是常用的,隨著市場的需 求變化ListView'條目中的內容是越來越多這就需要程式員來自定義適配器, 而關鍵的就是適配器的優化問題,適配器沒有優化好往往就會造成OOM (記憶體 ...
  • 本文主要介紹json最原始的解析與google提供的gson工具類解析 ①json解析 ②gson解析 1)首先在AndroidStudio中安裝一個GsonFormat插件 2)新建一個javaben類然後按下組合鍵alt+insert 把完整的json數據拷貝到編輯框中 3)添加gson的依賴包 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...