第八章 Android开发规范整理以及Strings.xml定义规范化

1.先写系统设计文档,包括android系统设计说明文档,sqlite数据库设计等,这样能够加速开发效率.

2.使用mvp模式,并对代码进行合理的封装、优化等.

model和presenter按功能进行分类,但是,view为具体某个页面的接口,无法通用(除非有些页面比较类似),只能把一些通用的接口定义到一个基础接口里.所以表示器需要构造多个view.

3.将color资源都定义到colors.xml中.

4.将string资源都定义到strings.xml中,至少要将屏幕中看得到的字符串都定义到strings.xml里,方便文字国际化,以及减少应用的体积,降低数据的冗余.

5.layout布局文件的快速开发 定义布局模板或者styles样式或者使用include引用layout资源.

6.增加特殊的注释符号,
    如://TODO 表示此处待编写。
//FIXME 表示此处待修正。

7.部分资源可以以常量的形式定义在java类中.


补充:使用Android Studio,可以:

1.在菜单中Analyze-->>Inspect Code...  借助ide来检查自己写的代码是否规范


,以及是否有bug。

2.查看TODO 有没有做。

3.使用live templates快捷键加速开发.



Strings.xml定义规范化

总结:

两大重点:1.每个页面用单独的注释包裹起来。

      2.里面name的命名以类别打头。

1.java代码中最好不要出现直接的中文,需要通过strings.xml资源文件获取。xml里面的中文也要定义到strings.xml中去。

注意:

1. 页面上可以看见的字符串放到strings.xml里面.

2. 注意,不一定是中文的,可以是英文的字符串。

3. 工具类上的,非页面的string可以不用定义到strings.xml中。

4. 不要复用字符串资源。(不同的页面不要重用一个string)

因为后续需求有变更,要分别使用不同的提示语会导致你需要创建2个新的string.如果还有国外的语言,就会造成改动麻烦。


2.良好的文件结构,即同一页面的string用前缀和注释分离,如:

<!-- settings screen start -->

<string name="settings_log_out">Log Out</string>

<string name="settings_contact_us">Contact Us</string>

<!-- settings screen end -->

建议:里面的name 命名尽量以组件名打头,如: <string anme=”title_wdrz_detail_text”></string>,即:类别+模块名+模块子类名+功能(text)+状态(状态默认为default,注意,功能有时候可以省略

每个页面一个单独的string,用注释标清楚即可。

补充:可以为每个页面创建单独的 strings.xml 文件,如:settings-strings.xmlprofile-strings.xml.但是一个app通常有1020个页面。所以每一个语言目录下都会有1020strings.xml文件,个人认为这带来的是混乱。(在单语言app下可以采用这种模式,所以比较建议采用“同一页面的string用前缀和注释分离”)

如何获取strings.xml中的资源

Context.getString(R.string.settings_log_out);

如果在活动中,可以直接使用getString,如果是普通java类,则可以通过context.getString() 来获取。

其他获取方法:getResources().getString()  或者 getResources().getText()然后强制转型成string  或者aplication.getString().

定义到这里的理由

1.改起来方便,不需要改java代码。

2.你永远不知道你的应用要支持哪些语言。

扩展延伸

1.Format格式化:

永远不要使用+号来拼接字符串,因为不同的语言语序是不同的。

注意:在<string>中 加上%s ,然后在java代码中可以使用getString(int resId,Object…formatArgs) 来代替使用”+”号来进行字符串拼接。

如果有多个参数拼接,则使用 %1$s%2$s,%3$s…. ,如果是int型数值,则使用%1$d,%2$d,%3$d…,此处一定要加$,否则会编译错误。

注意:一定要不要漏掉后面的类型,如:%1$s,s表示字符串。

2. 永远不要在java代码中解决复数问题,因为不同语言中复数的语法规则是不同的。

3.通过html文本来改变TextView中某些单词的颜色。只用于处理静态的词语。(还可以使用 < b >< i >< u > 来分别使字符串具有加粗斜体下划线)如:

<string name="hello">
    <![CDATA[
        <font color=\'#28b5f5\'>Hello</font> world.
    ]]>
</string>

java代码中使用:

TextView hello = (TextView) findViewById(R.id.hello);
hello.setText(Html.fromHtml(getString(R.string.hello)));


参考文章:

Android开发中string.xml文件存在的意义

http://blog.csdn.net/qq_34206198/article/details/52085134

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值