这个项目中的UI部分素材大都通过反编译365日历得到, 请勿用于商业用途.
这是整体效果, 暂时没有制作各个部分的视图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采用的是sweet-alert-dialog.
time-picker采用的是IOS样式的滚动选中, 三种picker均采用DailogFragment, 可以实现横屏. 而且与此应用关联很小, 可以独立提取, 作为单独控件.
选择类Dialog的样式同样是仿IOS, 但是样式布局是以QQ为模板. 同样可作为单独控件.
由下部弹出的Dialog, 共用一个基类DialogFragmentBase, 其中封装了共用方法与共用布局.
项目中只要设计需要单元测试的UI部分几乎都使用了MVP的实现方式. 并且引入了Roboletric单元测试框架.
单元测试对产品的重要性毋庸置疑, 单是由于Android特有的activity单元测试比较麻烦. 比较流行的是MVP架构方式. 对MVP不太熟悉的朋友可以先了解下MVP, 有助于快速理解本项目的结构.
单元测试框架使用的是Roboletric, 很简单, 值得使用.
项目中使用了百度定位, 并且配置了定位服务. 不过没有上传功能. 此定位服务属个人需求, 毕竟这个应用主要还是为了满足自己的要求. 需要的朋友可以编译的时候可以保留, 不需要的朋友, 请自行更改. 在此做一次提示. 免得被你们说人品问题.
日历的定时服务主要参见Android系统自带的日历定时服务管理.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )