第五章. Android APP端设计

概述:目的 实现

一·代码层面 加入功能分类

  • 1.com.haomo.studio.net 网络访问层
  • 2.com.haomo.studio.data 数据库操作及本地序列化存储
  • 3.com.haomo.studio.activity 视图控制
  • 4.com.haomo.studio.utils 工具类
  • 5.com.haomo.studio.widget 自定义控件
  • 6.com.haomo.studio.adapter 数据加载
  • 7.com.haome.studio.fragment 子视图控制
  • 8.com.haome.studio.model 数据模型
  • 9.com.haomo.studio.application 全局变量
  • 10.com.haomo.studio.inerfaces 接口
  • 11.com.haomo.studio.broadcast 广播通知
  • 12.com.haomo.studio.server 后台服务
  • 13.java后台过来的数据根据权限来显示或隐藏

二·自定义视图

  • 1.layout目录主要存放布局文件,比如主界面布局文件main.xml就在这里面。
  • 2.menu目录主要存放菜单文件
  • 3.valus目录主要存放资源文件,如:
  • a.字符串资源strings.xml HelloWorld
  • b.颜色资源colors.xml #ff8B7355
  • c.尺寸资源dimens.xml 16dp
  • d.主题资源styles.xml *4.图片资源:由于图片资源要考虑到不同分辨率的图片,所以就要把不同的图片放到不同的文件目录中,系统会根据手机分辨率去调用适合的分辨率图片资源 drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi这四个目录分辨存放低分辨率、中等分辨、高分辨率、超高分辨率的图片资源。 drawable目录用于存放控件在不同状态实现的不同效果,比如按下、选中、松开、等状态。

三·清单文件

AndroidManifest.xml文件是android项目的系统清单文件,也是整个android应用的全局描述文件。清单文件说明了android应用的名称、所使用的图标以及包含的组件等主要包括:

  • 1、应用程序的包名,该包名将会作为该android应用的唯一标识。
  • 2、应用程序包含的组件,如activity、server、broadcastreceier、contentprovider等,这个就告诉我们在新建一个类继承这些组件时,我们要在清单文件中进行注册一下,否则应用程序在执行时会报错,无法找到相应的类。
  • 3、应用程序兼容的最低版本。
  • 4、应用程序使用系统所要获取的权限
  • 5、其他应用程序访问该程序所需要的权限。

四·第三方引用包libs Gradle中央库

  • 1.网络请求库 Android-Async-Http
  • 2.图片加载库 Android-Universal-Image-Loader
  • 3.下拉刷新组件 android-PullToRefresh
  • 4.圆形图片 CircleImageView
  • 5.数据库操作 xUtils
  • 6.轻量级文件缓存 ASimpleCache
  • 7.图表控件 MPAndroidChart
  • 8.沉浸式titlebar SystemBarTintManager
  • 9.缩放和显示大图 Subsampling-Scale-Image-View
  • 10.加载控件 ProgressWheel

五·密码加密

用户输入密码后在后面加上haomo后整体MD5加密上传服务器

六·代码规范

android客户端使用checkstyle保证代码的规范健壮性。具体如下

