Android—關於自定義對話框的工具類

来源:http://www.cnblogs.com/yunfang/archive/2016/05/31/5548010.html
-Advertisement-
Play Games

開發中有很多地方會用到自定義對話框,為了避免不必要的城府代碼,在此總結出一個工具類。 彈出對話框的地方很多,但是都大同小異,不同無非就是提示內容或者圖片不同,下麵這個類是將提示內容和圖片放到了自定義函數的參數中,並且是靜態,可以用類直接調用此函數。 對話框的xml文件佈局: Activity中彈出對 ...


開發中有很多地方會用到自定義對話框,為了避免不必要的城府代碼,在此總結出一個工具類。

彈出對話框的地方很多,但是都大同小異,不同無非就是提示內容或者圖片不同,下麵這個類是將提示內容和圖片放到了自定義函數的參數中,並且是靜態,可以用類直接調用此函數。

public class MyAutoDialogUtil {

	private static AlertDialog dialog;

	/**
	 * 
	 * @param context
	 *            上下文
	 * @param text
	 *            自定義顯示的文字
	 * @param id
	 *            自定義圖片資源
	 */
	public static void showScanNumberDialog(final Context context, String text,
			int id) {
		// SysApplication.getInstance().exit();
		AlertDialog.Builder builder = new AlertDialog.Builder(context);
		// 創建對話框
		dialog = builder.create();
		// 沒有下麵這句代碼會導致自定義對話框還存在原有的背景

		// 彈出對話框
		dialog.show();
		// 以下兩行代碼是對話框的EditText點擊後不能顯示輸入法的
		dialog.getWindow().clearFlags(
				WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
						| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
		dialog.getWindow().setSoftInputMode(
				WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
		// *** 主要就是在這裡實現這種效果的.
		// 設置視窗的內容頁面,shrew_exit_dialog.xml文件中定義view內容
		Window window = dialog.getWindow();
		window.setContentView(R.layout.auto_dialog);
		TextView tv_scan_number = (TextView) window
				.findViewById(R.id.tv_dialoghint);
		tv_scan_number.setText(text);
		// 實例化確定按鈕
		Button btn_hint_yes = (Button) window.findViewById(R.id.btn_hint_yes);
		// 實例化取消按鈕
		Button btn_hint_no = (Button) window.findViewById(R.id.btn_hint_no);
		// 實例化圖片
		ImageView iv_dialoghint = (ImageView) window
				.findViewById(R.id.iv_dialoghint);
		// 自定義圖片的資源
		iv_dialoghint.setImageResource(id);
		btn_hint_yes.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Toast.makeText(context, "確定", 0).show();
			}
		});
		btn_hint_no.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Toast.makeText(context, "取消", 0).show();
			}
		});
	}

	public static void dismissScanNumberDialog() {
		dialog.dismiss();
	}

}

 對話框的xml文件佈局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_customs_autodialog_background"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="16dp" >

        <ImageView
            android:id="@+id/iv_dialoghint"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="16dp"
            android:src="@drawable/app_customs_choose_background" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="提示"
                android:textColor="#000"
                android:textSize="22sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:text="點擊確定進入"
                android:textColor="#f00"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/tv_dialoghint"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                android:text="下一步 >>"
                android:textColor="#f00"
                android:textSize="20sp" />
        </LinearLayout>
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.1dp"
        android:background="#000" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_hint_yes"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/app_custom_changeactivity_btn_yess"
            android:padding="8dp"
            android:text="確定"
            android:textColor="#1e9ee1"
            android:textSize="20sp" />

        <View
            android:layout_width="0.1dp"
            android:layout_height="match_parent"
            android:background="#000" />

        <Button
            android:id="@+id/btn_hint_no"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/app_custom_changeactivity_btn_yess"
            android:padding="8dp"
            android:text="取消"
            android:textColor="#1e9ee1"
            android:textSize="20sp" />
    </LinearLayout>

</LinearLayout>

 Activity中彈出對話框函數的實現:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				MyAutoDialogUtil.showScanNumberDialog(MainActivity.this, "自定義文字", R.drawable.app_customs_choose_background);
			}
		});
	}


}

 MainActivity中調用了MyAutoDialogUtil類中的showScanNumberDialog()方法,並將上下文,自定義的內容和圖片的資源傳遞到參數中從而得到需要的效果。

上圖:

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

-Advertisement-
Play Games
更多相關文章
  • 效果一: 1.首先,整個底部懸浮通欄廣告是固定在瀏覽器的底部,隨著瀏覽器的滾動,底部懸浮廣告始終在瀏覽器視窗中。這裡有幾個關鍵點:通欄,固定,黑色。 所以:首先我們必須給懸浮通欄廣告整體一個100%的寬度,其次給它設定固定定位,固定在瀏覽器底部,背景色為黑色,透明度為0.7。 2. 底部懸浮通欄廣告 ...
  • <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>GetUserMedia實例</title></head><body> <video id="video" autoplay><ideo></body><sc ...
  • 今天比較閑所以就花點時間又寫了點東西。 相信這種價格表大家不會陌生 現在我就模仿它做一個簡單版本的。效果如下 首先需要兩個時間控制項,我這裡用的是HTML5裡面的時間控制項,這個沒限制喜歡用什麼就用什麼 直接上代碼吧!我都寫了註釋。 ...
  • 如題: ...
  • [Bootstrap](http://hovertree.com/menu/bootstrap/) 是由兩個 twitter 員工開發並開源的前端框架,非常火爆,而如此火爆自然有它的道理,在我們團隊的所有項目中正全面推行使用 Bootstrap,我想根據自己的實際使用體驗來說明一下為什麼要用 Boo ...
  • 在前端領域里,很多時候,一個簡單的功能可以有很多種不同的實現方式,今天就拿星期幾的不同腳本實現方法作為例子,希望能激發童鞋們更多的想法。 1、使用 if 語句: 2、使用switch case 語句: 3、神器,一句話解決: ...
  • 說說我自己的思路 首先需要一個初始div 然後就是滑鼠事件,想象一下拖動這個過程需要用到哪些事件。。。 1、滑鼠按鈕按下事件mousedown 2、滑鼠按鈕鬆開事件mouseup 3、滑鼠移動事件mousemove 第一步:給div添加滑鼠按鈕按下事件,這個事件需要完成以下事情 一、獲取div到瀏覽 ...
  • Fragment使用的基本知識點總結, 包括Fragment的添加, 參數傳遞和通信, 生命周期和各種操作. ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...