码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-05-21 15:44:43      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

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

     技术分享

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设置下监听器即可,当对话框某控件发生点击事件时,可以回调告诉主界面完成相应的事件处理,比如界面跳转。

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


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

标签:

原文地址:http://my.oschina.net/jixin/blog/417657

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!