南京大学 - 计算机科学与技术系 -211220131詹昊翔的最终大作业。
很抱歉之前因为学校中其它事情时间冲突而错过了第一周的课,导致后面所有的进度都跟不上了……但是最终还是极限把所有回放都看完了,并基本完成了所有的内容。
架构上是从Android Studio自带的那个有三个Fragment的Bottom Navigation Views Activity为基础建设的,分别对应了主页、视频、我的三个板块。天气页面,以及新闻和视频内容的详情页是跳转Activity实现的。
首页:
- 用RecycleView实现滚动效果展示新闻,以及点击新闻跳转到对应的详情页面。
- 输入网址的输入框效果。
- 左上角点击跳转到天气界面,右上角点击跳转到新闻编辑界面。跳转到天气界面时有1000ms的启动页效果;天气界面中的卡片内容使用ScrollView实现(这块是因为我是第一次进行安卓开发,当时还没看到recycleview这一课时自己研究写的);其中的按小时天气预报效果用RecycleView实现。
视频页:
- 实现瀑布流页面效果;使用FrameLayout实现单个视频展示页的图片处于底部,白色文字浮在顶上的效果。
- java文件夹:
- ~/ui中放了三个分页面的Fragment文件及对应的ViewModel。基本是按照安卓自带的结构改了个名字,以及自行修改了下onCreate()的行为之类;
- utils中放的都是实现recycleView时封装出的类。因为天气卡片、新闻卡片和视频卡片的内容都不一样,所以使用单一的布局及ItemBean难以实现效果,就干脆依葫芦画瓢都写了一份。
- 最后,放在外边的Activity结尾的文件就是各个用到的Activity。其中startActivity用于实现天气页启动时的跳转效果,我写了一个内部的异步进程,现在它的作用就是sleep(1000)后关闭启动页,之后可以写入实际作用,比如通过api从网上获取真实的天气数据之类的。
- layout文件夹:
- activity开头的都是Activity对应的布局文件,不做赘述;
- fragment_xxx开头的三个文件对应mainActivity下切换的三个分页面;
- recyclerview_item开头的是写recycleview时用到的布局文件。
图片资源都在res/drawable文件夹中,三个示例视频放在了res/raw文件夹中。其它没有需要特别说明的。
- 新建新闻的页面中的“添加新闻缩略图及头图”功能实现起来很困难,最终留着了,对应函数那里用Toast打印了个todo表明这个按钮是有用的。原因是尝试了两天都没有搞定高版本api下的文件系统访问,访问权限能够正常申请,编写的intent也能正确调起系统相册,只有debug时打印出的文件路径好像有问题。但是时间有限,来不及修了。
- 视频的详情播放页没有实现ui设计图中的类短视频应用的播放界面。那种顶部黑色渐变的蒙版效果到底怎么搞定的啊……还有将VideoView的背景设置为黑色,最终也没有找到解决方案(期待看到优秀同学的解决方案来参考下)。试了下用FrameLayout将蒙版图片叠在VideoView上,遇到了些奇怪的bug。最后没来得及修,就先删掉了。 还有,右下角的几个按钮只是装饰,对应的功能没有实现。
- 视频页的性能表现并不好,在虚拟机上很卡。但是在我的手机上什么问题都没有,应该是虚拟机适配问题……?最可能的原因应该是视频缩略图过大。
我是通过学校的暑期课程平台选的,这两学分真的对我很重要!祝你以后写代码永远不出bug!