前言
在7月中旬的时候,突然想做一个上线的app,同时也巩固一下自己的android开发知识。于是开始动手坐了起来,终于在8月5号左右的时间,完成了历时20多天整个app的开发。我个人觉得,这个app虽不能说做得很好,但也是对我3个月的安卓学习的一个总结,当我发到论坛上,想听听其他开发人员的建议和评价时,另外意外的是,基本评论的都是好评。但与此同时,我也发现有很多android的初级学习者,看完第一行代码或者做几个小demo,就不知道干什么了。想想一直以来,在学习的过程中,博客和github都帮助了我很多,也正是因为开源,所以大家才能一起进步。所以,这个app,我将它开源的目的,也是为了更好地帮助其他的安卓开发者。
Ok社区 介绍
一款以新闻浏览为主,附带各种特色功能的新闻社区,在ok社区,你可以表达对实时新闻的评论,也可以在社区中心表述你的心情,无聊时还可以体验一下各种附带小功能。UI大致还是借鉴了知乎日报的界面风格,但也融入了很多个人的风格。
ok社区的安卓客户端和后台都是我自己写的,虽然安卓开发不需要做后台,但是我觉得最好还是要了解一下后台的知识,这样对整个项目的架构会更加的了解!
github地址:https://github.com/jeff-leo/OkCommunity
app下载链接:http://www.wandoujia.com/apps/com.liu.sportnews
(欢迎大家star和下载,这是给我的动力)
app 演示图:
- 主界面
- 登录注册
- 社区发帖
- 个人信息
- 更多功能请下载app自行体验。
具体模块
-
侧边栏是采用DrawerLayout实现,但是我个人不推荐,最好还是使用github的第三方侧边栏,因为DrawerLayout的局限性太大,而第三方功能非常丰富和灵活。
-
主界面的新闻列表,轮播条的实现思路是,采用handler和message,每隔3s就用handler发送message,通知viewpager让currentPage++;
轮播条下面的列表是采用CardView实现。
//利用handler循环发送消息
mHandler = new Handler() {
public void handleMessage(Message msg) {
mTopCurrentItem = ((HeaderViewHolder) holder).headerPager.getCurrentItem();
if (mTopCurrentItem < mTopList.size() - 1) {
mTopCurrentItem++;
} else {
mTopCurrentItem = 0;
}
((HeaderViewHolder) holder).headerPager.setCurrentItem(mTopCurrentItem, false);
mHandler.sendEmptyMessageDelayed(0, 3000);
}
};
- 整个app的网络通信框架用的是okHttp,不过要进一步的封装,我使用的是鸿洋的OkHttpUtil。
- 图片加载使用的Glide,不过Glide会有一点小问题,下面会提到。
- 新闻详情页是采用5.0的新特性api实现的, Android5.x新特性之Toolbar,AppBarLayout,CoordinatorLayout,CollapsingToolbarLayout等汇总,不懂得可以看看这个链接。
- 图片选择器是使用github上的开源框架,MultiImageSelector。
开发途中遇到的问题
-
主页面的viewpager的嵌套有可能会导致事件冲突,这涉及到事件传递机制和滑动嵌套的问题,这篇文章讲得很好,所以我不再多写,Android Touch事件传递机制解析
-
Glide配合圆形image,有可能会导致第一次不能加载,第二次才能加载成功的问题,具体的解决方案:Glide加载圆形image第一次显示占位图的原因
-
主界面的fragment之间的切换,有可能会导致数据不刷新,具体的解决方案:让多个Fragment 切换时不重新实例化,FragmentPagerAdapter刷新数据原理分析与解决
-
在开发登录注册模块时,手机上使用,点击输入框,软键盘弹出时会覆盖掉布局,具体的解决方案:Android 软键盘遮挡的四种解决方案
-
使用ListView时会导致图片移位等问题,并且随着现在开源社区越来越多的开源RecyclerView,所以推荐首选使用RecyclerView。
-
上线的项目一定要在app内开发新版本推送的功能,之前我在网上差的资料十分混乱,后来索性自己写了博客记录了下来, Android版本检测更新
给大家的福利
在这里,献上我学习安卓以来,收藏的一些非常好的学习资源。
- 现在的app开发架构,比较流行的是mvp+RxJava+Retrofit,这三种知识点的资料:给 Android 开发者的 RxJava 详解, 选择恐惧症的福音!教你认清MVC,MVP和MVVM, Android网络请求–Retrofit基础
- 收藏的一些UI图标和设计的网站:materialpalette, UI中国, 阿里巴巴图标库, iconfinder
- 当时我个人完成app的开发时,觉得基础真的很重要,特别是Java的基础,如果java基础不好,你的代码没办法写得漂亮,所以我花了10天左右的时间,写了一个系列的java系列的博客文章(我是真的认真写了这个系列的博客)让我意外的是,本来我对博客不怎么维护,写安卓博客文章的时候,更多是用来做笔记,所以总访问量只有1000+,自从写了java的文章之后,一个月,访问量就上到了6000+,可能这就是认真写博客的收获吧:Java系列博客
结尾
- 这篇文章,本人是真的用心去写,如果读者认为我写的还可以或者app的体验还可以,欢迎去下载使用和github star。
- 后台开发的功能,如登录注册,发帖,更新个人信息,评论等,电脑里没有服务端,是使用不了这些功能的,由于7月时,我对后台也不是很熟悉,只会简单得jsp,servlet和jdbc等,所以后台都是用servlet来写得,现在学习了ssh,ssm之类的框架,觉得之前写的实在不好,不过那也是初学者必须经过的路,所以还是不放在github了
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/3162.html