Android Studio使用备注

常规设置

  • 代码字体大小:Settings (设置)页面搜索 Font 找到 Edit 下的 Font 选项进行模板修改,然后在Color Scheme下的Color Scheme Font选择刚刚修改的模板
  • AS界面字体大小:Settings -> Appearance 修改
    Android Studio使用备注_第1张图片
  • 快捷键设置 Preferences -> Keymap
    Android Studio使用备注_第2张图片
  • 开启自动导包 到 Preferences -> Editor -> Auto Import -> Java 把以下选项勾上就OK了
    Android Studio使用备注_第3张图片
  • 大小写敏感关闭 (这样输入小写也可以匹配到大写的提示了)
    Android Studio使用备注_第4张图片
    • 修改AS内存 ,把AS内存显示出来【Settings】-【Appearance&Behavior】-【Appearance】-【Show memory indicator】打钩,即可显示在右下角
      Android Studio使用备注_第5张图片
      然后修改studio64.vmoptions和studio.vmoptions文件配置,重启AS即可。
  • 方法分割线 【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

Android Studio使用备注_第6张图片
ctrl + J 快速查看Live Templates
大神整理的常见配置,放到Android Studio config\templates目录下即可

常见注释
方法注释:mm,需要在方法内执行才能获取param和return

/**
 *@Description: 
 *@Params: $param$
 *@Return: $return$
 *@Author: huangshunbo
 *@Date: $data$
 */

Android Studio使用备注_第7张图片

类注释:cc

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

Android Studio使用备注_第8张图片


插件

  • GsonFormat
    Android Studio使用备注_第9张图片

  • Android ButterKnife Zelezny
    Android Studio使用备注_第10张图片

  • CodeGlance
    Android Studio使用备注_第11张图片

  • ADB WIFI & AndroidWiFiADB
    Android Studio使用备注_第12张图片
    Android Studio使用备注_第13张图片

  • eventbus-intellij-plugin eventbus导航插件
    Android Studio使用备注_第14张图片

  • idea-markdown markdown插件
    Android Studio使用备注_第15张图片

  • 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
Android Studio使用备注_第16张图片

Structure 类结构图

Android Studio使用备注_第17张图片

APK分析 , 将apk拖入AndroidStudio
Android Studio使用备注_第18张图片

Layout Inspector 布局分析
Android Studio使用备注_第19张图片

gradle projects
Android Studio使用备注_第20张图片

Stetho【facebook出品 调试工具】
可查看网络请求、布局结构、数据库


模板创建

模板存放在 AndroidStudio安装目录下的 plugins\android\lib\templates\activities 目录下 【我的是 C:\Program Files\Android\Android Studio\plugins\android\lib\templates\activities】
每个模板包含以下文件
Android Studio使用备注_第21张图片
其中
template.xml 模板配置文件,也是入口文件;
globals.xml.ftl 定义全局变量,同时引入一个通用的globals.xml.ftl
recipe.xml.ftl 指定资源文件的路径并相应的生成到我们的项目目录
我们创建模板的步骤大概就是
1. 编写好模板代码
2. 拷贝一个模板目录,并且把代码和资源放到root下的响应的目录
3. 把以上三个配置文件修改一下,搞定收工。

举一个粟子


其他相关技巧

  • mock调试
    所需工具:https://www.eolinker.com/ Fildder
    在eolinker中添加一个接口简单填写如下即可
    Android Studio使用备注_第22张图片
    url写的是除去域名部分的内容,成功示例则是你想返回的数据了(一般接口文档直接copy过来修改即可)。
    填写完点右上角保存后,复制下面的链接
    Android Studio使用备注_第23张图片
    最后在Fiddler中进行设置(需要enable rule打钩才能生效哦)
    Android Studio使用备注_第24张图片

我的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$
 */

Android Studio使用备注_第25张图片

类注释:cc

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

Android Studio使用备注_第26张图片
- 插件 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>

你可能感兴趣的:(Android基础)