zoukankan      html  css  js  c++  java
  • Android进阶篇自定义Dialog(一)

    DialogCommon.java:

    package com.easier.gallery.common;
    
    import com.easier.gallery.R;
    
    import android.R.integer;
    import android.app.AlertDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.graphics.Typeface;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class DialogCommon extends AlertDialog{
        private int id;
        private String title;//标题
        private View contentView;//dialog的view
        private String message;//dialog显示内容
        private String leftButton;//左边按钮
        private String rightButton;//右边按钮
        private int tag;//dialog标示
        private Button leftBtn;//左边按钮
        private Button rightBtn;//右边按钮
        private TextView titleTv;//标题
        private TextView CountMessage;//信息内容
        private View dialogLine;//分割线
        private EditText mEditText;//输入框
    
        private Context context;
        private DialogBtnInterface dialogBtn;//按钮接口
    
        private final static int TYPE_DEFAULT = -1;
        private final static int TYPE_EDITTEXT = 0;
        private int TYPE = TYPE_DEFAULT;
    
        protected DialogCommon(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
        }
        public DialogCommon(Context context,DialogBtnInterface dialogBtn, String title,String leftButton,String rightButton){
            super(context);
            this.context = context;
            this.title = title;
            this.dialogBtn = dialogBtn;
            this.leftButton = leftButton;
            this.rightButton = rightButton;
            tag = 0;
        }
        public DialogCommon(Context context,DialogBtnInterface dialogBtn, String title,View contentView,String leftButton,String rightButton){
            this(context,dialogBtn,title,leftButton,rightButton);
            this.contentView = contentView;
            tag = 1;
        }
        public DialogCommon(Context context,DialogBtnInterface dialogBtn, String title,String message,String leftButton,String rightButton){
            this(context,dialogBtn,title,leftButton,rightButton);
            this.message = message;
            tag = 2;
        }
        public DialogCommon(Context context,DialogBtnInterface dialogBtn,String message,String rightButton){
            super(context);
            this.context = context;
            this.dialogBtn = dialogBtn;
            this.message = message;
            this.rightButton = rightButton;
            tag = 3;
        }
        
        public void setEditItem(){
            mEditText = new EditText(getContext());
            setView(mEditText);
            TYPE = TYPE_EDITTEXT;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            
    //        this.setContentView(R.layout.dialog_message);
    //        leftBtn = (Button) this.findViewById(R.id.dialog_left_btn);
    //        rightBtn = (Button) this.findViewById(R.id.dialog_right_btn);
    //        titleTv = (TextView) this.findViewById(R.id.dialog_title);
    //        CountMessage = (TextView) this.findViewById(R.id.dialogMessage);
    //        CountMessage.setWidth((int)StaticData.W*11/12);
    //        dialogLine = (View) this.findViewById(R.id.dialog_line);
            if (tag == 0){
                this.setIcon(0);
                this.setTitle(title);
            }else if (tag == 1) {
                this.setIcon(0);
                this.setTitle(title);
                this.setView(contentView);
            } else if (tag == 2) {
    //            
    //            titleTv.setVisibility(View.VISIBLE);
    //            titleTv.setText(title);
    //            CountMessage.setText(message);
                
                this.setIcon(0);
                this.setTitle(title);
                View flowCountView = LayoutInflater.from(context).inflate(
                        R.layout.dialog_message, null);
                TextView flowCountMessage = (TextView) flowCountView
                        .findViewById(R.id.dialogMessage);
                flowCountMessage.setText(message);
                this.setView(flowCountView, 10, 20, 10, 20);
            } else if (tag == 3) {
                Typeface typeface = Typeface.create("黑体", Typeface.NORMAL);
    //            CountMessage.setTypeface(typeface);
    //            CountMessage.setText(message);
                View flowCountView = LayoutInflater.from(context).inflate(
                        R.layout.dialog_message, null);
                TextView flowCountMessage = (TextView) flowCountView
                        .findViewById(R.id.dialogMessage);
                flowCountMessage.setTypeface(typeface);
                flowCountMessage.setText(message);
                this.setView(flowCountView, 15, 15, 15, 15);
            }
    
            if (tag != 3) {
    //            dialogLine.setVisibility(View.VISIBLE);
    //            leftBtn.setVisibility(View.VISIBLE);
    //            leftBtn.setText(leftButton);
    //            leftBtn.setOnClickListener(new View.OnClickListener() {
    //                
    //                @Override
    //                public void onClick(View v) {
    //                    // TODO Auto-generated method stub
    //                    dialogBtn.okBtn(DialogCommon.this);
    //                }
    //            });
                this.setButton(leftButton, new DialogInterface.OnClickListener() {
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
                            if(TYPE == TYPE_EDITTEXT){
                                dialogBtn.confirmText(DialogCommon.this, mEditText.getText().toString());
                            } else if (TYPE == TYPE_DEFAULT){
                                dialogBtn.okBtn(DialogCommon.this);
                            }
                        }
                    });
            }
    //        rightBtn.setText(rightButton);
    //        rightBtn.setOnClickListener(new View.OnClickListener() {
    //            
    //            @Override
    //            public void onClick(View v) {
    //                // TODO Auto-generated method stub
    //                dialogBtn.cancelBtn(DialogCommon.this);
    //            }
    //        });
            this.setButton2(rightButton, new DialogInterface.OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialogBtn.cancelBtn(DialogCommon.this);
                }
                });
            
            super.onCreate(savedInstanceState);
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
    
        public DialogBtnInterface getDialogBtn() {
            return dialogBtn;
        }
    
    
        public void setDialogBtn(DialogBtnInterface dialogBtn) {
            this.dialogBtn = dialogBtn;
        }
        
    }

    DialogBtnInterface.java:

    public interface DialogBtnInterface {
    
         /**
         * 点击alertDialog的取消按钮
         * 
         * @param dialog 当前dialog 
         * */
        public abstract void cancelBtn(AlertDialog dialog);
        
        /**
         * 点击alertDialog的确认按钮,子类需重载此方法
         * 
         * @param dialog 当前dialog 
         * */
        public abstract void okBtn(AlertDialog dialog);
        
        public abstract void confirmText(AlertDialog dialog, String text);
    }
  • 相关阅读:
    Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
    DHCP "No subnet declaration for xxx (no IPv4 addresses)" 报错
    Centos安装前端开发常用软件
    kubernetes学习笔记之十:RBAC(二)
    k8s学习笔记之StorageClass+NFS
    k8s学习笔记之ConfigMap和Secret
    k8s笔记之chartmuseum搭建
    K8S集群集成harbor(1.9.3)服务并配置HTTPS
    Docker镜像仓库Harbor1.7.0搭建及配置
    Nginx自建SSL证书部署HTTPS网站
  • 原文地址:https://www.cnblogs.com/gongcb/p/2494563.html
Copyright © 2011-2022 走看看