Android 对话框进阶(自定义)

来源:互联网 发布:网络发票系统初始密码 编辑:程序博客网 时间:2024/06/01 10:51

要产生对话框,特别是产生提醒对话框.网上例子全是.都是抄来抄去的.用了AlertDialog.builder类,这里就不说了.

我要说的是如何定制一个对话框.就是按自己的想要的模样产生这个对话框.如何实现透明? 如何改变对话框的显示位置? 这需要深入研究.

要定制对话框.一般需要定义一个继承自Dialog的类.例子
public class MousePanel extends Dialog implements View.OnClickListener{    ImageButton btn1=null;    ImageButton btn2=null;    ImageButton btn3=null;    Window window=null;        public MousePanel(Context context){        super(context);    }    public void setDisplay(){        setContentView(R.layout.mouse);        setProperty();        setTitle("mouse panel");        show();        getInstance();        setListener();        }



要显示这个对话框,只要创建该类对象.然后调用该函数即可.
    public void setProperty(){         window=getWindow();   得到对话框的窗口.         WindowManager.LayoutParams wl = window.getAttributes();//         wl.x =0;   这两句设置了对话框的位置.//         wl.y =180;         wl.alpha=0.3f;  这句设置了对话框的透明度         wl.gravity=Gravity.BOTTOM;                  window.setAttributes(wl);            }    public void getInstance(){        btn1=(ImageButton)findViewById(R.id.mouse_button1);        btn2=(ImageButton)findViewById(R.id.mouse_button2);        btn3=(ImageButton)findViewById(R.id.mouse_button3);    }    void setListener(){        btn1.setOnClickListener(this);        btn2.setOnClickListener(this);        btn3.setOnClickListener(this);    }    public void onClick(View view){        switch(view.getId()){        case R.id.mouse_button1:            dismiss();            break;        case R.id.mouse_button2:        case R.id.mouse_button3:            dismiss();            new MyDialog(getContext()).setDisplay();            break;        default:        }    }}


主要显示也是用了setContentView()来加载xml来显示你的对话框.看来每一屏幕显示也都是在窗口中显示的.

一定得搞清楚类对象和窗口的关系. 其实两着有很大区别. 一个类对象通过调用系统函数来驱动显卡来创建窗口.这两者是完全不同的东西.

在定制窗口是比较有用的接口还有 dismiss用来销毁窗口.销毁窗口不代表销毁类对象是吧,只是把让屏幕刷新.那显卡里那块数据清零了.

 
原创粉丝点击