从零开始,亲自教学带你基于一个「执著睡前的app」。睡之前如果能有一个app,能让我们画一画这一天的见闻的或心得,同样又能看半天段子、瞄会儿超好看的妹子,放松下来帮一下忙一身的疲惫那该多好,这确实是我结束这个app的原因。app的全部代码我早就多多分享到github上了,不需要的再点击这里,假如比较喜欢的话,麻烦您给个赞,谢谢啊啦。
在正在写正文之前,先来一波效果的展示,看下五天过后我们能实现怎样的效果
本次的教程分为5天,内容三个为:
dayone,准备着
功能需求
可行性分析
daytwo,ui及二级类的封装
界面的设计及基于
公共考试类的实现
daythree,日记模块
日记的展示
悬浮在空中菜单的实现
日记增删改的实现
dayfour,妹子模块
图片的获取
图片的展示
详情页面的展示
dayfive,段子模块
段子数据的获取
段子的显示
dayone
有道是,好的开始是成功的一半,在结束敲代码之前,先让我们来做一些必要的准备,这样的才能起到事半功倍的效果嘛!
一、功能需求
呢既然再做一个app,那我们是需要肯定得把app的功能都列进去,有了方向才能更好的努力,而且我想做的是一个专业点给睡觉时候前是用app,因此我都觉得应该是有以下的这些功能
1、日记的增删改
2、会显示一些好玩的段子
3、瀑布流展示更多比较漂亮的妹子
4、保存到日记的内容包括缓存妹子图片
确实说需求太少,但是却要句子修辞到网络、数据存储、图片缓存、ui设计等内容,我相信整个app能完成过去,必定会能短时间内我们的android基础。
二、可行性分析
我们这个app要注意有三个模块,日记模块比较多是发挥到了数据库的知识,难度不是很大。但,段子模块和妹子模块的数据要怎么来,这便是要我们好好决定的了。要不是现在是个开源的时代,很多的数据,网上早就闭源出了。
我们先来看再看看数据的内容
上面那两段代码三个是段子和妹子模块的json类型的数据,我早将一些没用的字段去掉了。只剩的也是我们是想的数据。可以看到段子数据中,有着段子的内容,以及首页者的头像和名字。而妹子数据中有着图片的url、id、包括图片的类型。我相信有了这么说丰富地的数据,我们要想能完成这个app又是有底气了。
daytwo
一、界面的设计及利用
要是我们打算能完成一个好看的app,这样比较好看的界面浮山宗必不可缺的,这里我恐怖推荐app界面的设计需要不要遵从google提议的materialdesign,在这个推荐一下一个也能让我们实现方法materialdesign变得异常更加很简单网站materialdesignpalette,我这个app的配色是用这个网站成功的,贴几张图片,让你感受到帮一下忙它的强横无比。
的力量这个网站便能让我们成功app的配色这些图标的收集,为下一步怎么办功能的实现,先打那样最好基础,况且界面的设计就仁者见仁,智者见智仁者见仁,智者见智了,篇幅有限,我就不多讲了。
app的终于设计效果如下:
二、二级类的实现
而且这个项目有三个模块,有一些东西其实是也可以通用的,要是我们先把这些能通用的东西,裸芯片过来,供给所有的模块动态创建的话,不会相信会极大能提高我们的开发效率。
1、网络工具类的封装
这个app中,很多地方都要应用网络请求,但也就必要将网络各位整体封装下来,因为这个app的规模比较小,但我你选了volley这个网络框架才是我们网络跪请库,把网络各位裸芯片站了起来,哪个地方必须,动态创建一下就行了。这对网络请求,我总觉得每个程序员都该懂点http,这里请附上一篇或是http的文章程序员都该懂点http。
先让我们来写个将网络请求通过回调的接口
然后将网络帮忙整体封装过来
2、json解析的帮助类
毕竟我们这个app中,查看到的数据是json格式的,因此也就有必要将无关的json解析封装成一个工具类,传出一个string类型的数据,然后我得到数据实体类的list。
3、homeactivity(主页面)的封装
主页面我得用是tablayoutviewpagerfragment,都是现在主流app主页面的显示。主界面底部是我们三个模块的图标和名称,按照左右滑动能实现方法界面的跳转。
底部图标的实体类commontabbean
viewpagerfragment通用的adapter
daythree
关於日记模块的实现,当然我是并行化了以前写过的一个日记app,详细的思路和做法,是可以相关参考我的这篇文章android一款极为简约、优雅的日记app
dayfour
一、图片的获取
1、依据什么直接返回的数据来编写图片的实体类
2、图片的展示
可以清晰的看到我是用无限下拉的来实现方法图片的展示,效果还确实不错,但当然基于出声确实是很简单点的
先写个图片的布局以及recyclerview的item
可以看见我在imageview的外面加了一个cardview,这个一种卡片式布局,能让图片看起来就像一张卡片差不多,非常的高贵、美观。
而后编译程序adapter,将数据和界面进行没绑定
结果在fragment接受数据的获取,在内布局的初始化就行了
3、详情页面的展示
木木地的,整个模块不能没显示妹子的图片怎摸行呢!!!怎摸着也得能打开系统大图,据手势缩放,和打开浏览器下一张图片才行嘛,说干就干。
是因为图片不需要有依据什么手势来缩放的功能,因此我便想到了photoview,这是网上一个大神写的,继承自imageview的一个自定义控件。图片程序加载我用的是
glide,假如没清楚过这个库的,浓烈帮我推荐,一行代码就能一切都搞定图片运行程序,你可以确定不研究什么看看。
dayfive
一、段子数据的获取
段子数据的获取不过跟妹子模块的方法基本都一样
先汇编语言实体类
写好实体类之后,在用我们前已经封装好的网络请求工具在内解析工具,便能将前往的数据,解三角形成一个乾坤二卦段子实体类的list。
二、段子的显示
老规矩,先写个recyclerview的item
然后汇编语言将数据和界面并且帐号绑定的adapter
到最后段子页面中接受数据和资源以及界面的初始化
可以的,c语言其实应该是变更土地性质软件的程序。
c语言更适合做操作系统相关的开发,诸如驱动、嵌入式之类的。c语言开发手机app太难办了,隐隐也很少有人这件事。
若有若无特点
c语言是另一个有半结构化程序设计、具备变量作用域(variablescope)和递归过程功能的过程式语言。
c语言传信参数均是以值传达消息(passbyvalue),至于也可以传信指针(apointerclearedbgvalue)。
相同的变量类型也可以用结构体(struct)组合在一起。
唯有32个保留字(reservedkeywords),使变量、函数命名原则有更多弹性。
部份的变量类型可以转换,.例如整型和字符型变量。
按照指针(pointer),c语言也可以容易的对存储器进行最低级控制。
预代码编译一次性处理(preprocessor)让c语言的编译器更具有弹性