快速开发之玩转Android Studio

一.代码查找技巧

1. 书签(Bookmarks)

    描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处。

    调用:Menu → Navigate → Bookmarks

    快捷键:

        添加/移除书签:F3(OS X) 、F11(Windows/Linux);

        添加/移除书签(带标记):Alt + F3(OS X)、Ctrl + F11(Windows/Linux);

        显示全部书签:Cmd + F3(OS X) 、Shift + F11(Windows/Linux),显示所有的书签列表,并且是可以搜索的。

        上一个/下一个书签:无,可以在设置中设置快捷键。

2. 折叠/展开代码块(Collapse Expand Code Block)

    描述:该操作提供一种方法,让你隐藏你不关心的部分代码,以一种较为简洁的格式显示关键代码。

一个有意思的用法是隐藏匿名内部类的代码,让其看起来像一个Lambda表达式。

    快捷键:Cmd + “+”/”-“(OS X)、Ctrl + Shift + “+”/”-“(Windows/Linux);

3.上下文信息(Context Info)

    描述:当前作用域定义超过滚动区域,执行该操作将显示所在的上下文信息,通常它显示的是类名或者内部类类名或者当前所在的方法名。该操作在xml文件中同样适用。

    调用:Menu → View → Context Info

    快捷键:Alt + Q (Windows/Linux)

4. 查找操作(Find Action)

    描述:输入某个操作的名称,快速查找,对于没有快捷键的部分操作这是一个很有用的技巧。

    快捷键:Cmd +Shift + A(OS X)、Ctrl + Shift + A(Windows/Linux);

5.在方法和内部类之间跳转(Move Between Methods and Inner Classes)

    描述:该操作让光标在当前文件的方法或内部类的名字间跳转。

    调用:Navigate → Next Method/Previous Method;

    快捷键:Ctrl + Up/Down(OS X)、Alt + Up/Down(Windows/Linux);

6.定位到嵌套文件(Navigate to Nested File)

    描述:有时你有一堆存放在不同目录下的同名文件,例如不同模块下的AndroidManifest.xml文件,当你想定位到其中的一个文件,你会得到一堆搜索结果,

你还得辨认哪个才是你需要的。通过在检索框中输入部分路径的前缀,并添加斜杠号,你就可以在第一次尝试的时候就找到正确的那个

快捷键:Shift + Cmd + O(OS X)、Shift + Ctrl + N(Windows/Linux);

7. 定位到父类(Navigate to parent)

    描述:如果光标是在一个继承父类重写的方法里,这个操作将定位到父类实现的地方。如果光标是在类名上,则定位到父类类名。

    Menu → Navigate → Super Class/Method

    快捷键:Cmd + U(OS X)、Ctrl + U(Windows/Linux);

8. 在外部打开文件(Open File Externally)

    描述:通过这个快捷键,简单地点击Tab,就可以打开当前文件所在的位置或者该文件的任意上层路径。

    快捷键:Cmd + 单击Tab(OS X)、Ctrl + 点击Tab(Windows/Linux);

9.参数信息(Parameter Info)

    描述:这个操作将显示和你在方法声明处写一样的参数列表,当你想看某个存在的方法的参数,这是一个很有用的操作。光标下的参数显示为黄色,如果没有参数显示黄色,意味着你的方法调用是无效的,很可能是某个参数分配不对。(例如一个浮点数赋值给了整型参数)。如果你正在写一个方法调用,突然离开编辑的地方,再返回的时候,输入一个逗号,就可以重新触发参数信息。

    快捷键:Cmd + P(OS X)、Ctrl + p(Windows/Linux);

10. 快速查看定义(Quick Definition Lookup)

    描述:你曾经是否想查看一个方法或者类的具体实现,但是不想离开当前界面? 该操作可以帮你搞定。比如查看父类方法的实现

    快捷键:Alt + Space / Cmd + Y(OS X)、Ctrl + Shift + I(Windows/Linux)

11.查看当前类的结构

ctrl+F12

12查看类的继承结构关系

ctrl+h

二.代码编码技巧

1.列选择/块选择(Column Selection).

alt+鼠标左键  批量编码

2.语句补全(Complete Statement)

    描述:这个方法将会生成缺失的代码来补全语句,常用的使用场景如下:

        在行末添加一个分号,即使光标不在行末;

        为if、while、for 语句生成圆括号和大括号;

        方法声明后,添加大括号;

    调用:Menu → Edit → Compelete Current Statement

    快捷键:Cmd + Shift + Enter(OS X)、Ctrl + Shift + Enter(Windows/Linux);

3. 删除行(Delete Line)

    描述:如果没选中,则删除光标所在行,如果选中,则会删除选中所在的所有行。

    快捷键:Cmd + Delete(OS X)、Ctrl + Y(Windows/Linux)

