Android开发一些规范
2017-03-29 15:45
197 查看
Android开发一些规范
命名 遵循前缀表明类型的习惯,形如
组织布局文件 如果你不确定如何排版一个布局文件,遵循一下规则可能会有帮助。
每一个属性一行,缩进4个空格
关闭标签
考虑使用Designtime attributes 设计时布局属性,Android Studio已经提供支持,而不是硬编码
作为一个经验法则,
styler XML中。此规则也有例外,不过大体工作 的很好。这个思想整体是保持layout属性(positioning, margin, sizing) 和content属性在布局文件中,同时将所有的外观细节属性(colors, padding, font)放 在style文件中。
例外有以下这些:
layout文件中
有时候将
使用styles 几乎每个项目都需要适当的使用style文件,因为对于一个视图来说有一个重复的外观是很常见的。 在应用中对于大多数文本内容,最起码你应该有一个通用的style文件,例如:
应用到TextView 中:
你或许需要为按钮控件做同样的事情,不要停止在那里。将一组相关的和重复
将一个大的style文件分割成多个文件 你可以有多个
里xml的
不用于资源文件路径需要为系统构建起的有意义,在
不要这样做
使用这种格式,你会非常容易的开始重复定义RGBA值,这使如果需要改变基本色变的很复杂。同时,这些定义是跟一些环境关联起来的,如
应该放到一个按钮风格中,而不是在
相反,这样做:
向应用设计者那里要这个调色板,名称不需要跟"green", "blue", 等等相同。 "brand_primary", "brand_secondary", "brand_negative" 这样的名字也是完全可以接受的。 像这样规范的颜色很容易修改或重构,会使应用一共使用了多少种不同的颜色变得非常清晰。 通常一个具有审美价值的UI来说,减少使用颜色的种类是非常重要的。
像对待colors.xml一样对待dimens.xml文件 与定义颜色调色板一样,你同时也应该定义一个空隙间隔和字体大小的“调色板”。 一个好的例子,如下所示:
布局时在写 margins 和 paddings 时,你应该使用
避免深层次的视图结构 有时候为了摆放一个视图,你可能尝试添加另一个LinearLayout。你可能使用这种方法解决:
即使你没有非常明确的在一个layout布局文件中这样使用,如果你在Java文件中从一个view inflate(这个inflate翻译不过去,大家理解就行) 到其他views当中,也是可能会发生的。
可能会导致一系列的问题。你可能会遇到性能问题,因为处理起需要处理一个复杂的UI树结构。 还可能会导致以下更严重的问题StackOverflowError.
因此尽量保持你的视图tree:学习如何使用RelativeLayout, 如何 optimize
你的布局 和如何使用
转:https://github.com/futurice/android-best-practices/blob/master/translations/Chinese/README.cn.md
未完待续
资源文件 Resources
命名 遵循前缀表明类型的习惯,形如type_foo_bar.xml。例如:
fragment_contact_details.xml,
view_primary_button.xml,
activity_main.xml.
组织布局文件 如果你不确定如何排版一个布局文件,遵循一下规则可能会有帮助。
每一个属性一行,缩进4个空格
android:id总是作为第一个属性
android:layout_****属性在上边
style属性在底部
关闭标签
/>单独起一行,有助于调整和添加新的属性
考虑使用Designtime attributes 设计时布局属性,Android Studio已经提供支持,而不是硬编码
android:text(译者注:墙内也可以参考stormzhang的这篇博客链接)。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="@string/name" style="@style/FancyText" /> <include layout="@layout/reusable_part" /> </LinearLayout>
作为一个经验法则,
android:layout_****属性应该在 layout XML 中定义,同时其它属性
android:****应放在
styler XML中。此规则也有例外,不过大体工作 的很好。这个思想整体是保持layout属性(positioning, margin, sizing) 和content属性在布局文件中,同时将所有的外观细节属性(colors, padding, font)放 在style文件中。
例外有以下这些:
android:id明显应该在layout文件中
layout文件中
android:orientation对于一个
LinearLayout布局通常更有意义
android:text由于是定义内容,应该放在layout文件中
有时候将
android:layout_width和
android:layout_height属性放到一个style中作为一个通用的风格中更有意义,但是默认情况下这些应该放到layout文件中。
使用styles 几乎每个项目都需要适当的使用style文件,因为对于一个视图来说有一个重复的外观是很常见的。 在应用中对于大多数文本内容,最起码你应该有一个通用的style文件,例如:
<style name="ContentText"> <item name="android:textSize">@dimen/font_normal</item> <item name="android:textColor">@color/basic_black</item> </style>
应用到TextView 中:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/price" style="@style/ContentText" />
你或许需要为按钮控件做同样的事情,不要停止在那里。将一组相关的和重复
android:****的属性放到一个通用的style中。
将一个大的style文件分割成多个文件 你可以有多个
styles.xml文件。Android SDK支持其它文件,
styles这个文件名称并没有作用,起作用的是在文件
里xml的
<style>标签。因此你可以有多个style文件
styles.xml,
style_home.xml,
style_item_details.xml,
styles_forms.xml。
不用于资源文件路径需要为系统构建起的有意义,在
res/values目录下的文件可以任意命名。
colors.xml是一个调色板 在你的
colors.xml文件中应该只是映射颜色的名称一个RGBA值,而没有其它的。不要使用它为不同的按钮来定义RGBA值。
不要这样做
<resources> <color name="button_foreground">#FFFFFF</color> <color name="button_background">#2A91BD</color> <color name="comment_background_inactive">#5F5F5F</color> <color name="comment_background_active">#939393</color> <color name="comment_foreground">#FFFFFF</color> <color name="comment_foreground_important">#FF9D2F</color> ... <color name="comment_shadow">#323232</color>
使用这种格式,你会非常容易的开始重复定义RGBA值,这使如果需要改变基本色变的很复杂。同时,这些定义是跟一些环境关联起来的,如
button或者
comment,
应该放到一个按钮风格中,而不是在
color.xml文件中。
相反,这样做:
<resources> <!-- grayscale --> <color name="white" >#FFFFFF</color> <color name="gray_light">#DBDBDB</color> <color name="gray" >#939393</color> <color name="gray_dark" >#5F5F5F</color> <color name="black" >#323232</color> <!-- basic colors --> <color name="green">#27D34D</color> <color name="blue">#2A91BD</color> <color name="orange">#FF9D2F</color> <color name="red">#FF432F</color> </resources>
向应用设计者那里要这个调色板,名称不需要跟"green", "blue", 等等相同。 "brand_primary", "brand_secondary", "brand_negative" 这样的名字也是完全可以接受的。 像这样规范的颜色很容易修改或重构,会使应用一共使用了多少种不同的颜色变得非常清晰。 通常一个具有审美价值的UI来说,减少使用颜色的种类是非常重要的。
像对待colors.xml一样对待dimens.xml文件 与定义颜色调色板一样,你同时也应该定义一个空隙间隔和字体大小的“调色板”。 一个好的例子,如下所示:
<resources> <!-- font sizes --> <dimen name="font_larger">22sp</dimen> <dimen name="font_large">18sp</dimen> <dimen name="font_normal">15sp</dimen> <dimen name="font_small">12sp</dimen> <!-- typical spacing between two views --> <dimen name="spacing_huge">40dp</dimen> <dimen name="spacing_large">24dp</dimen> <dimen name="spacing_normal">14dp</dimen> <dimen name="spacing_small">10dp</dimen> <dimen name="spacing_tiny">4dp</dimen> <!-- typical sizes of views --> <dimen name="button_height_tall">60dp</dimen> <dimen name="button_height_normal">40dp</dimen> <dimen name="button_height_short">32dp</dimen> </resources>
布局时在写 margins 和 paddings 时,你应该使用
spacing_****尺寸格式来布局,而不是像对待String字符串一样直接写值。 这样写会非常有感觉,会使组织和改变风格或布局是非常容易。
避免深层次的视图结构 有时候为了摆放一个视图,你可能尝试添加另一个LinearLayout。你可能使用这种方法解决:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout ... > <LinearLayout ... > <LinearLayout ... > <LinearLayout ... > </LinearLayout> </LinearLayout> </LinearLayout> </RelativeLayout> </LinearLayout>
即使你没有非常明确的在一个layout布局文件中这样使用,如果你在Java文件中从一个view inflate(这个inflate翻译不过去,大家理解就行) 到其他views当中,也是可能会发生的。
可能会导致一系列的问题。你可能会遇到性能问题,因为处理起需要处理一个复杂的UI树结构。 还可能会导致以下更严重的问题StackOverflowError.
因此尽量保持你的视图tree:学习如何使用RelativeLayout, 如何 optimize
你的布局 和如何使用
<merge>标签.
转:https://github.com/futurice/android-best-practices/blob/master/translations/Chinese/README.cn.md
未完待续
相关文章推荐
- Android开发上的一些规范
- 关于Android 开发中的一些命名规范
- 网上搜集整理的一些android开发的规范
- Android开发中一些命名规范
- 介绍内容有 Android 开发规范, 架构, 布局技巧, 以及使用一些有助于快速开发相关工具等等
- (转)Android开发中一些命名规范
- Android开发中一些命名规范
- Android开发网上的一些重要知识点 [3]
- AndroidRobot博客开通啦,主要用来发表android开发的一些文章,欢迎大家交流!谢谢
- 前人总结的一些软件开发规范
- Android开发网上的一些重要知识点 [1]
- 开发android程序时使用eclipse的svn插件时的一些设置
- 关于Android开发过程中,createImage的一些总结。
- 前人总结的一些软件开发规范
- android开发关于标题栏的一些改动
- Android的一些开发资料
- Android的一些开发资料
- 一些基本的项目开发规范.慢慢总结中..
- Android-NDK开发之基础--Android.mk文件语法规范(转JavaEye)
- 关于android游戏开发的一些基础和个人经验