上一篇讲解了Android的四大对话框形式,今天我们来讲解第五种形式,自定义,也是最牛逼的。有没有很激动?


实现自定义对话框的步骤

1、先自定义一个对话框样式

<?xml version="1.0" encoding="utf-8"?>                            

2、创建一个ConfirmDialog类,继承Dialog类,实现里面方法,在里面创建自定义样式的弹出框。

package com.corn.widget;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.TextView;import com.corn.R;public class ConfirmDialog extends Dialog {    private Context context;    private String title;    private String confirmButtonText;    private String cacelButtonText;    private ClickListenerInterface clickListenerInterface;    public interface ClickListenerInterface {        public void doConfirm();        public void doCancel();    }    public ConfirmDialog(Context context, String title, String confirmButtonText, String cacelButtonText) {        super(context, R.style.MyDialog);        this.context = context;        this.title = title;        this.confirmButtonText = confirmButtonText;        this.cacelButtonText = cacelButtonText;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        init();    }    public void init() {        LayoutInflater inflater = LayoutInflater.from(context);        View view = inflater.inflate(R.layout.confirm_dialog, null);        setContentView(view);        TextView tvTitle = (TextView) view.findViewById(R.id.title);        TextView tvConfirm = (TextView) view.findViewById(R.id.confirm);        TextView tvCancel = (TextView) view.findViewById(R.id.cancel);        tvTitle.setText(title);        tvConfirm.setText(confirmButtonText);        tvCancel.setText(cacelButtonText);        tvConfirm.setOnClickListener(new clickListener());        tvCancel.setOnClickListener(new clickListener());        Window dialogWindow = getWindow();        WindowManager.LayoutParams lp = dialogWindow.getAttributes();        DisplayMetrics d = context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用        lp.width = (int) (d.widthPixels * 0.8); // 高度设置为屏幕的0.6        dialogWindow.setAttributes(lp);    }    public void setClicklistener(ClickListenerInterface clickListenerInterface) {        this.clickListenerInterface = clickListenerInterface;    }    private class clickListener implements View.OnClickListener {        @Override        public void onClick(View v) {            // TODO Auto-generated method stub            int id = v.getId();            switch (id) {            case R.id.confirm:                clickListenerInterface.doConfirm();                break;            case R.id.cancel:                clickListenerInterface.doCancel();                break;            }        }    };}

3、在需要使用此控件的地方,进行如下形式调用:

public static void Exit(final Context context) {        final ConfirmDialog confirmDialog = new ConfirmDialog(context, "确定要退出吗?", "退出", "取消");        confirmDialog.show();        confirmDialog.setClicklistener(new ConfirmDialog.ClickListenerInterface() {            @Override            public void doConfirm() {                // TODO Auto-generated method stub                confirmDialog.dismiss();                //toUserHome(context);                AppManager.getAppManager().AppExit(context);            }            @Override            public void doCancel() {                // TODO Auto-generated method stub                confirmDialog.dismiss();            }        });    }

调用中实现了此控件的内部接口,并赋给控件本身,以此在点击按钮时实现基于外部具体业务逻辑的函数回调。到此自定义对话框就完成了。

更多相关文章

  1. [转]Android(安卓)Launcher 分析
  2. Android入门第九篇之AlertDialog[转]
  3. delphi xe6 for android 自带控件LocationSensor优先使用GPS定位
  4. [Android自定义控件] Android(安卓)Scroller工具类和GestureDete
  5. layout_width和width,layout_height和height
  6. Android(安卓)Design Support Library——Navigation View
  7. Android控件(View)之TextView, Button, ImageButton, ImageView,
  8. Android学习系列一用按钮实现显示时间
  9. Android布局整合include界面控件

随机推荐

  1. Android布局layout中的一些属性(转)
  2. AirFree远程协助(Android)
  3. Android应用层学习-Intent和Layout
  4. Android上常见度量单位【xdpi、hdpi、mdp
  5. Android 中如何关闭线程
  6. Android运行底层linux外部命令的实现
  7. Intent----android中的伟大邮差
  8. Android(安卓)远程图片获取和本地缓存
  9. 10天学通Android开发(7)-数据存储
  10. Android 动态改变app图标