4.行复制(Duplicate Line)

    描述:复制当前行,并粘贴到下一行,这个操作不会影响剪贴板的内容。这个命令配合移动行快捷键非常有用。

    快捷键:Cmd + D(OS X)、Ctrl + D(Windows/Linux)

5.使用Enter和Tab进行代码补全的差别(Enter vs Tab for Code Completion)

    描述:代码补全时,可以使用Enter或Tab来进行补全操作,但是两者是有差别的。

    使用Enter时:从光标处插入补全的代码,对原来的代码不做任何操作。

    使用Tab时:从光标处插入补全的代码,并删除后面的代码,直到遇到点号、圆括号、分号或空格为止。

6.提取方法(Extract Method)

    描述:提取一段代码块,生成一个新的方法。当你发现某个方法里面过于复杂,需要将某一段代码提取成单独的方法时,该技巧是很有用的。

    调用:Menu → Refactor → Extract → Method

    快捷键:Cmd + Alt + M(OS X)、Ctrl + Alt + M(Windows/Linux);

7.动态模板(Live Templates)

setting-Editor-Live templates中的系统内置的模板,重点是AndroidComments和AndroidLog

还有自定义设置的模板,后面会有栗子。

8.上下移动行(Move Lines Up Down)

    描述:不需要复制粘贴就可以上下移动行了。

    快捷键:Alt + Shift + Up/Down;

9.移动方法(Move Methods)

    描述:这个操作和移动行操作很类似,不过该操作是应用于整个方法的,在不需要复制、粘贴的情况下,就可以将整个方法块移动到另一个方法的前面或后面。该操作的实际叫做“移动语句”,这意味着你可以移动任何类型的语句,你可以方便地调整字段或内部类的顺序。

    快捷键:Cmd + Alt + Up/Down(OS X)、Ctrl + Shift + Up/Down(Windows/Linux

10.重命名(Rename)

    描述:你可以通过该操作重命名变量、字段、方法、类、包。当然了,该操作会确保重命名对上下文有意义,不会无脑替换掉所有文件中的名字;

    快捷键:Shift + F6

11.分号/点 补全(Semicolon Dot Completion)

    描述:代码补全这个功能太棒啦!我们大概都对以下这种情况很熟悉:开始输入点什么东西,接着从IDE得到一些建议的选项,

然后通过Enter或者Tab来选择我们想要的补全代码。其实还有另外一种方法来选择补全的代码:我们可以输入一个点(.)或者一个分号(;)。

这样就会完成补全,添加所选字符。这在结束一条语句补全或者快速链式调用方法的时候特别有用。

    注意点:如果你要代码补全的方法需要参数,这些参数会被略过。

12.包裹代码(Surround With)

    描述: 该操作可以用特定代码结构包裹住选中的代码块,通常是if语句,循环,try/catch语句或者runnable语句。 如果你没有选中任何东西,该操作会包裹当前一整行。

    快捷键:Cmd + Alt + T(OS X)、Ctrl + Alt + T(Windows/Linux)

13.移除包裹代码(Unwrap Remove)

    描述:该操作会移除周围的代码,它可能是一条if语句,一个while循环,一个try/catch语句甚至是一个runnable语句。该操作恰恰和包裹代码(Surround With)相反。

    快捷键:Cmd + Shift + Delete(OS X)、Ctrl + Shift + Delete(Windows/Linux)

14.后缀补全

setting-Editor-General-Postfix Completion

这些死记吧

15.重写方法,实现接口,get和set方法实现等:

alt+insert 都可以实现

16.快速实现硬编码的字符串定义到string.xml中:

alt+enter

三.调试技巧

不用太多,Log打印和断点调试即可。

最后,给出几个自己常用的live templates模板:

单例实现之double check:

private static volatile $class$ INSTANCE = null;

private $class$(){

}

public static $class$ getInstance(){

    if (INSTANCE == null) {

        synchronized ($class$.class) {

            if (INSTANCE == null) {

                INSTANCE = new $class$();

            }

        }

    }

    return INSTANCE;

}

单例实现之静态内部类:

private $class$(){

}

private static class SingletonInstance {

    private static $class$ INSTANCE = new $class$();

}

public static $class$ getInstance(){

    return SingletonInstance.INSTANCE;

click事件实现:

public void onClick(View view) {

    switch (view.getId()) {

        case R.id.$resId$:

            $content$

            break;

        default:

            break;

    }

}

switch代码块:

switch ($content$) {

    case $value$:

        $code$

        break;

    default:

        break;

}

String对象判空:

TextUtils.isEmpty($content$)

综上几个模板的命名自己随意定义,怎么添加请自己百毒吧!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容