开源中国 OsChina Android 客户端源码分析(4)自定义对话框

OsChina在主界面底部导航处设置了快速操作的对话框,图示:

     开源中国 OsChina Android 客户端源码分析(4)自定义对话框

OsChina采用了Dialog的方式实现,有些人可能会用到popupwindow去实现。通过分析其实现原理,来学到对自己有用的东西。

1布局文件,dialog_quick_option.xml,布局代码不难

2自定义了对话框类QuickOptionDialog:

2.1在构造函数中加载了自定义的对话框的布局文件,初始化控件,完成了快速图片按钮的旋转动画(quick_option_close.xml)。此处觉得应该把这部分工作放到onCreate()当中去做。

2.2在onCreate()中设置对话框的宽度为屏幕的宽度。

        WindowManager m = getWindow().getWindowManager();

        Display d = m.getDefaultDisplay();

        WindowManager.LayoutParams p = getWindow().getAttributes();

        p.width = d.getWidth();

        getWindow().setAttributes(p);

       此处觉得,如果需要设置为屏幕宽度的几分之几的话,那么就可以照着这段代码去处理,但实际它还是屏幕的宽度,所以是不需要加这段代码的。

3代码中定义了一个接口,但是把设置监听器的方法注释掉,你会发现没有报错,说明其没有真正的用到设置监听器。

 public interface OnQuickOptionformClick {

        void onQuickOptionClick(int id);

    }

那么,问题来了,我们什么时候可以这样子去处理呢? 按照接口命名的意思“谁点击的”?那么我们在主界面实例化对话框之后,QuickOptionDialog dialog = new QuickOptionDialog(MainActivity.this); 利用dialog设置下监听器即可,当对话框某控件发生点击事件时,可以回调告诉主界面完成相应的事件处理,比如界面跳转。

        这样将对话框部分的代码完全提取出来进行重构,这样我们的代码就不会显得那么冗余了。以后就要这么干~~~


你可能感兴趣的:(android,自定义,dialog,自定义对话框。)