安卓開發:四種對話框

来源:https://www.cnblogs.com/xuyiqing/archive/2018/04/22/8908054.html
-Advertisement-
Play Games

先展示一下四種對話框的效果圖: 普通對話框 單選對話框: 多選對話框: 進度條對話框: 一個簡單的佈局,放四個按鈕: 四種對話框: ...


先展示一下四種對話框的效果圖:

普通對話框

 

單選對話框:

 

多選對話框:

 

進度條對話框:

 

 

 

一個簡單的佈局,放四個按鈕:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click1"
        android:text="普通對話框" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click2"
        android:text="單選對話框" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click3"
        android:text="多選對話框" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click4"
        android:text="進度條對話框" />

</LinearLayout>

 

 

四種對話框:

package org.dreamtech.dialog;

import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    // 普通對話框
    public void click1(View v) {
        AlertDialog.Builder builder = new Builder(this);
        builder.setTitle("對話框標題");
        builder.setMessage("對話框內容");
        builder.setPositiveButton("確認", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "點擊了確定按鈕",
                        Toast.LENGTH_LONG).show();
            }
        });
        builder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "點擊了取消按鈕",
                        Toast.LENGTH_LONG).show();
            }
        });
        builder.show();
    }

    // 單選對話框
    public void click2(View v) {
        AlertDialog.Builder builder = new Builder(this);
        builder.setTitle("對話框標題");
        final String items[] = { "選項1", "選項2", "選項3" };
        builder.setSingleChoiceItems(items, -1, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String item = items[which];
                Toast.makeText(getApplicationContext(), "選中" + item,
                        Toast.LENGTH_LONG).show();
                dialog.dismiss();
            }
        });
        builder.show();
    }

    // 多選對話框
    public void click3(View v) {
        AlertDialog.Builder builder = new Builder(this);
        builder.setTitle("對話框標題");
        final String items[] = { "選項1", "選項2", "選項3" };
        final boolean checkItems[] = { false, false, false };
        builder.setMultiChoiceItems(items, checkItems,
                new OnMultiChoiceClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which,
                            boolean isChecked) {

                    }
                });
        builder.setPositiveButton("確定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                StringBuffer sb = new StringBuffer();
                for (int i = 0; i < checkItems.length; i++) {
                    if (checkItems[i]) {
                        String choice = items[i];
                        sb.append(choice + " ");
                    }
                }
                Toast.makeText(getApplicationContext(), "選中" + sb.toString(),
                        Toast.LENGTH_LONG).show();
                dialog.dismiss();
            }
        });
        builder.show();
    }

    // 進度條對話框
    public void click4(View v) {
        final ProgressDialog dialog = new ProgressDialog(this);
        dialog.setTitle("正在載入");
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.show();
        new Thread() {
            public void run() {
                dialog.setMax(100);
                for (int i = 0; i <= 100; i++) {
                    dialog.setProgress(i);
                    SystemClock.sleep(50);
                }
                dialog.dismiss();
            };
        }.start();
    }
}

 


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

-Advertisement-
Play Games
更多相關文章
  • 很簡單的需求,將用戶微信名寫入MySQl即可,但是測試過程中卻遇到了問題,微信名中的emoji寫入資料庫失敗。解決步驟如下 1.瞭解utf8mb4 MySQL從5.5.3版本開始支持utf8mb4編碼,預設編碼還是utf8。目前最新的MySQL的預設編碼已經改為utf8mb4了,因為utf8可以表示 ...
  • Redis 是一個開源的使用 ANSI C 語言編寫、支持網路、可基於記憶體亦可持久化的日誌 型、Key-Value 資料庫。 redis提供五種數據類型string,hash,list,set及sorted set。 string是最基本的類型,而且string類型是二進位安全的。意思是redis的 ...
  • 資料庫 一、基本概念 1.數據 (1)數據的定義:對客觀事物的符號表示,如圖形符號、數字、字母等,數據是資料庫中存儲的基本對象 (2)數據的種類:文字、圖形、圖像、聲音 (3)數據的特點:數據與其語義是不可分的 2.資料庫 (1)資料庫的定義:資料庫(Database簡稱DB)是按照數據結構來組織、 ...
  • 本文目錄: 1.insert和replace插入數據 1.1 insert into values() 1.2 insert into set 1.3 insert into select_statement 1.4 create table select 1.5 處理鍵值重覆的問題 1.6 完整的 ...
  • MariaDB/MySQL中使用表級鎖的存儲引擎(例如MyISAM、Aria(MariaDB對MyISAM引擎的改進,前身是MyISAM))在讀(select)、寫操作(insert、delete、update、replace)上有優先順序的概念。預設情況下,寫操作的優先順序高於讀操作。註:不適用於In ...
  • 本文為mariadb官方手冊:XtraDB/InnoDB中的AUTO_INCREMENT處理方式的譯文。 原文:https://mariadb.com/kb/en/auto_increment-handling-in-xtradbinnodb/ 我提交到MariaDB官方手冊的譯文:https:// ...
  • Android的擴展工程包含在external文件夾中,這是一些經過修改後適應Android系統的開源工程,這些工程有些在主機上運行,有些在目標機上運行; (主機)ext2文件系統生成工具 ...
  • 一、Android中的緩存策略 一般來說,緩存策略主要包含緩存的添加、獲取和刪除這三類操作。如何添加和獲取緩存這個比較好理解,那麼為什麼還要刪除緩存呢?這是因為不管是記憶體緩存還是硬碟緩存,它們的緩存大小都是有限的。當緩存滿了之後,再想其添加緩存,這個時候就需要刪除一些舊的緩存並添加新的緩存。 因此L ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...