文档章节

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

姬鑫
 姬鑫
发布于 2015/05/21 14:00
字数 490
阅读 945
收藏 19

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

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


© 著作权归作者所有

姬鑫
粉丝 85
博文 54
码字总数 16632
作品 0
宁波
程序员
私信 提问
加载中

评论(1)

九洲北研
九洲北研
愿意学习。愿意提高的兄弟们。一起研究开源中国客户端源码。群号324386394。验证开源中国
OSCHINA Android 客户端 1.7.1 Beta2 发布

OSChina.NET for Android v1.7.1 Beta2 版本发布了,该版本主要更新内容: v1.7.1 Beta2 更新日志: 1.将分享功能扩充,增加通用的形式; 2.修复首页部分列表出现空数据的问题; 3.修复收藏失...

迷途d书童
2012/09/10
1K
32
开源中国安卓客户端更新,支持语音动弹

这是 OSCHINA 官方开发的 Android 客户端软件,采用原生 API 开发,非 HTML 模式。 开源中国安卓客户端 v1.7.6.4 版更新资讯: OSChina.NET for Android v1.7.6.4 更新日志: 1、语音动弹发布...

火蚁
2014/02/11
4.4K
54
开源中国码云客户端新版发布

duang duang duang …… 开源中国码云客户端Git@OSC今天发布新版! 码云客户端iOS最新版本:1.2.2 码云客户端Android最新版:1.5.3 本次给大家带来的新版变化内容如下: 修复部分项目的详情无...

巴拉迪维
2016/05/13
9.1K
16
请问关于开源中国android 客户端代码的下载

请问 ,我在这个页面 http://git.oschina.net/oschina/android-app 点击 v2.2.1 想下载可用 eclipse的版本 如何1所示 然后 在 http://git.oschina.net/oschina/android-app/tree/v2.2.1/ 这个......

gdutqiang
2016/08/23
300
2
OSCHINA 的 Android 客户端 1.7.6 发布

该版本主要改进内容: 1、增加横屏阅读 2、增加截图分享 3、动弹、动态、留言增加支持@等链接 4、文章详细页增加图片点击展示原图 5、图片展示页增加图片保存 扫描二维码可以直接下载: 本地下...

叶大侠
2013/05/15
3K
69

没有更多内容

加载失败,请刷新页面

加载更多

DRF 获取DefaultRouter 对应的url

命令 python manage.py show_urls urls.py from user.router import core_routerurlpatterns = [ path('user/login/', views.LoginView.as_view(), name='login'), path('user/log......

hyhlinux
47分钟前
4
0
uniapp登录流程详解uni.login

uni.login(OBJECT) 登录 H5平台登陆注意事项: 微信内嵌浏览器运行H5版时,可通过js sdk实现微信登陆,需要引入一个单独的js,详见 普通浏览器上实现微信登陆,并非开放API,需要向微信申请,...

达达前端小酒馆
47分钟前
5
0
目标检测中 yolo 的mAP是什么含义?

mAP定义及相关概念 P => precision,即 准确率 R => recall,即 召回率 PR曲线 = >即 以 precision 和 recall 作为 纵、横轴坐标 的二维曲线。一般来说,precision 和 recall 是 鱼与熊掌 的...

小松1
51分钟前
4
0
用jdk1.8的断言来做非空判断

Assert.notNull(user, "没有获得登录用户信息"); 看源码如下: public static void notNull(Object object, String message) { if (object == null) { throw new IllegalArgum......

architect刘源源
55分钟前
6
0
2018NOIP各省一等奖分数线

提高组 普及组

SamXIAO
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部