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);
    }
  • 相关阅读:
    Redis源代码分析(十三)--- redis-benchmark性能測试
    kvm中运行kvm
    umount.nfs device busy day virsh extend diskSpace, attachDisk
    ultravnc
    openNebula dubug
    maintenance ShellScripts
    virsh VMI deploy data serial xml
    cloud computing platform,virtual authentication encryption
    基于C 的libvirt 接口调用
    storage theory
  • 原文地址:https://www.cnblogs.com/gongcb/p/2494563.html
Copyright © 2011-2022 走看看