自定义Dialog,多处方便的使用

来源:互联网 发布:淘宝店铺二楼怎么开通 编辑:程序博客网 时间:2024/05/17 00:49

     开发中经常会遇到这样的问题: 自定义了一个弹出窗口,窗口上面的提示信息还有按钮的字都是固定的,换一个地方这些提示信息就不适用了.自己写了一个很简单的,每次实例化新的dialog时,只需要将文字传过去就好了.

     与大家分享一下,能力有限,有问题的地方还望朋友们帮忙指正,谢谢.

     

      首先自定义样式,两句话,相信不用多说了吧.

<!-- 正在加载对话框主题 --><style name="DialogTheme" parent="@android:style/Theme.Dialog">    <item name="android:windowBackground">@android:color/transparent</item>    <item name="android:windowNoTitle">true</item></style>

        接下来我写了一个dialog的小背景.

<shape xmlns:android="http://schemas.android.com/apk/res/android"       android:shape="rectangle">    <corners android:radius="10dp" />    <solid android:color="#55000000" /></shape>

       然后就是正题了,注释写的应该算挺详细了,看代码吧

/** * 自定义dialog */public class CustomDialog extends Dialog implements View.OnClickListener {    private static int default_width = 500;//宽度    private static int default_height = 400;//高度    private Button dialogOneBtn, dialogTwoBtn;    private TextView titleMessage;    private String title, oneBtnTitle, twoBtnTitle;    private Context context;    /**     * 初始化dialog传过来的参数     * @tilte 本dialog的提示文字     * @oneBtnTitle dialog第一个按钮上的文字     * @twoBtnTitle dialog第二个按钮上的文字     * **/    public CustomDialog(Context context,String title, String oneBtnTitle, String twoBtnTitle) {        super(context, R.style.DialogTheme);        this.context = context;        this.title = title;        this.oneBtnTitle = oneBtnTitle;        this.twoBtnTitle = twoBtnTitle;        init();    }    private void init(){        setContentView(R.layout.dialog_layout);        titleMessage = (TextView)findViewById(R.id.titleMessage);        dialogOneBtn = (Button)findViewById(R.id.dialogOneBtn);        dialogTwoBtn = (Button)findViewById(R.id.dialogTwoBtn);        dialogOneBtn.getBackground().setAlpha(100);//设置按钮的透明度        dialogTwoBtn.getBackground().setAlpha(100);        titleMessage.setText(title);        dialogOneBtn.setText(oneBtnTitle);        dialogTwoBtn.setText(twoBtnTitle);        dialogOneBtn.setOnClickListener(this);        dialogTwoBtn.setOnClickListener(this);        //设置窗口属性        Window window = getWindow();        WindowManager.LayoutParams params = window.getAttributes();        float density = getDensity(context);        params.width = default_width;        params.height = default_height;        window.setAttributes(params);        //设置点击dialog外部不能关闭dialog        this.setCanceledOnTouchOutside(false);    }    /**     * 获取显示密度     * **/    public float getDensity(Context context) {        Resources resources = context.getResources();        DisplayMetrics dm = resources.getDisplayMetrics();        return dm.density;    }    private CustomDialogListener customDialogListener;    public void setCustomDialogListener(CustomDialogListener customDialogListener){        this.customDialogListener = customDialogListener;    }    /**     * 自定义接口回调dialog按钮的点击事件     * **/    public interface CustomDialogListener{        void onClick(View view);    }    /**     * dialog的按钮点击事件     * **/    @Override    public void onClick(View v) {        customDialogListener.onClick(v);    }

     接下来是调用的activity的代码.

     好了, 完成了,运行一下,看看效果如何:




1 0