Android新人任务(初步效果)
-
新人任务
- 完成首页、点单、订单、我的四个界面设计
- 底部导航栏在各个界面的跳转
- 首页为Fragment。banner效果和ImageView的跳转事件
- 点单界面为一个新的Activity。Tablayout + ViewPager实现页面滑动切换效果
- ViewPage中RecyclerView+CardView列表实现
2021/6/20 Check
代码规范是个严重的问题,这次check主要暴露出来的问题如下:-
对变量设置的范围限定没有严谨的概念,随意使用全局变量,虽然对这一个小工程影响很小,但是却是极其不专业、不对自己的代码负责的体现。
-
代码的规范上也是一些细节问题,注意空格的添加、命名的规范等
- xml文件中的id命名不能采用习惯性的驼峰规则,一律采用下划线连接形式,突出功能_名称
- 初始化一些数据杂项的方法采用initxxx()形式
- 不要乱用binding,最好只让每个Fragment和Activity持有自己的binding
-
代码设计模式上要一直向着简洁、高性能、高可读性靠拢
这一条让我受益匪浅。实现一个功能可以有很多途径,但是每一种途径都有其优劣之分。
-
要在另一个Fragment或Activity内拿到其他的Fragment或Activity实例,我的错误做法是无脑new一个新的实例出来,看似能够实现基础功能但却陷入了一个大坑:
从我们平时app的使用经验上谈,在我们对界面进行切换后很多时候前一个界面都不是立刻就销毁了的,要满足回退功能,在数据缓存这一条上来讲,就必不可能每一次切换都重新生成一个新的界面实例。所以必须清楚,new出来的这一个对象已经跟前面的完全区别开来了,而对一个project的整体上来讲,我这样的做法还没有养成一个整体意识。
-
而要实现不同的Fragment和Activity间的通信,更为优雅的做法是通过接口来完成。不要总将实例传进来再在当前的class块下对不是这个class所持有的东西进行操作,我们尽量避免“强盗行为”。每一个Fragment和Activity都是独立的个体,让他们之间的活动互不干扰,这样的设计模式就显得更为优雅和自如,设计逻辑上也更严密。
例如:实现HomeFragment中一个ImageView的点击跳转到ViewPageActivity
-
/*在HomeFragment中定义一个接口*/ private OnActivityChangeListener onActivityChangeListener; public interface OnActivityChangeListener { void onChange(); } /*在MainActivity中初始化homeFragment时实现接口方法*/ HomeFragment homeFragment = new HomeFragment(() -> { startActivity(intent); });
还有一些对于安卓底层源码的理解对写项目很有帮助,在理解的基础上去建立需求模型。