单例 Dialog 自定义

来源:互联网 发布:四维星瓷砖铺贴软件 编辑:程序博客网 时间:2024/06/07 05:16
当应用中出现错误信息时,经常会以Dialog的形式显示错误信息,如果每次都new一个Dialog,会很麻烦,也增加程序的开销,所以今天分享一种单例MessageDialog,程序中至多存在一个对象,使程序效率更高。

代码

public class MessageDialog extends Dialog {    private static MessageDialog dialog = null;    private TextView tvMsg;    public static MessageDialog getInstance(Context context) {        if (dialog == null) {            synchronized (MessageDialog.class) {                if (dialog == null) {                    dialog = new MessageDialog(context, R.style.MessageDialogStyle);                }            }        }        return dialog;    }    private MessageDialog(Context context, int themeResId) {        super(context, themeResId);        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        View layout = inflater.inflate(R.layout.dialog_message, null);        tvMsg = (TextView) layout.findViewById(R.id.tv_msg);        (layout.findViewById(R.id.bt_confirm)).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                dismiss();            }        });        this.addContentView(layout,                new LinearLayout.LayoutParams(                        ViewGroup.LayoutParams.WRAP_CONTENT,                        ViewGroup.LayoutParams.WRAP_CONTENT));//设置大小    }    public MessageDialog setMsg(String msg) {        tvMsg.setText(msg);        return this;    }

MessageDialogStyle

<style name="MessageDialogStyle" 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_message

<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/dialog_layout"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/shape_message_dialog">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv_msg"        android:text="Message"        android:textSize="18sp"        android:layout_centerHorizontal="true"        android:layout_margin="30dp"/>    <Button        android:id="@+id/bt_confirm"        android:layout_width="300dp"        android:layout_height="wrap_content"        android:text="确定"        android:layout_below="@id/tv_msg"        android:textSize="18dp"/></RelativeLayout>

使用

MessageDialog.getInstance(this).setMsg("good").show();
0 0
原创粉丝点击