工欲善其事必先利其器,学习开发工具的各种技巧,有利于提高我们的工作效率,本篇博客,我们就来学习Android Studio的各种技巧。
Project面板 在Android Studio最左边可以找到Project标签,这里是开发者管理项目的地方
Project标签下有几个选项卡,点击右边的箭头,可以打开切换菜单
Project标签展示的是整个项目的目录结构,完全按照文件系统的目录结构来进行展示,不过Android工程选项卡是开发中使用最多的
Android选项卡不是按照文件目录结构对项目进行的整理,而是按照module来进行的整理。每个module不论是主项目还是库项目都是一个独立的文件夹,另外所有的Gradle脚本都在一个单独的目录中——Gradle Scrpts
Stucture面板
Stucture标签不仅可以显示代码结构,也可以显示其成员变量、静态常量、方法等信息,而在Android Studio中不仅是代码,XML布局、脚本也可以显示其Stucture信息
Android Monitor 这个面板应该是开发者使用的非常多的一个面板,这里会显示Debug程序的Log信息,在设置中可以对Logcat所打印的Log根据其种类设置成不同的颜色
Keymap Android Studio可以设置各种类型的快捷键,在Setting中找到Keymap标签,在下拉菜单中可以选择各种内置的快捷键类型,本文中所有的快捷键都指的是默认的Android Studio快捷键
Tip of the Day 在Android Studio菜单栏的Help标签下,选择Tip of the Day选项,可以打开Android Studio的Tips提示
这里面会随机显示一条Android Studio的使用提示,Tip of the Day默认是在启动时显示的,但是很多开发者都不会让它启动时显示,实际上这里才是Android Studio的技巧集萃,里面都是非常实用的使用技巧,每天抽一点时间,简单看下这个Tips,用不了多久这些带给你的时间收益,绝对远大于你看这些Tips的时间成本
快速查找 Android Studio自带的强大全局快捷搜索,只需要双击”shift”键即可,在这个Search EveryWhere中,你只需要输入要查找的内容(可以是模糊查询,有关键字即可),下面就可以实时显示查找出的结果。当勾选上面的复选框——Include non-project items后,还可以搜索非项目中的内容,例如引用的jar包中的内容
Search Action Android Studio快捷键众多,因此Android Studio提供了一个类似搜索指令的入口,通过快捷键” Ctrl+Shift+A”可以快速调出这个搜索入口,例如要查找打开最近的工程这样一个指令,可以直接输入”Open Recent”,按下回车键后就可以直接使用这条指令
演示模式 Android Studio为开发者提供了极为方便的演示模式,打开菜单栏的View选项,在最下面找到几种演示模式,通过几种模式可以在连接投影仪时非常方便地全屏显示代码区域
单词选择 在Android Studio中,通过键盘操作来选择单词是编辑代码时最常用的操作,通过”ctrl+←”快捷键来实现按单词的光标移动,然后通过“ctrl+w”选择光标所在的单词,Android Studio也提供了安装驼峰命名法来实现光标移动的设置,在设置中开启”Use CamelHumps words”即可使用该功能,开启后,再通过”ctrl+←”就可以按照驼峰来移动光标
显示最近操作、修改 在Android Studio中,使用”Ctrl+E”和”Ctrl+Shift+E”快捷键,以快速显示最近文件操作和文件修改 使用”Ctrl+E”快捷键显示最近浏览过的文件
使用”Ctrl+Shift+E”快捷键显示了最近编辑过的文件,与此同时使用”Ctrl+Tab”快捷键进行各个界面的切换
操作记录 当开发者在浏览代码时,通常会进行代码的跳转,而当想回到之前浏览过的地方时就比较麻烦了,而Android Studio保存了每个操作的历史,通过快捷键”Ctrl+Alt+←\→ ”来进行访问位置的导航 移动行 整体移动某行是很常用的方法,在Android Studio中通过”Alt+Shift+方向键上\方向键下”就可以实现某一行的上下移动
查找调用 在开发中,查找一个方法在何处被调用过或者查找一个ID在哪里被引用过是经常性操作,例如要查找initViews()的调用处,只要单击鼠标右键,选择”Find Usages”即可,当然你也可以使用”Alt+F7”进行快速查找
快速方法操作 在不同的方法间进行跳转是开发者了解程序架构的必备技能,在Android Studio中,开发者可以通过按住”Ctrl”键,并点击方法名的方式进入方法,查看方法详情,你也可以通过直接使用”Ctrl+B”快捷键进入一个方法
查找参数定义与文档 通过快捷键”Ctrl+P”可以快速查看该方法的参数定义
如果你想像使用Eclipse一样,当鼠标放上去的时候就显示文档的提示,那么可以在设置中进行设置,Editor-General-Show quick documention on mouse move
快速行操作 通过快捷键”Ctrl+Shift+↑\↓”,可以迅速地将一行移动到上面一行或者下面一行,而不需要通过剪切来进行两行的交换
通过快捷键”Ctrl+X”删除一行
通过快捷键”Ctrl+D”迅速复制上一行的代码,同时将光标停留在变量名的地方
快速断点 条件断点和普通断点一样,直接在左边的编辑面板上点击就能生成,而要给一个普通断点增加条件功能,只需要普通断点上单击鼠标右键,在弹出菜单的Condition中填入断点条件即可
在调试时,开发者可能会临时增加一些断点,也就是说,开发者实际上只想让这个断点执行一次,下次就不想在这个地方继续执行断点了,通过快捷键”Ctrl+Alt+Shift+F8”,即可作为临时断点
临时断点与普通断点区别就在于临时断点上有一个数字”1”,当临时断点执行一次后就会自动消失
异常断点 举个例子,程序中最常见的Crash莫过于NullPointerException,如何在程序中出现NullPointerException的地方都打上断点呢?其实根本不需要这么做,开发者只要打开Run-View breakpoints界面,点击右上角的”+”,选择Java Exception Breakpoints,并输入要监听的异常即可
在这里选择监听NullPointerException,那么在程序时不需要设置任何断点,只要App因为NullPointerException异常而导致崩溃,系统就会在对应的地方自动断点并暂停
日志断点 开发者经常会遇到这样的情况,整个工程的代码已经写完了,突然出现了一个bug需要加一行Log进行调试,因为这一行Log要把整个工程都编译一遍,这是非常痛苦的事,而实际上,Android Studio已经提供了针对这个问题的解决方案,那就是日志断点
例如下面这个例子,开发者需要在每次循环中打出一句Log,但是又不想增加一行Log
此时可以使用日志断点来增加Log而不需要修改代码,首先需要打上一个普通断点,然后在断点单击鼠标右键,选择suspend属性为false,并在下面的Log evaluated expression中写入日志信息即可,这样设置后,在程序运行时就不用重新编译,而且会在断点处打出你需要的日志信息
多行操作 当代码的上下文有很多相同的代码,而开发者又需要同时对这些代码块进行操作时,就可以使用多重选择功能,按住option(win为alt)键, 然后鼠标进行区域的选择. 然后进行对应修改即可.
你可能认为上面的必须要连续的才可以. 对于非连续的,可以设置多个光标点解决
快捷键:alt + shift + 鼠标点击(win) 即可添加一个编辑光标. 最后如果不需要那么就esc即可关闭多余光标.
快速补全完成 创建一个对象. 或者findViewById()有时总需要移动鼠标或者光标到末尾进行分号的补全. 这些都可以快捷键搞定. 当你用习惯之后, 会非常的方便好用.
快捷键:ctrl + shift + enter
代码提示 任何地方都可以调出的代码提示. win的快捷方式ctrl + 空格(win同样大部分和输入法冲突, 请手动在AS设置里面keymap项查找completion basic手动修改快捷键)
快速生成变量 比如在方法体中logi直接快速生成一个log日志输出的模板, 但是TAG这个常量还没有声明. 这个时候用光标移动到TAG上. 使用快捷键提示即可快速生成.
快捷键:alt + enter
变量的快速操作 上图使用了两次快捷键, 第一次: 跳转到变量的声明处 快捷键:ctrl + b
第二次: 跳转到变量类型的定义处 快捷键:ctrl + shift + b
代码折叠 对代码块进行折叠和展开. ctrl + 加号\减号
设置变量命名代码风格 根据Google的代码风格指南,类的成员变量通常要以m开头,而静态成员变量通常要以s开头,因此可以在设置中设置变量的命名规则
在Field的Name prefix中设置m,在Static field的Name prefix中设置s,这样在输入一个变量的名字时,就可以自动补全m或者s
查看大纲
通过输入方法名,可以快速定位到方法,同时它还支持模糊查询,查询方法的一部分关键字也能进行筛选
预览方法定义 如果只想大体了解方法的定义, 而不需要进行方法所在源码类的跳转显示. 可以通过ctrl + shift + I 来进行预览
粘贴板管理 对于复制粘贴. 我们习惯只是单次的c+v, 那么如果你想查看之前被覆盖了的复制过的内容. AS同样有复制粘贴板来管理. 展示最近几次的复制内容.
快捷键:ctrl + shift + v
拆分窗口
只需要在标签页上右键. 选择split vertical\horizontal.
书签 在浏览大型代码, 或者调试时. 有时可能会需要记住一些关键的代码或者方法. 这个时候就可以使用书签. 来记录此关键代码. 只需要在点击需要标记的行, 并按F11就会在左侧出现一个小对勾. 这就说明已经打上了一个书签.
同时在Favorites标签中, 也可以找到对应的Bookmarks
可以通过快捷键shift + F11快速调出书签面板, 进行后续的操作.
附加调试 开发者一定遇到过当项目很大时,编译一次需要很长时间,而这时候又需要调试程序的情况。那么除了直接使用Debug运行程序以外,还可以使用attach to debugger的方式。
在ADB连接手机的情况下,点击attach to debugger按钮并选择要调试的程序(只能调试Debug签名的App),即进入可调式模式,不需要通过Debug运行程序
重构入口 当一个代码片段准备重构的时候. 可以使用ctrl + alt + shift + T打开重构入口. 或者右键单击选择Refactor显示重构界面.
这里有很多方便的功能. 提成方法等等.
surround With 当对一个段代码进行, 条件包裹, 捕捉异常, 循环, Runnable等. 可以直接使用快捷的方式, 而不需要手动生成条件在进行代码块的复制-粘贴
快捷键:ctrl + alt + T
Extract 你可以经常使用它,提取出一个方法.
快捷键:ctrl + alt + M
不仅仅如此, 你还可以对xml中的多个控件相同的属性进行抽取为style
快捷键:ctrl + alt + shift + T
这是其一, 对于xml不仅可以抽取Style, 还可以抽取布局Layout
而代码中, 可以提取各种变量, 参数, 长廊.
快速国际化 在项目中进行国际化,是通过建立不同语言的strings.xml文件来实现的,在Android Studio中提供了translation editor帮助开发者快速创建国际化文件
要使用这个功能,开发者只需要打开string.xml文件,打开右上角的提示”Open editor”,即可打开translation editor,在translation editor中,选择左上角的”地球”图标即可打开资源国际化选择器
选择相应的语言,即可在目录下产生该语言对应的资源文件
Stucturally Search Stucturally Search是Android Studio中一个非常重要的功能,通过Find Action方法,可以快速打开该功能
Stucturally Search界面
在编辑区域,开发者可以编辑各种要搜索的代码,而最关键的是,可以使用
标志进行匹配搜索,通过这样的搜索就能找到setContentView的方法在哪个地方使用
代码模板 Android Studio跟Eclipse一样,内置了很多代码的快速输入模板,在代码编写过程中,只需要使用快捷键”ctrl + J”就可以调出这些代码模板
例如”fori”代表快捷输入for循环,”ifn”代表快捷输入”if null”,等等,也可以增加自己的代码模块
后缀模板 前面提到使用”ctrl +J”调出内置代码模板,同样也给出了一些非常常用的类提供了通过后缀的方式来调出代码模板,例如要给一个List写一个遍历语句,其实并不需要通过内置模板来实现,直接在List后面跟上”.for”,即可快速打开foreach遍历语句 另外,还可以使用”.cast”来快速生成类型转换模板
自定义代码注释模板 方法注释 在Android Studio中,系统给开发者提供了默认的方法注释模板在方法名上一行输”/**”,再按Enter键确认,即可获取方法的注释代码
但和Android一样,Android Studio也提供了强大的自定义功能,首先需要打开设置,选择Live Templates,接下来点击右边栏的加号,选择增加一个Template Group,并在该Group下新增一个Template
文件、类注释 当系统生成一个类、接口等文件时,系统会默认生成一些代码和注释
和方法注释一样,开发者对这些注释同样可以完全自定义,首先,进入设置界面,选择”File and Code Templates”即可打开代码注释模板界面
接下来,选择Include标签,这里的模板,类似于在布局文件中被Include进来的布局,即一些通用模板
代码分析 在Android Studio中,Google还提供了很多代码分析工具,这些工具都集中在Android Studio的Analyze菜单中 Inspect Code & Code cleanup
Inspect Code & Code cleanup Inspect Code可以让IDE分析整个工程. 类似于Lint分析, 并会给出大致修改意见等
Code cleanup功能可以进行自动的代码修复.
Dependencies
通过Analyze中的几个Dependencies选项. 可以快速分析项目的依赖.
项目模板 Android Studio在创建Android项目的时候,会让开发者选择自带的项目模板
开发者可以根据系统自带的模板,在Android Studio安装目录的~/plugins/android/lib/templates目录下创建自定义模板
快捷键查找表
功能描述 | keymap对应名字 | Mac | Win/Linux |
---|---|---|---|
提示错误解决方案 | Show Intention Actions | option + enter | alt + enter |
AS配置界面 | Preferences | command + , | control+alt+S |
工程项目配置界面 | Project Structure | command + ; | Control+Alt+Shift+S |
快速构成代码 | Code Generate | command + N | alt + insert |
代码提示 | Completion/Basic | control + space(mac会冲突, 手动修改) | ctrl + 空格(win同样大部分和输入法冲突, 手动修改) |
选择视图 | select in any view | option + F1 | alt + F1 |
添加书签标识 | Toggle Bookmark | option + F3 | ctrl + F11 |
向下移动一行 | Move Line Down | option + shift + Down | alt + shift + Down |
向上移动一行 | Move Line Up | option + shift + Up | alt + shift + Up |
注释代码 | Comment with Line Comment | command + / | ctrl + / |
用代码模板包裹代码 | surround with Live Template | command + option + J | ctrl + alt + J |
格式化代码 | Reformat Code | command + option + L | ctrl + alt + L |
Copy Reference | Copy Reference | command + option + shift + C | ctrl + alt + shift + C |
if/try等包裹代码 | Surround With.. | command + option + T | ctrl + alt + T |
查看声明 | Declaration | command + B | ctrl + B |
快捷向下复制行 | Duplicate Line or Block | command + D | ctrl + D |
删除行 | Delete Line | command + delete | ctrl + Y |
快捷最近打开 | Recent Files | command + E | ctrl + E |
查找 | Edit/Find/Find | command + F | ctrl + F |
文件方法结构 | File Structure | command + F12 | ctrl + F12 |
显示书签 | Show Bookmarks | command + F3 | shift + F11 |
代码高亮向下查找 | Move To Next Occurrence | command + G | F3 |
代码高亮向上查找 | Move To Previous Occurrence | command + shift + G | shift + F3 |
按照模板生成代码 | Insert Live Template | command + J | ctrl + J |
定位到行 | Navigate/Line | command + L | ctrl + G |
快速到行首/尾 | Move Caret to Line Start/End | command + Left/Right | ctrl + Left/Right |
代码折叠/展开 | Collapse/Expand | command + 减号/加号 | ctrl + 减号/加号 |
查找类 | Navigate/Class | command + O | ctrl + N |
多行注释 | Code/Comment | command + option + / | ctrl + alt + / |
格式化代码 | Reformat Code | command + option + L | ctrl + alt + L提示参数类型 |
查找替换 | Replace | command + R | ctrl + R |
查找命令 | Find Action | command + shift + A | ctrl + shift + A |
拷贝文件路径 | Copy Paths | command + shift + C | ctrl + shift + C |
移动代码块 | Move Statement Up/Down | command + shift + down/up | ctrl + shift + down/up |
代码补全 | Complete Current Statement | command + shift + enter | ctrl + shift + enter |
全路径查找 | Find in Path | command + shift + F | ctrl + shift + F |
代码高亮 | Highlight Usages in File | command + shift + F7 | alt + J |
窗口内所有代码折叠/展开 | Collapse/Expand All | command + shift + 减号/加号 | ctrl + shift + 减号/加号 |
查找文件 | Navigate/File | command + shift + O | ctrl + shift + N |
全路径中替换 | Replace in Path | command + shift + R | ctrl + shift + R |
大小写转换 | Toggle Case | command + shift + U | ctrl + shift + U |
显示粘贴版历史 | Paste from History | command + shift + V | ctrl + shift + V |
快速查找定义 | command + space | ctrl + shift + I | |
粘贴 | Paste | command + V | ctrl + V |
复制 | Copy | command + C | ctrl + C |
去除无效包引用 | Optimize Imports | control + option + O | ctrl + alt + O |
显示类关系继承体系 | Type Hierarchy | control + H | ctrl + H |
快速覆写方法 | override Methods | control + O | ctrl + O |
查找调用的位置 | Call hierarchy | control + option + H | ctrl + alt + H |
添加书签 | Toggle Bookmark | F3 | F11 |
扩大缩小选中范围 | Extend Selection/Shrink Selection | option + UP/Down | ctrl + W + shift + W |
跳转到父类 | Super method | command + U | ctrl + U |
关闭当前tab标签 | Editor Tabs / Close | command + W | ctrl + shift + a |
关闭除编辑窗口的其余窗口 | Hide All Tool Windows | command + shift + F12 | ctrl + shift + F12 |
预览方法定义 | Quick Definition | command + Y | ctrl + shift + I |
返回光标最后编辑位置 | Last Edit Location | command + shift + delete | control + shift + Backspace |
调到代码块首部/尾部 | Move Caret To Code Block | Option + Command + [ 或者 ] | Control+[ 或者 ] |
重命名 | Rename | shift + F6 | shift + F6 |
抽取方法 | Extract Method | command + option + M | control+alt+M |
抽取变量 | Extract Variable | command + option + V | control+alt+V |
抽取字段 | Extract Field | command + option + F | control+alt+F |
抽取常量 | Extract Constant | command + option + C | control+alt+C |
抽取参数 | Extract Parameter | command + option + P | control+alt+P |
重构入口 | Refactor This | control + T | ctrl + alt + shift + T |
参考资料: 《 Android群英传神兵利器》