常规设置
- 代码字体大小:Settings (设置)页面搜索 Font 找到 Edit 下的 Font 选项进行模板修改,然后在Color Scheme下的Color Scheme Font选择刚刚修改的模板
- AS界面字体大小:Settings -> Appearance 修改
- 快捷键设置 Preferences -> Keymap
- 开启自动导包 到 Preferences -> Editor -> Auto Import -> Java 把以下选项勾上就OK了
- 大小写敏感关闭 (这样输入小写也可以匹配到大写的提示了)
- 修改AS内存 ,把AS内存显示出来【Settings】-【Appearance&Behavior】-【Appearance】-【Show memory indicator】打钩,即可显示在右下角
然后修改studio64.vmoptions和studio.vmoptions文件配置,重启AS即可。
- 修改AS内存 ,把AS内存显示出来【Settings】-【Appearance&Behavior】-【Appearance】-【Show memory indicator】打钩,即可显示在右下角
- 方法分割线 【Settings】-【Editor】-【Appearance】将【Show method separetors】打钩
常用快捷键
提取方法 Ctrl+Alt+M
提取参数 Ctrl+Alt+P
注释代码(/**/) Ctrl + Shift + /
格式化代码 Ctrl + Alt + L
清除无效包引用 Alt + Ctrl + O
全局查找 Ctrl + Shift + F
全局查找+替换 Ctrl + Shift + R
折叠展开代码块 Ctrl Shift +或-
查找调用的位置 Ctrl + Alt + H
生成代码(如get,set方法,构造函数等) Alt+Insert
重命名 Shift + F6
可以选择单词继而语句继而行继而函数 Ctrl+W
显示参数信息 Ctrl+P
快捷覆写方法 Ctrl + O
文件方法结构 Ctrl + F12
显示类结构图(继承关系图) Ctrl+H
Bookmarks – F11添加/移除 Shift+F11显示
列选择/块选择 按住Alt,拖动鼠标
最近访问的文件列表 Ctrl + E 最近修改的文件列表 *Ctrl + Shift + E
Live Templates
ctrl + J 快速查看Live Templates
大神整理的常见配置,放到Android Studio config\templates目录下即可
常见注释
方法注释:mm,需要在方法内执行才能获取param和return
/**
*@Description:
*@Params: $param$
*@Return: $return$
*@Author: huangshunbo
*@Date: $data$
*/

类注释:cc
/**
* @author: huangshunbo
* @Filename: $class$
* @Description:
* @Copyright: Copyright (c) 2018 XXX Inc. All rights reserved.
* @date: $data$ $time$
*/

插件
GsonFormat
Android ButterKnife Zelezny
CodeGlance
ADB WIFI & AndroidWiFiADB
eventbus-intellij-plugin eventbus导航插件
idea-markdown markdown插件
Android Studio Prettify
可以将代码中的字符串写在string.xml文件中,选中字符串鼠标右键选择图中所示
CheckStyle-IDEA
CheckStyle-IDEA 是一个检查代码风格的插件,比如像命名约定,Javadoc,类设计等方面进行代码规范和风格的检查,你们可以遵从像Google Oracle 的Java 代码指南 ,当然也可以按照自己的规则来设置配置文件,从而有效约束你自己更好地遵循代码编写规范。Analyze Lint 静态代码检查 【Analyze】-【Inspect Code】里面检查的内容就包括Lint检查
AndroidLocalizationer
可用于将项目中的 string 资源自动翻译为其他语言的 Android Studio/IntelliJ IDEA 插件InnerBuilder 快速生成Builder Alt+Insert
- Material Design Icon Generator 快速生成Material Design图标
- Android Styler 根据xml快速生成style代码,复制layout代码到styles.xml Ctrl+Shift+D生成代码
- Android Proguard Plugin 一键生成项目混淆代码文件
- FindViewByMe 一键生成findViewById layout.xml中右键
- Key Promoter 当你用AS时使用鼠标时会提示该功能的快捷键
- FreeLine 增量编译
Android Studio中的工具
ADB & DDMS & Android Monitor
Device File Explorer
Structure 类结构图
APK分析 , 将apk拖入AndroidStudio
Layout Inspector 布局分析
gradle projects

