Android Studio 格式规范

Android Studio 格式规范

1 前言

  • 随着团队规模的扩大、项目数量的增加,如果每位开发者使用的代码风格不一致,将会影响代码的可读性、可维护性,并增加代码冲突与历史记录查找的成本。
  • 为了确保代码风格统一,提升项目质量和协作效率,特制定本规范。

2 代码风格规范

2.1 格式化原则

  • 提交代码前必须执行 "格式化" 操作,重要的事说三遍!
  • 统一的格式化配置可避免因个人 IDE 设置不同而导致的代码冲突和历史记录混乱。

2.2 配置格式化模板

  • 1)打开 File -> Settings -> Editor -> Code Style
  • 2)点击右上角 齿轮图标 -> Import Scheme ,导入团队统一的 TestAndroid.xml 配置文件。
  • 3)每次修改代码后执行以下操作:
    • 格式化代码:File -> Keymap -> Reformat Code(快捷键可自行设置)
    • 优化 import :File -> Keymap -> Rearrange Code(删除无效 import)
  • 注意:完整 TestAndroid.xml 配置文件已附在文档末尾,可直接保存成文件并导入,且内容中的 name 值可按需修改。
xml 复制代码
<code_scheme name="TestAndroid" version="173">
  <option name="RIGHT_MARGIN" value="150" />
  <AndroidXmlCodeStyleSettings>
    <option name="VALUE_RESOURCE_FILE_SETTINGS">
      <value>
        <option name="WRAP_ATTRIBUTES" value="1" />
      </value>
    </option>
  </AndroidXmlCodeStyleSettings>
  <JetCodeStyleSettings>
    <option name="SPACE_AROUND_RANGE" value="true" />
    <option name="SPACE_BEFORE_EXTEND_COLON" value="false" />
    <option name="INSERT_WHITESPACES_IN_SIMPLE_ONE_LINE_METHOD" value="false" />
    <option name="SPACE_BEFORE_WHEN_PARENTHESES" value="false" />
    <option name="CONTINUATION_INDENT_IN_PARAMETER_LISTS" value="false" />
    <option name="CONTINUATION_INDENT_IN_ARGUMENT_LISTS" value="false" />
    <option name="CONTINUATION_INDENT_FOR_EXPRESSION_BODIES" value="false" />
    <option name="CONTINUATION_INDENT_FOR_CHAINED_CALLS" value="false" />
    <option name="CONTINUATION_INDENT_IN_SUPERTYPE_LISTS" value="false" />
    <option name="CONTINUATION_INDENT_IN_IF_CONDITIONS" value="false" />
    <option name="CONTINUATION_INDENT_IN_ELVIS" value="false" />
    <option name="WRAP_EXPRESSION_BODY_FUNCTIONS" value="1" />
  </JetCodeStyleSettings>
  <MarkdownNavigatorCodeStyleSettings>
    <option name="RIGHT_MARGIN" value="72" />
  </MarkdownNavigatorCodeStyleSettings>
  <Objective-C>
    <option name="INDENT_NAMESPACE_MEMBERS" value="2" />
    <option name="INDENT_C_STRUCT_MEMBERS" value="2" />
    <option name="INDENT_CLASS_MEMBERS" value="2" />
    <option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
  </Objective-C>
  <codeStyleSettings language="CMake">
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="Groovy">
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="HTML">
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="JAVA">
    <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
    <option name="ALIGN_MULTILINE_RESOURCES" value="false" />
    <option name="ALIGN_MULTILINE_FOR" value="false" />
    <option name="WRAP_LONG_LINES" value="true" />
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="JSON">
    <indentOptions>
      <option name="INDENT_SIZE" value="1" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="ObjectiveC">
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
  <codeStyleSettings language="XML">
    <option name="FORCE_REARRANGE_MODE" value="0" />
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="2" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
    <arrangement>
      <rules>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>xmlns:android</NAME>
                <XML_NAMESPACE>^$</XML_NAMESPACE>
              </AND>
            </match>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>xmlns:.*</NAME>
                <XML_NAMESPACE>^$</XML_NAMESPACE>
              </AND>
            </match>
            <order>BY_NAME</order>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>.*:id</NAME>
                <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
              </AND>
            </match>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>.*:name</NAME>
                <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
              </AND>
            </match>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>name</NAME>
                <XML_NAMESPACE>^$</XML_NAMESPACE>
              </AND>
            </match>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>style</NAME>
                <XML_NAMESPACE>^$</XML_NAMESPACE>
              </AND>
            </match>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>.*</NAME>
                <XML_NAMESPACE>^$</XML_NAMESPACE>
              </AND>
            </match>
            <order>BY_NAME</order>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>.*</NAME>
                <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
              </AND>
            </match>
            <order>ANDROID_ATTRIBUTE_ORDER</order>
          </rule>
        </section>
        <section>
          <rule>
            <match>
              <AND>
                <NAME>.*</NAME>
                <XML_NAMESPACE>.*</XML_NAMESPACE>
              </AND>
            </match>
            <order>BY_NAME</order>
          </rule>
        </section>
      </rules>
    </arrangement>
  </codeStyleSettings>
  <codeStyleSettings language="kotlin">
    <option name="RIGHT_MARGIN" value="150" />
    <option name="KEEP_FIRST_COLUMN_COMMENT" value="false" />
    <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
    <option name="SPACE_AROUND_UNARY_OPERATOR" value="true" />
    <option name="CALL_PARAMETERS_WRAP" value="1" />
    <option name="METHOD_PARAMETERS_WRAP" value="1" />
    <option name="EXTENDS_LIST_WRAP" value="1" />
    <option name="METHOD_CALL_CHAIN_WRAP" value="1" />
    <option name="ASSIGNMENT_WRAP" value="1" />
    <option name="PARAMETER_ANNOTATION_WRAP" value="1" />
    <option name="VARIABLE_ANNOTATION_WRAP" value="1" />
    <option name="ENUM_CONSTANTS_WRAP" value="1" />
    <indentOptions>
      <option name="INDENT_SIZE" value="2" />
      <option name="CONTINUATION_INDENT_SIZE" value="4" />
      <option name="TAB_SIZE" value="2" />
    </indentOptions>
  </codeStyleSettings>
