一. 项目搭建:
- 按照每个类的作用划分包,比如com.test.net、com.test.dao、com.test.ui等;
- 如果只设计一套图标的话,一般都会把图标放在 drawerable-xxhdpi 文件夹下面,一般是按 1980*1080 这个分辨率设计的;
- 自己新建一个 drawable 文件夹用来存放 shape 等 xml 文件,在 values 文件夹下面新建一个 colors.xml 文件来存放颜色值,新建 colors 文件夹用来存放 selector 等 xml 文件,新建一个 anim 文件夹来放动画文件;
- assets 文件夹主要放一些能被压缩的文件,比如注册协议文本、 HTML 文件等等;而 raw 文件夹用来存放一些不能被压缩的文件,如 数据库文件;
- 引用第三方库有两种方式:
- 在Gradle中配置类库的引入(如 Gson)
- 新建一个module作为依赖库,把源代码拷贝进来(如 CircleImageView)
如果需要对源码进行修改和定制,或者第三方库有自定义属性、布局等资源文件的话,就必须使用第二种方式。
**二. 命名规范: **
- 布局文件命名:类型前缀 + 含义,如:
- activity_main
- fragment_news
- dialog_confirm
- include_head (被引用的模块)
- item_haha (Listview、GridView等元素的布局)
- 控件命名:类型缩写 + 含义 如:TextView tv_name,类中控件使用的命名和布局文件中控件的Id一样;
- 保持应用生命周期入口函数的简洁,具体的逻辑操作放在单独的方法里,生命周期入口函数只包含对这些方法的调用。在 initView() 方法中对布局进行初始化,如 findViewById ;在 initData() 方法中对数据进行绑定,如 textView.setText("123") 、 button.setOnClickLinster() ;
- 图片资源的命名,图标用 ic 作为前缀 ic_back ,背景图片用 bg 作为前缀 bg_register ;
- 颜色的命名应该根据颜色的名称如 light_blue ,而不是其在App中的含义如text_color,以避免重复。
三.其它:
- LinearLayout 的效率要比 RelativeLayout 高,所以能用线性布局的时候就优先使用线性布局;
- 通用资源的提取, include 标签的使用;
- ListView 的优化:一个是使用 convertView 和 ViewHolder 对布局和控件进行缓存,另外一个是快速滑动时对视图内的图片暂停加载;
- 当我们的 Activity 关闭的时候要对网络请求及时销毁关闭,防止它在后台进行请求耗费资源。