Stetho【facebook出品 调试工具】
可查看网络请求、布局结构、数据库
模板创建
模板存放在 AndroidStudio安装目录下的 plugins\android\lib\templates\activities 目录下 【我的是 C:\Program Files\Android\Android Studio\plugins\android\lib\templates\activities】
每个模板包含以下文件
其中
template.xml 模板配置文件,也是入口文件;
globals.xml.ftl 定义全局变量,同时引入一个通用的globals.xml.ftl
recipe.xml.ftl 指定资源文件的路径并相应的生成到我们的项目目录
我们创建模板的步骤大概就是
1. 编写好模板代码
2. 拷贝一个模板目录,并且把代码和资源放到root下的响应的目录
3. 把以上三个配置文件修改一下,搞定收工。
其他相关技巧
- mock调试
所需工具:https://www.eolinker.com/ Fildder
在eolinker中添加一个接口简单填写如下即可
url写的是除去域名部分的内容,成功示例则是你想返回的数据了(一般接口文档直接copy过来修改即可)。
填写完点右上角保存后,复制下面的链接
最后在Fiddler中进行设置(需要enable rule打钩才能生效哦)
我的Android Studio
- 设置代码字体【Settings】-【Font】 选用【DejaVu Sans Mono】 字体 【Size 18】;【Color Scheme Font】选用【DejaVu Sans Mono】
- 设置AS界面字体 【Settings】-【Appearance】 将【Override default fonts by (not recommended)】打钩,并使用【微软雅黑】 【Size 16】
- 开启自动导包 【Settings】搜索【Auto Import】,将【Show import popup】【Optimize imports on the fly】【Add unambiguous imports on the fly】打钩
- 关闭大小写敏感 【Settings】-【Editor】-【General】-【Code Completion】 将【Case sensitive completion】设为【None】
- 修改Android Studio内存大小并显示内存使用 修改studio64.vmoptions和studio.vmoptions文件,【Settings】-【Appearance】将【Show memory indicator】打钩
- 方法分割线 【Settings】-【Editor】-【Appearance】将【Show method separetors】打钩
- Live Templates 放到Android Studio 目录【C:\Users\Administrator.AndroidStudio3.1\config\templates】下
Live Templates的注释
mm,需要在方法内执行才能获取param和return
/**
*@Description:
*@Params: $param$
*@Return: $return$
*@Author: huangshunbo
*@Date: $data$
*/