<module name="TreeWalker">   
    <!-- javadoc的检查 -->   
    <!-- 检查所有的interface和class -->   
    <module name="JavadocType" />   

    <!-- 命名方面的检查 -->   
    <!-- 局部的final变量,包括catch中的参数的检查 -->   
    <module name="LocalFinalVariableName" />   
    <!-- 局部的非final型的变量,包括catch中的参数的检查 -->   
    <module name="LocalVariableName" />   
    <!-- 包名的检查(只允许小写字母) -->   
    <module name="PackageName">   
        <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />   
    </module>   
    <!-- 仅仅是static型的变量(不包括static final型)的检查 -->   
    <module name="StaticVariableName" />   
    <!-- 类型(Class或Interface)名的检查 -->   
    <module name="TypeName" />   
    <!-- 非static型变量的检查 -->   
    <module name="MemberName" />   
    <!-- 方法名的检查 -->   
    <module name="MethodName" />   
    <!-- 方法的参数名 -->   
    <module name="ParameterName " />   
    <!-- 常量名的检查 -->   
    <module name="ConstantName" />
    <!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->   
    <module name="UnusedImports" />   

    <!-- 长度方面的检查 -->   
    <!-- 文件长度不超过1500行 -->   
    <module name="FileLength">   
        <property name="max" value="1500" />   
    </module>   
    <!-- 每行不超过150个字-->   
    <module name="LineLength">   
        <property name="max" value="150" />   
    </module>   
    <!-- 方法不超过150行 -->   
    <module name="MethodLength">   
        <property name="tokens" value="METHOD_DEF" />   
        <property name="max" value="150" />   
    </module>   
    <!-- 方法的参数个数不超过5个。 并且不对构造方法进行检查-->   
    <module name="ParameterNumber">   
        <property name="max" value="5" />   
        <property name="tokens" value="METHOD_DEF" />   
    </module>   

    <!-- 空格检查 -->   
    <!-- 允许方法名后紧跟左边圆括号"(" -->   
    <module name="MethodParamPad" />   
    <!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 -->   
    <module name="TypecastParenPad" />

    <!-- 关键字 -->   
    <!--   
        每个关键字都有正确的出现顺序。比如 public static final XXX 是对一个常量的声明。如果使用 static 
        public final 就是错误的   
    -->   
    <module name="ModifierOrder" />   
    <!-- 多余的关键字 -->   
    <module name="RedundantModifier" />   

    <!-- 对区域的检查 -->   
    <!-- 不能出现空白区域 -->   
    <module name="EmptyBlock" />   
    <!-- 所有区域都要使用大括号 -->   
    <module name="NeedBraces" />
    <!-- 多余的括号 -->   
    <module name="AvoidNestedBlocks">   
        <property name="allowInSwitchCase" value="true" />   
    </module>   

    <!-- 编码方面的检查 -->   
    <!-- 不许出现空语句 -->   
    <module name="EmptyStatement" /> 
    <!-- 不允许魔法数 -->   
    <module name="MagicNumber">   
        <property name="tokens" value="NUM_DOUBLE, NUM_INT" />   
    </module>
    <!-- 多余的throw -->   
    <module name="RedundantThrows" /> 
    <!-- String的比较不能用!= 和 == -->   
    <module name="StringLiteralEquality" />   
    <!-- if最多嵌套3层 -->   
    <module name="NestedIfDepth">   
        <property name="max" value="3" />   
    </module>   
    <!-- try最多被嵌套2层 -->   
    <module name="NestedTryDepth">   
        <property name="max" value="2" />   
    </module>   
    <!-- clone方法必须调用了super.clone() -->   
    <module name="SuperClone" />   
    <!-- finalize 必须调用了super.finalize() -->   
    <module name="SuperFinalize" />   
    <!-- 不能catch java.lang.Exception -->   
    <module name="IllegalCatch">   
        <property name="illegalClassNames" value="java.lang.Exception" />  
    </module>   
    <!-- 确保一个类有package声明 -->   
    <module name="PackageDeclaration" />   
    <!-- 一个方法中最多有3个return -->   
    <module name="ReturnCount">   
        <property name="max" value="3" />   
        <property name="format" value="^$" />   
    </module>   
    <!--   
        根据 Sun 编码规范, class 或 interface 中的顺序如下: 1.class 声明。首先是 public,   
        然后是protected , 然后是 package level (不包括access modifier ) 最后是private .   
        (多个class放在一个java文件中的情况) 2.变量声明。 首先是 public, 然后是protected然后是 package 
        level (不包括access modifier ) 最后是private . (多个class放在一个java文件中的情况)   
        3.构造函数 4.方法   
    -->   
    <module name="DeclarationOrder" /> 
    <!-- 同一行不能有多个声明 -->   
    <module name="MultipleVariableDeclarations" />   
    <!-- 不必要的圆括号 -->   
    <module name="UnnecessaryParentheses" />    

    <!-- 杂项 -->   
    <!-- 禁止使用System.out.println -->   
    <module name="GenericIllegalRegexp">   
        <property name="format" value="System\.out\.println" />   
        <property name="ignoreComments" value="true" />
    </module>

    <!-- 检查数组类型的定义是String[] args,而不是String args[] -->   
    <module name="ArrayTypeStyle" />
    <!-- 检查java代码的缩进 默认配置:基本缩进 4个空格,新行的大括号:0。新行的case 4个空格 -->   
    <module name="Indentation" />   
</module> 

七·代码文档

android代码文档由javadoc生成。具体规则如下

  • 1、单行(single-line)注释:“//……”
  • 2、块(block)注释:“/……/”
  • 3、文档注释:“/*……/”
  • 4、javadoc 注释标签语法
  • @author 对类的说明 标明开发该类模块的作者
  • @version 对类的说明 标明该类模块的版本
  • @see 对类、属性、方法的说明 参考转向,也就是相关主题
  • @param 对方法的说明 对方法中某参数的说明
  • @return 对方法的说明 对方法返回值的说明
  • @exception 对方法的说明 对方法可能抛出的异常进行说明

results matching ""

    No results matching ""