提取方法 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
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$
*/
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
ADB & DDMS & Android Monitor
Structure 类结构图
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. 把以上三个配置文件修改一下,搞定收工。
举一个粟子
/**
*@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
<module name = "Checker">
<property name="charset" value="UTF-8"/>
<property name="severity" value="warning"/>
<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>
<module name="TypeName">
<property name="tokens" value="CLASS_DEF"/>
<message key="name.invalidPattern"
value="类名''{0}''首字母必须大写,遵循大驼峰命名方式"/>
module>
<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>
<module name="AbstractClassName">
<property name="format" value="^Abstract[A-Z][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="抽象类名''{0}''须以Abstract开头,遵循大驼峰命名方式"/>
module>
<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>
<module name="ConstantName">
<property name="format" value="^[A-Z0-9_]*$"/>
<message key="name.invalidPattern" value="全局常量 ''{0}''字母须全部大写,可以包含下划线_"/>
module>
<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>
<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>
<module name="ParameterNumber">
<property name="max" value="7"/>
<property name="tokens" value="METHOD_DEF,CTOR_DEF"/>
<message key="name.invalidPattern"
value="参数个数不超过7个"/>
module>
<module name="EqualsAvoidNull"/>
<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="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="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>
<module name="ReturnCount">
<property name="max" value="3"/>
module>
<module name="NestedTryDepth ">
<property name="max" value="3"/>
<message key="name.invalidPattern"
value="异常处理数量最多3个"/>
module>
<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>