博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
竹翎(Material风格的APP,附源码)
阅读量:7112 次
发布时间:2019-06-28

本文共 2486 字,大约阅读时间需要 8 分钟。

今天突然想整合一下所学的知识,理一个框架出来,顺带熟悉一下谷歌的Material Design。工作这几年,很遗憾,所在公司都只看重iOS开发,安卓的要按照IOS的设计稿来开发,完全没有安卓的风格,不免扼腕叹息。百忙之中,抽出时间,本来想理一个框架出来,看来还有许多待完善的地方,后面会继续完善。先看效果图吧(由于大小不能超过2MB,所以压缩了很多,实际效果要好很多)

图片描述

项目的风格为谷歌的Material风格,其中主要运用到了MVP模式和rxandroid框架,都是简单集成,时间仓促,还没来得及很好封装。主要是Material开发还不是很火,起码就目前市面上看来,比较少产品完全依照Material风格来设计的,我知道的,有BiliBili、SegmentFault等少数几个,大多数产品只是蜻蜓点水般稍微运用了一些Material的元素。我想,产品毕竟注重功能和稳定。因为Material开发的过程中,确实有很多坑,比如,NestedScrollView在与AppBarLayout一起滑动的时候,就会莫名出现卡顿,为了解决这个问题,我苦苦搜寻3天,没能找到办法,只好用了一个开源库smooth-app-bar-layout来解决,这个开源库确实还不错,但与其他开源框架或谷歌原生控件结合使用的时候,又会有这样那样的问题出现,比如,使用RecyclerView时要设置一个header才能正常显示,。

代码的大体结构如下:

图片描述

adapter主要放了主界面ViewPager的adapter

api本来是想放置Retrofit相关的接口的,结果运行了个demo没有成功,就不了了之了,现在才做了一个网络请求,直接用的okhttp和rxandroid结合,并没有封装成很好的工具框架,大家可以先尝试,我有时间就完成封装。

Event主要放置EventBus的一些事件,都是简单的事件,比如通知其他界面刷新UI等。有人说,你这人装,用了RxAndroid为啥不用RxBus,还用什么EventBus。我只能说,萝卜青菜各有所爱,EventBus是个好工具,用起来非常方便,但我不会滥用。

listener目前还没有写什么,里面放了一个类,本来是用来监听RecyclerView滚动,以实时控制AppBarLayout滚动的,但是这个仅适用于单个Activity的情况,由于主界面有一个ViewPager包含多个Fragment,如果再用这个监听的话,那情况复杂得很,而且切换不同Fragment时AppBarLayout会闪动,我就直接用了谷歌原生的Material元素来控制了。虽然在包含NestedScrollView的Fragment,向上滚动的时候,部分机型会有卡顿的情况,比如华为P9,其他手机如一加、nexus5暂时没发现这种情况,这其实是谷歌的一个bug,体验了一下Bilibili的APP,发现这个bug同样存在,暂时还没有很好的替代方案,当然smooth-app-bar-layout可以解决这个bug,但是集成起来不太容易,而且扩展性不太好,比如在smooth-app-bar-layout和smarttablayout之间,你只能选择一个,因为他们的初始化方法不同,因为我必须要用到smarttablayout的漂亮切换效果,所以主界面直接采用了原生的Material控件。

ui是最主要的代码集中地,我为什么没有写fragment、activity等包?因为我建议以功能模块划分逻辑功能包,而不是根据文件类别划分,因为同一个界面的功能实现模块就是一个集合,没必要把它们强行分开来按文件类型归档,后面MVP的代码也是一个功能放在一个包里,这样找代码的时候,看到包名一下子就可以找到相关功能的所有代码了。

utils里面放置一些公共工具类,比如Toast、获取ToolBar高度等

widget里面放置一些开源控件,比如LoadMoreRecyclerView等

library项目主要放置了鸿洋大神的CommonAdapter

项目还用到了很多开源框架,有好几个功能点都是直接拿来,还没来得及更改,惭愧,感谢以下大神或开源项目:

代码家鸿洋大神/*网络请求*/compile 'com.squareup.retrofit2:retrofit:2.2.0'compile 'com.squareup.retrofit2:converter-gson:2.2.0'/*tab切换*/compile 'com.ogaclejapan.smarttablayout:library:1.6.1@aar'compile 'com.github.bumptech.glide:glide:3.7.0'/*右侧菜单*/compile 'com.yalantis:contextmenu:1.0.7'/*可以隐藏toolbar的RecyclerView,可以用,但不够流畅,用系统监听代替了*//* compile 'com.github.ksoichiro:android-observablescrollview:1.6.0'*//*EventBus*/compile 'org.greenrobot:eventbus:3.0.0'/*Material风格的下拉刷新*/compile 'com.cjj.materialrefeshlayout:library:1.3.0'compile 'me.henrytao:smooth-app-bar-layout:25.1.0.0'/*compile 'com.github.bumptech.glide:glide:3.6.0'*//*圆形头像*/compile 'de.hdodenhof:circleimageview:1.3.0'/*列表滚动动画*/compile 'jp.wasabeef:recyclerview-animators:2.2.6'

再次感谢,最后附上,如果大家觉得还不错的话就点个star吧。

转载地址:http://tvmhl.baihongyu.com/

你可能感兴趣的文章
【Prince2科普】Prince2七大流程之启动流程
查看>>
CentOS6.5安装后无法启动Emacs问题的解决
查看>>
汇编语言的产生
查看>>
Sequelize-nodejs-3-model definition
查看>>
ethereumjs/ethereumjs-block-1-简介
查看>>
块元素和内联元素
查看>>
Ubuntu的LAMP与相关软件安装设置
查看>>
配置环境变量
查看>>
Task 的用法
查看>>
Linux rpm yum
查看>>
HTML文档中嵌入CSS的几种方法
查看>>
修改Firebug字体
查看>>
Socket get http request
查看>>
cocos creator 底部按钮touch延迟
查看>>
caffe配置
查看>>
你有学习者综合征吗?Web 开发是重灾区
查看>>
CF1043
查看>>
《R语言实战》读书笔记-- 第六章 基本图形
查看>>
#Sublime Text && Markdown 设置
查看>>
HCIA-Storage:第三章ICT架构体系
查看>>