</code_scheme>

3 版权信息配置

  • 为保证版权声明一致,需要在每个新建文件中自动添加版权信息。
  • 1)打开 File -> Settings -> Editor -> Copyright -> Copyright Profiles
  • 2)导入统一的版权模板 TestCopyright.xml
  • 3)在 File -> Settings -> Editor -> Copyright 中将该模板设置为 默认模板
  • 注意:完整 TestCopyright.xml 配置文件已附在文档末尾,可直接保存成文件并导入,且 value 中对应的值可按需修改。
xml 复制代码
<component name="CopyrightManager">
    <copyright>
        <option name="notice" value="Copyright (c) &amp;#36;today.year. Beijing Test Education Ltd. All Rights Reserved." />
        <option name="myName" value="Test" />
    </copyright>
</component>

4 类注释配置

4.1 新建类文件自动生成类注释

  • 1)打开 File -> Settings -> Editor -> File and Code Templates
  • 2)在类文件模板(如 Class)开头添加:
kotlin 复制代码
/**
 * @Author: san.zhang
 * @Date: ${DATE}-${TIME}
 * @Description:  
 */

4.2 已有类文件快捷添加类注释

  • 1)打开 File -> Settings -> Editor -> Live Templates
  • 2)在 Android 分组下添加新的 Live Template
  • 3)Template Text 配置:
kotlin 复制代码
/**
 * @Author: san.zhang
 * @Date: $DATE$-$TIME$
 * @Description:
 */
  • 4)在 Edit Variables 中设置:
    • DATE -> date("yyyy/MM/dd")
    • TIME -> time("HH:mm")
  • 这样在已有文件中,只需输入该模板缩写并触发(如 Tab 键)即可快速生成注释。

5 其它推荐配置

5.1 Kotlin when 函数换行问题

  • 部分版本 Android Studio 格式化 when 会自动换行,可通过 Code Style -> Kotlin 调整相关参数。

5.2 XML 文件格式化顺序

  • 如果格式化 XML 后标签顺序被打乱,可在 Code Style -> XML 中配置属性排序规则,保持布局文件一致性。

5.3 标签页多行显示

  • 打开多个文件时,可在 Settings -> Editor -> General -> Editor Tabs 勾选 Show tabs in multiple rows,提高文件切换效率。

5.4 打开 Git 的 Local Changes 显示

  • 建议关闭 modal commit interface
  • Settings -> Advanced Settings -> Version Control -> Use modal commit interface for Git and Mercurial
  • 这样可以直接在下方工具栏提交代码,避免弹窗干扰。
相关推荐
独行soc8 分钟前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能16 分钟前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿17 分钟前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc1 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20351 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106321 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
vistaup2 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵2 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动2 小时前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
熊猫钓鱼>_>2 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端