標籤:
做Android應用中,最缺少不了的就是自訂Dialog,對於系統預設提供的Dialog樣式,一般都不複合我們應用的樣式。
自訂Dialog需要3步驟即可:
1、主要的重寫Dialog的Java類
2、清除Dialog Theme,在style.xml檔案中加一個即可
3、使用方法
一、建立CustomPopDialog2.java類
package com.lenovocw.music.app.widget;import com.lenovocw.zhuhaizxt.R;import android.app.Dialog;import android.content.Context;import android.graphics.Bitmap;import android.view.LayoutInflater;import android.view.View;import android.view.WindowManager.LayoutParams;import android.widget.ImageView;/** * 該自訂Dialog應用在:分享彈出框中的查看二維碼 * * @author SHANHY([email protected]) * @date 2015年12月4日 */public class CustomPopDialog2 extends Dialog { public CustomPopDialog2(Context context) { super(context); } public CustomPopDialog2(Context context, int theme) { super(context, theme); } public static class Builder { private Context context; private Bitmap image; public Builder(Context context) { this.context = context; } public Bitmap getImage() { return image; } public void setImage(Bitmap image) { this.image = image; } public CustomPopDialog2 create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); final CustomPopDialog2 dialog = new CustomPopDialog2(context,R.style.Dialog); View layout = inflater.inflate(R.layout.dialog_share_qrcode, null); dialog.addContentView(layout, new LayoutParams( android.view.ViewGroup.LayoutParams.WRAP_CONTENT , android.view.ViewGroup.LayoutParams.WRAP_CONTENT)); dialog.setContentView(layout); ImageView img = (ImageView)layout.findViewById(R.id.img_qrcode); img.setImageBitmap(getImage()); return dialog; } }}
這裡簡單說明下,我們自訂Dialog需要準備一個自己的View布局檔案,主要關注create()方法即可,本例中就是直接顯示一個圖片。
二、style.xml中添加theme,我們在create方法中調用R.style.Dialog
<style name="Dialog" parent="android:style/Theme.Dialog"> <item name="android:background">#00000000</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> </style>
三、使用自訂的Dialog
Bitmap bitmap = xxxxx;// 這裡是擷取圖片Bitmap,也可以傳入其他參數到Dialog中 CustomPopDialog2.Builder dialogBuild = new CustomPopDialog2.Builder(context); dialogBuild.setImage(bitmap); CustomPopDialog2 dialog = dialogBuild.create(); dialog.setCanceledOnTouchOutside(true);// 點擊外部地區關閉 dialog.show();
最終:
Android自訂Dialog簡單一實例