1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ldkxingzhe-L365Calendar

Клонировать/Скачать
README.org 3.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
ldkxingzhe Отправлено 14.02.2016 16:33 27227e9

L365日历

这个项目中的UI部分素材大都通过反编译365日历得到, 请勿用于商业用途.

UI部分

README/all_in_one_160214.gif

这是整体效果, 暂时没有制作各个部分的视图gif, 以下进行介绍实现.

引导页部分

引导页部分采用了VerticalViewPager, 这个ViewPager由v4包中的ViewPager修改得到. 使用方法与其相同. 值得借鉴的是在开始页面中嵌入fragment, 这样分离引导与开始界面, 而且为以后广告的插入留住了空间.

最后部分的按钮是anim动画.

主界面

主界面是由4个Fragment组成, 切换采用hide而非replace. 这样保证了4个主界面快速切换. 与365日历不同的是, 这四个Fragment只有两个与其相同, 分别是日历与设置界面. 其余两个需要服务器交互, 准备使用轨迹跟踪与计步器代替. 目前制作了定位服务

设置界面

采用了365日历的布局方式, 在代码中重构进行布局, 这一点感觉不错. 是一个很好的方式.

日历视图

日历视图是整个App中UI部分最复杂的部分, 此处采用了365日历的设计思路, 具体实现与其略有不同.

总的来说动画部分就是View的Event事件传递与拦截. 这里用到了所有事件回调函数. 就View绘制方面, 整个月历视图是一个自定义View, 均是使用画布进行绘制, 并且对文字及位置进行了缓存, 保证了View绘制的高效性, 保证了视图的流畅.

其余所有可编辑界面

其余所有可编辑界面均在一个AllEditActivity中, 各自的特色布局是各自的Fragment, 为了保证跨Activity传值, 采用了java的反射机制, 这样就巧妙的避开了在Manifest配置的麻烦, 而且, 公用了很多东西, 大大减少了代码重复量.

例如, 所有编辑界面保存取消, 这些Dialog提示几乎完全相同, 通过基类AllEditFragmentBase联系在一起.

自定义的Dialog与Picker

dialog采用的是sweet-alert-dialog.

time-picker采用的是IOS样式的滚动选中, 三种picker均采用DailogFragment, 可以实现横屏. 而且与此应用关联很小, 可以独立提取, 作为单独控件.

选择类Dialog的样式同样是仿IOS, 但是样式布局是以QQ为模板. 同样可作为单独控件.

由下部弹出的Dialog, 共用一个基类DialogFragmentBase, 其中封装了共用方法与共用布局.

完全的MVP实现, 以及相应的单元测试

项目中只要设计需要单元测试的UI部分几乎都使用了MVP的实现方式. 并且引入了Roboletric单元测试框架.

单元测试对产品的重要性毋庸置疑, 单是由于Android特有的activity单元测试比较麻烦. 比较流行的是MVP架构方式. 对MVP不太熟悉的朋友可以先了解下MVP, 有助于快速理解本项目的结构.

单元测试框架使用的是Roboletric, 很简单, 值得使用.

注意

项目中使用了百度定位, 并且配置了定位服务. 不过没有上传功能. 此定位服务属个人需求, 毕竟这个应用主要还是为了满足自己的要求. 需要的朋友可以编译的时候可以保留, 不需要的朋友, 请自行更改. 在此做一次提示. 免得被你们说人品问题.

其他

日历的定时服务主要参见Android系统自带的日历定时服务管理.

不足

  • 目前日程管理中的日程新建中照片查看, 地址获取均没有实现.
  • 日历滑动动画比较生硬(可以通过更改动画时间等配置改善)
  • 重要的事情说三遍, 这个项目是反编译得到的素材. 请勿用于商业用途
  • 此README是由org-mode, 在此也向你们推荐以下emacs -_-;

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ldkxingzhe-L365Calendar.git
git@api.gitlife.ru:oschina-mirror/ldkxingzhe-L365Calendar.git
oschina-mirror
ldkxingzhe-L365Calendar
ldkxingzhe-L365Calendar
master