类注释:cc
/**
* @author: huangshunbo
* @Filename: $class$
* @Description:
* @Copyright: Copyright (c) 2018 XXX Inc. All rights reserved.
* @date: $data$ $time$
*/
- 插件 GsonFormat、Android ButterKnife Zelezny 、CodeGlance(代码缩略)、eventbus-intellij-plugin eventbus、idea-markdown markdown、CheckStyle-IDEA 、Lint、InnerBuilder、Material Design Icon Generator、FindViewByMe 、Key Promoter
- 【View】-【ToolBar】
一份checkstyle
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<!--
Checkstyle configuration that checks the Google coding conventions from:
- Google Java Style
https://google-styleguide.googlecode.com/svn-history/r130/trunk/javaguide.html
Checkstyle is very configurable. Be sure to read the documentation at
http://checkstyle.sf.net (or in your downloaded distribution).
Most Checks are configurable, be sure to consult the documentation.
To completely disable a check, just comment it out or delete it from the file.
Authors: Max Vetrenko, Ruslan Diachenko, Roman Ivanov.
-->
<module name = "Checker">
<!-- 文件编码设置 -->
<property name="charset" value="UTF-8"/>
<!-- 设置严重级别 -->
<property name="severity" value="warning"/>
<!-- Checks for whitespace -->
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
<!-- 设置每行是否可以有Tab键 -->
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
</module>
<module name="TreeWalker">
<module name="OuterTypeFilename"/>
<module name="IllegalTokenText">
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
<property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
<property name="message" value="Avoid using corresponding octal or Unicode escape."/>
</module>
<module name="AvoidEscapedUnicodeCharacters">
<property name="allowEscapesForControlCharacters" value="true"/>
<property name="allowByTailComment" value="true"/>
<property name="allowNonPrintableEscapes" value="true"/>
</module>
<!-- 一行可以容纳的字符数-->
<module name="LineLength">
<property name="max" value="100"/>
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>
<module name="AvoidStarImport"/>
<module name="OneTopLevelClass"/>
<module name="NoLineWrap"/>
<module name="EmptyBlock">
<property name="option" value="TEXT"/>
<property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
</module>
<module name="NeedBraces"/>
<!-- 右大括号是否单独一行的检查-->
<module name="RightCurly"/>
<module name="RightCurly">
<property name="option" value="alone"/>
<property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
</module>
<!-- 符号周围的空间检查-->
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyMethods" value="true"/>
<property name="allowEmptyTypes" value="true"/>
<property name="allowEmptyLoops" value="true"/>
<message key="ws.notFollowed"
value="请注意''{0}''周围的空间"/>
<message key="ws.notPreceded"
value="请注意''{0}''周围的空间"/>
</module>
<module name="OneStatementPerLine"/>
<module name="MultipleVariableDeclarations"/>
<module name="ArrayTypeStyle"/>
<module name="MissingSwitchDefault"/>
<module name="FallThrough"/>
<module name="UpperEll"/>
<module name="ModifierOrder"/>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
<module name="SeparatorWrap">
<property name="tokens" value="DOT"/>
<property name="option" value="nl"/>
</module>
<module name="SeparatorWrap">
<property name="tokens" value="COMMA"/>
<property name="option" value="EOL"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
<message key="name.invalidPattern"
value="包名''{0}''所有字母必须全部小写"/>
</module>
<!-- 命名规范 -->
<!-- 类的命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 -->
<module name="TypeName">
<property name="tokens" value="CLASS_DEF"/>
<message key="name.invalidPattern"
value="类名''{0}''首字母必须大写,遵循大驼峰命名方式"/>
</module>
<!-- 接口命名,匹配规则:(^I[A-Z][a-zA-Z0-9]*$),必须以大写I开始 -->
<module name="TypeName">
<property name="format" value="^I[A-Z][a-zA-Z0-9]*$"/>
<property name="tokens" value="INTERFACE_DEF"/>
<message key="name.invalidPattern"
value="接口类名''{0}''须以大写I开头,遵循大驼峰命名方式"/>
</module>
<!-- 抽象类命名,匹配规则:(^Abstract|Base[A-Z][a-zA-Z0-9]*$),必须以大写Abstract开始 -->
<module name="AbstractClassName">
<property name="format" value="^Abstract[A-Z][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="抽象类名''{0}''须以Abstract开头,遵循大驼峰命名方式"/>
</module>
<!-- <module name="TypeName">
<message key="name.invalidPattern"
value="类名所有首字母大写,遵循大驼峰命名方式"/>
</module> -->
<!-- 限制导入多余的包,例如java.lang.String -->
<module name="RedundantImport"/>
<!-- 限制导入未使用过的类 -->
<module name="UnusedImports"/>
<!-- 方法名命名规则 -->
<module name="MethodName">
<property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
<message key="name.invalidPattern"
value="方法名''{0}''必须遵循小驼峰命名法:方法名首字母小写,之后每个单词首字母大写"/>
<message key="method.name.equals.class.name" value="方法名 ''{0}'' 不能等于类名."/>
</module>
<!-- 类成员变量命名规则 -->
<module name="MemberName">
<property name="format" value="^m[a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="类成员变量名 ''{0}''须以小写字母m开头,遵循小驼峰命名法,除首字母小写外每个单词的首字母大写"/>
</module>
<!-- 方法参数名命名规则 -->
<module name="ParameterName">
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="方法参数名 ''{0}''须遵循小驼峰命名法,除首字母小写外每个单词的首字母大写"/>
</module>
<!-- 全局常量命名规则 static+final -->
<module name="ConstantName">
<property name="format" value="^[A-Z0-9_]*$"/>
<message key="name.invalidPattern" value="全局常量 ''{0}''字母须全部大写,可以包含下划线_"/>
</module>
<!-- 静态非final变量命名规则 -->
<module name="StaticVariableName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern" value="静态非final变量 ''{0}'' 须遵循小驼峰命名法,除首字母小写外每个单词的首字母大写"/>
</module>
<!-- 局部变量命名规则 -->
<module name="LocalVariableName">
<property name="tokens" value="VARIABLE_DEF"/>
<property name="format" value="^[a-z](_?[a-zA-Z0-9]+)*$"/>
<property name="allowOneCharVarInForLoop" value="true"/>
<message key="name.invalidPattern"
value="局部变量''{0}''须遵循小驼峰命名法,除首字母小写外每个单词的首字母大写"/>
</module>
<!-- 局部final变量命名规则 -->
<module name="LocalFinalVariableName">
<property name="format" value="^[A-Z0-9_]*$"/>
<message key="name.invalidPattern" value="局部final变量 ''{0}''字母须全部大写,可以包含下划线_"/>
</module>
<!-- 检查方法行数,不计算空行和单行//注释-->
<module name="MethodLength">
<property name="max" value="200"/>
<property name="countEmpty" value="false"/>
<property name="tokens" value="CTOR_DEF,METHOD_DEF"/>
<message key="maxLen.method" value="方法大小不可以超过200行。"/>
</module>
<!-- 参数个数不超过7个-->
<module name="ParameterNumber">
<property name="max" value="7"/>
<property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
<message key="name.invalidPattern"
value="参数个数不超过7个"/>
</module>
<!--避免 null.equals("sss")情况-->
<module name="EqualsAvoidNull"/>
<!--检查类equals()和hashCode()方法的覆盖-->
<module name="EqualsHashCode"/>
<module name="ClassTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern"
value="Class type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="MethodTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern"
value="Method type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="NoFinalizer"/>
<module name="GenericWhitespace">
<message key="ws.followed"
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
<message key="ws.preceded"
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
<message key="ws.illegalFollow"
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
<message key="ws.notPreceded"
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
</module>
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="4"/>
<property name="throwsIndent" value="4"/>
<property name="lineWrappingIndentation" value="4"/>
<property name="arrayInitIndent" value="4"/>
</module>
<module name="AbbreviationAsWordInName">
<property name="ignoreFinal" value="true"/>
<property name="allowedAbbreviationLength" value="2"/>
</module>
<module name="OverloadMethodsDeclarationOrder"/>
<module name="VariableDeclarationUsageDistance"/>
<!-- <module name="CustomImportOrder">
<property name="thirdPartyPackageRegExp" value=".*"/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="customImportOrderRules" value="STATIC###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STANDARD_JAVA_PACKAGE"/>
</module> -->
<module name="MethodParamPad"/>
<module name="OperatorWrap">
<property name="option" value="NL"/>
<property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
</module>
<module name="AnnotationLocation">
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
<module name="AnnotationLocation">
<property name="tokens" value="VARIABLE_DEF"/>
<property name="allowSamelineMultipleAnnotations" value="true"/>
</module>
<module name="NonEmptyAtclauseDescription"/>
<module name="JavadocTagContinuationIndentation"/>
<!-- <module name="SummaryJavadocCheck">
<property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
</module> -->
<!-- < p >注释检查-->
<module name="JavadocParagraph"/>
<module name="AtclauseOrder">
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
</module>
<!-- 异常抛出数量定义 -->
<module name="ThrowsCount">
<metadata name="net.sf.eclipsecs.core.comment" value="最大异常抛出个数"/>
<property name="max" value="3"/>
</module>
<!-- return个数 3个-->
<module name="ReturnCount">
<property name="max" value="3"/>
</module>
<!--try catch 异常处理数量 3-->
<module name="NestedTryDepth ">
<property name="max" value="3"/>
<message key="name.invalidPattern"
value="异常处理数量最多3个"/>
</module>
<!--JavaDoc注释的检查-->
<module name="JavadocMethod">
<property name="logLoadErrors" value="true"/>
<property name="suppressLoadErrors" value="true"/>
<property name="allowMissingPropertyJavadoc" value="true"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="tokens" value="METHOD_DEF, ANNOTATION_FIELD_DEF"/>
</module>
<module name="JavadocStyle">
<property name="checkFirstSentence" value="false"/>
</module>
<module name="JavadocType"/>
<module name="JavadocVariable">
<property name="ignoreNamePattern" value="SV$|ET$|RL$|LL$|FL$|TV$|BTN$|IB$|IV$|CB$|GV$|SV$|View$|RB$|PB$|WV$|RV$|LV$|VV$|SPN$|SB$|ACT$|ZC$|CHR$|AC$|DC$|DP$|TS$|IS$|EL$|MV$|TP$|TB$"/>
</module>
<module name="SingleLineJavadoc"/>
</module>
</module>
本文详细介绍了Android Studio的各项设置,包括代码字体、界面字体大小、快捷键、Live Templates、插件配置,以及如何开启自动导包、修改内存大小等。还分享了常用的快捷键和开发技巧,如提取方法、注释代码、查找调用位置等,旨在提升Android开发效率。

3322

被折叠的 条评论
为什么被折叠?



