心·迹alpha阶段 代码结构及技术难点简介
时间:2022-05-05 17:57
我们的产品是安卓端app,所以目前主要就是用Android Studio来进行代码开发。
Android Studio的项目的结构还是比较清晰的,如下图,主要就是java文件夹内的代码部分(.java)以及res文件夹内的布局部分 (.xml)。
一、Java部分
(一)数据库部分
这一部分主要是数据库方提供给UI小组的一系列需要用到并存储到数据库中的类。
UI小组可以不管数据库的内部逻辑,直接构造对象并用其中的方法,如下图。
(二)UI部分
这一部分主要就是前端UI的一些逻辑(主要是各个Activity)以及另外需要用到的其他一些类(如Adapter等),如下图。
可以看到,虽然我们的app比较简单,但是实际上实现起来代码量确实不小。其中比较难及复杂的部分在后面部分会介绍。
二、布局部分
这部分基本上是和UI部分的代码对应,每一个界面以及其中的一些部件都需要布局文件,如下图。
(一)图片素材
图片主要是在drawable文件夹内,主要就是一些菜单以及按钮上要用到的小图标,还有一些背景图片。
(二)xml文件
包括layout文件夹以及menu文件夹里的文件,如下图。
三、技术难点(部分)
说是技术难点其实就是开发过程中的一些感悟。
实际进行安装开发后,才会发现,那些看起来比较简单的功能,实现起来却并不简单,这里主要就选一两个来随便讲一讲。
首先,最复杂的一部分就是DiaryWriteActivity,从代码量(java部分目前1600行)上也能看出。
根据美工的建议,我们把这个界面改成了app的主界面。这样就带来了一系列比较麻烦的问题。
因为这个界面既要展示日记,还要能编辑日记、新建日记。不同的情况就会导致不同的布局设置,就需要在代码中对页面布局进行动态设置。
再就是从不同界面都能进入这个界面,如搜索结果、时间轴、日历等等,这些界面进入虽然本质上没有什么区别,但是一个问题就是如果我们要查看前后日记,我的理解应该就是比如搜索结果进入,查看的前后日记的那个list应该就是搜索结果的那个范围,这就需要根据进入的来源去进行一些相应的判断。
还有比如我们把前后按钮改成滑动,这个滑动看起来简单,实现起来也不是几行代码的事情,另外还要考虑到某些情况应该要禁止滑动相应等等。
还有就是一个返回的问题,从不同界面返回的话结果应该也不是完全一样,这就需要在onRestart()里再做一些处理。
其实上面说的这些也不是什么真正的“难点”,就是需要注意的地方非常多,一个地方少了个条件判断,就容易出现动不动闪退的结果,给用户带来不好的体验。
还有一个比较难的地方就是富文本,这个也是一直困扰我们小组同学的地方。一方面是存储上的问题,还有就是图片上的一些问题。比如出现来插入图片在有的手机上会闪退的情况。
除了上面说的这个DiaryWriteActivity,还有一些难的地方就是想实现的一些效果很难做到或者说良心的教程很难找到。比如现在日记界面滑动切换前后日记,只是相应滑动事件改变日记内容,但如果我是真正想实现卡片式有滑动的效果就不知从何下手。这也只是举个例子,还有就是比如我前两天才发现安卓自带圆形约束布局,我之前还傻傻地纯靠自己调间距来实现。
确实像我们这样从零开始接触安卓开发确实会遇到各种问题,时不时还掉进各种坑,感觉如果想真正说andriod开发有一定了解还任重而道远。