1. 程式人生 > >AndroidStudio 快速開發之道

AndroidStudio 快速開發之道

概述現如今開發越來越追求效率和節奏,節省出時間做更多的事情,除了開發技術上的封裝等,開發工具的使用技巧也是很重要的,今天就根據自己的經驗來給大家介紹一下Android Studio 快速開發之道。Postfix completion介紹Postfix completion 是 IntelliJ IDEA 很早就有的功能,該功能基於已經輸入的表示式和你新增的字尾來實現另一個你想要的表示式。例如在布林表示式之後加上字尾 if 就是 if 語句 。常用字尾介紹下面介紹一下個人工作中覺得比較常用的幾個字尾。cast當一個變數需要型別轉換時,你是不是經常多次回退到變數名前面,然後括號再輸入型別,現在你只需要.cast 之後瀟灑的輸入型別。 if對於 if 語句你有更好的選擇,.ifelseelse 就是 if 取反,就是那麼快field假設你的程式碼寫了很長,突然在 1000 行的時候要給一個變數賦值並且宣告為全域性變數,難道要返回去重新宣告嗎,簡直麻煩。有了 field,在哪都可以。fori簡單快速 for 迴圈,就是那麼吊forfor 迴圈第二式,增強 for 迴圈 (使用.iter 也是同樣的效果)forrfor 迴圈第三式,反向 for 迴圈 .forrnull快速判空nn/notnull快速判斷非空 .nn,與.notnull 效果一致switch.switch 通過字串列舉等型別的物件直接生成 switch 語句inst/instantsof快速進行 instanof 判斷 並進行型別轉換var快速為一個表示式生成變數par快速為一個表示式新增括號log快速 log,想輸出的內容.log 即可toast快速 toast,想輸出的內容.toast 即可部分字尾如 log,toast 需要 Android Postfix completion 外掛的支援,大家搜尋下載即可。除了以上的字尾語句,Android Studio 還有很多其它的字尾語句,由於個人覺得不是很常用,所以沒有提到,大家可以開啟 setting-Editor-General-Postfix Completion 檢視更多用法。下面貼一張 Postfix Completion 的圖Live Templates介紹讓您插入頻繁使用的或自定義的程式碼結構,快速、高效、準確地構建到您的原始碼檔案中。我們可以直接開啟 Settings/Preferences 對話方塊 選中 Editor 下的 Live Templates 進行檢視通過上圖大家可以看到 Android Studio 已經為我們提供了大量的模版。系統模版簡單認識這裡我們通過系統提供的一個模版來對 Live Templates 簡單認識一下。先看一張圖 上圖中 Android 為分組名,該分組下系統提供了許多模版。我們可以在右上角點選 + 進行新增自己的 group 或者模版Abbreviation 就是模版的縮寫,定義了縮寫之後就能直接輸入縮寫得到模版具體內容。Description 在輸入的時候會有一個附帶的描述資訊進行提示。Tempplate text 中的就是具體內容,具體內容中可以通過variable來進行變數定義,上圖中的模版定義了的name 和value兩個變數。通過右邊的 Edit variables 按鈕可以進行變數的編輯, 點選之後彈出如下 對話方塊 可以看到 name 指定了預設值 NAME,value 是一個 1000 以內的隨機數。關於變數的編輯裡面有很多細節,由於篇幅原因,不再這裡詳細討論,後續我會寫一篇部落格對 live templelates 各個功能進行詳細介紹。繼續剛才說到第一個模版,左下角有一個 change 按鈕,點選之後可以指定該模版的作用範圍。基本介紹就完畢了,看下效果系統提供的模版很多並且大多數都很有用,我就不一一列舉了,大家可以自己檢視 Live Templates 找到自己合適的使用,開始的時候可能不適應,之後,你會發現,你越來越快。自定義模版瞭解了 Live Templates 之後,我發現我經常使用 butterknife 的時候會寫 onClick,但是每次都是一樣的程式碼,這時候我就可以自定義一個模版,請看下圖:自定義了一個分組 custom,並且在該分組下定義了一個縮寫為 onclick 的模版模版內容就是一個 butterknife 註解修飾的 click 方法,並且聲明瞭一個個變數 id。點選 Edit variables 如下圖指定了 Expression 為 completeSmart(),表示該變數會智慧型的完成呼叫 ( 游標會出現在變數位置)具體效果如下: 這裡為了方便 隨便賦值為 activity 的資源 id 了。小技巧 1在使用 Live Templates 我如果正在寫程式碼,寫了半個小時,我發現此時正在寫的一段程式碼已經寫了幾次並且很可能接下來也會寫。難道我們 copy 下來再 開啟 setting 找到 Live Templates 去新增嗎? 你完全有更好的選擇!選中你的程式碼,點選選單攔 Tools->Save as Live templates 之後直接指定縮寫等引數儲存即可。或者 開啟設定 keymap,輸入過濾條件 live template,找到 Save as Live templates 設定快捷鍵這裡我設定為 cmd+shift+s就不用點選單了,選中程式碼直接 cmd+shift+sps: 由於我之前設定過快捷鍵,還以為有預設的快捷鍵,想看看預設快捷鍵寫下來,所以點了下 reset,發現這個功能沒有提供預設快捷鍵,然後最悲劇的來了,發現 reset 之後我沒有點 apply 尼瑪居然也生效了,所有我修改過的快捷鍵全沒拉。。。。。小技巧 2加入你想使用一個模版,但是忘記了它的縮寫,此時怎麼辦呢? 快速的 cmd+j,windows 電腦我不清楚,大家設定技巧 1 的時候會看到一個 insert live templates,就可以看到快捷鍵了。該功能可以提示出所有適合當前場景的模版。當然 Live Templates 的知識很有很多,比如定義變數裡的 expression 有好多,各自代表什麼意思,但是這些不是本篇文章的重點,所以就不做討論了。快捷鍵Android Studio 提供的快捷鍵功能非常強大,個人覺得只要你對快捷鍵熟悉至極,從開啟 Android Studio 那一刻,你就可以把滑鼠扔了。。。個人常用快捷鍵介紹先來一波常用功能快捷鍵效果演示,沒圖我也是不能服眾啊 (由於快捷鍵很多這裡只做部分演示),ps: 這裡的快捷鍵是基於 as 自帶的快捷鍵型別,如果你選擇了其它的快捷鍵型別 (如 eclipse),你只需要開啟設定,keymap,通過輸入過濾條件找到對應的功能檢視快捷鍵。以下格式為描述/Windows 或Linux的快捷鍵/Mac 快捷鍵介紹圖片Find action (Control + Shift + A/Command + Shift + A)查詢 as 所有動作功能(超級強大)Find next (F3/Command + G)查詢下一個 Find previous查詢上一個 Find class(Control + N/Command + O)直接通過類名過濾開啟類檔案,有了這個基本我很少用滑鼠去找類檔案了。 Duplicate current line or selection(Control + D/Command + D)快速產生一個單行或者選中行的 copy Go to implementations(Control + Alt + B/Command + Alt + B)找到當前介面的實現類,或介面方法的實現方法,在 mvp 模式裡最常用 Extract method(Control + Alt + M/Command + Option + M)為選中程式碼生產一個方法,超級智慧,甚至能識別處是否要引數和返回值,如果有多個相似程式碼,會提示是否要統一替換,吊到沒朋友。 Extract variable(Control + Alt + V/Command + Option + V)為選中表達式生成臨時變數,如果有多個地方會提示是否需要統一替換。 Extract field(Control + Alt + F/Command + Option + F)為選中表達式生成全域性變數,如果有多個地方會提示是否需要統一替換。 Next highlighted error(F2 / F2)你一定有過在一個很長程式碼檔案中找一個錯誤的時候,很麻煩,有了這個功能,游標直接移到錯誤的地方。 篇幅有限,就介紹這麼多了,其它的系統快捷鍵我以表格的形式整理下來,許多功能需要自己去嘗試才能發現它的強大。系統預設快捷鍵以表格形式列出個人覺得比較常用得系統快捷鍵,ps:這裡列出得是系統預設的快捷鍵,如果你快捷鍵型別選定為 eclipse 或者其它,你需要找到對應的描述進行檢視或者修改。普通型別description解釋Windows/LinuxMacOpen settings dialogue快速開啟設定Control + Alt + SCommand + , (comma)Open project structure dialog開啟專案結構Control + Alt + Shift + SCommand + ; (semicolon)Switch between tabs and tool windowtab 的切換Control + Alt + Shift + SCommand + ; (semicolon)追蹤和搜尋description解釋Windows/LinuxMacFind查詢Control + Alt + SCommand + , (comma)Search everything (including code and menus)查詢所有點選 shift 兩次即可搜尋點選 shift 兩次即可搜尋Find next順序向下查詢F3Command + GFind action查詢功能,超級強大,as 的所有功能可以通過該功能來查詢Control + Shift + ACommand + Shift + AFind class快速找到類並開啟檔案Control + NCommand + OFind file (instead of class)快速查詢檔案Control + Shift + NCommand + Shift + OFind in path在專案下的所有路徑查詢Control + Shift + FCommand + Shift + FFind action   Recently opened files pop-up列出最近開啟的檔案F3Control + ECommand + ERecently edited files pop-up列出最近編輯過的檔案Control + Shift + ECommand + Shift + EGo to last edit location回到最近一次編輯的位置Control + Shift + BackspaceCommand + Shift + BackspaceClose active editor tab關閉當前編輯的檔案Control + F4Command + WOpen type hierarchy開啟型別層次關係Control + HControl + HOpen method hierarchy開啟方法層次關係Control + Shift + HCommand + Shift + HOpen call hierarchy開啟呼叫層次關係Control + Alt + HControl + Option + H寫程式碼常用快捷鍵description解釋Windows/LinuxMacGenerate code (getters, setters, constructors, hashCode/equals, toString, new file, new class)快速生成各種方法Alt + InsertCommand + NOverride methods顯示所有可以重寫的方法Control + OControl + OImplement methods顯示所有可以實現的方法Control + IControl + ISurround with (if…else / try…catch / etc.)快速為語句生成 if else,try catch for 迴圈等Control + Alt + TCommand + Option + TDelete line at caret刪除游標所在行Control + YCommand + BackspaceDuplicate current line or selection快速產生新的當前行,或者新的多行程式碼Control + DCommand + DQuick documentation lookup快速檢視簡要文件Control + PCommand + PGo to declaration (directly)找到變數或方法宣告處Control + B or Control + ClickCommand + B or Command + ClickGo to implementations找到一個介面的實現類,介面方法的是實現處Control + Alt + BCommand + Alt + BGo to super-method/super-class找到父類或父類方法Control + UCommand + UToggle project tool window visibility顯示或隱藏 as 左邊的專案視窗Alt + 1Command + 1Comment/uncomment with line comment快速單行註釋或去除註釋Control + /Command + /Comment/uncomment with block comment多行注視或除去多行註釋Command + Shift + /Command + Shift + /Project quick fix (show intention actions and quick fixes)給出當前問題的多種解決方法(該方法非常常用)Alt + EnterOption + EnterReformat code格式化程式碼Control + Alt + LCommand + Option + LNext/previous highlighted error找到下一個/上一個錯誤F2 / Shift + F2F2 / Shift + F2編譯執行description解釋Windows/LinuxMacBuild編譯Control + F9Command + F9Build and run編譯Shift + F10Control + R除錯description解釋Windows/LinuxMacDebug Shift + F9Shift + F9Step over F8F8Step into F7F7Smart step into Shift + F7Shift + F7Resume program F9Command + Option + R修改description解釋Windows/LinuxMacSafe delete安全刪除Alt + DeleteCommand + DeleteExtract method提取方法Control + Alt + MCommand + Option + MExtract method提取方法Control + Alt + VCommand + Option + VExtract variable提取變數Control + Alt + VCommand + Option + VExtract field提取全域性變數Control + Alt + FCommand + Option + FExtract constant提取常量Control + Alt + CCommand + Option + CExtract parameter提取引數Control + Alt + PCommand + Option + P版本控制/本地歷史description解釋Windows/LinuxMacCommit project to VCS Control + KCommand + KUpdate project from VCS Control + TCommand + TView recent changes檢視最近修改Alt + Shift + COption + Shift + COpen VCS popup開啟版本控制設定視窗Alt + ` (backquote)Control + V擴充套件自定義快捷鍵看到這裡相信大家對快捷鍵有了更深的認識,我們可以通過簡單的幾個鍵就實現強大的功能,但是有時候許多系統提供的快捷鍵也許和你本身系統的快捷鍵衝突,或者說某些強大的功能 as 並沒有提供你快捷鍵,此時就涉及到快捷鍵的自定義(修改或者新增)。比如上面提到的 找到並高亮錯誤程式碼 as 提供的是 F2 鍵,但是在 Mac 上是功能鍵並且我也想保留,我就修改為了 command+shift+2關於快捷鍵的自定義我就不細提了,大家百度一下有很多文章。發現更多功能keyMap 裡列出的功能眾多,篇幅和精力有限,不能一一列出, 各位有時間的時候可以開啟設定 ->KeyMap,去看裡面的快捷鍵,不確定的就自己親自按了試一下,你會發現原來可以那麼方便。外掛這裡推薦幾個個人使用中覺得的確很好的外掛, 這些外掛的介紹文章都很多,我就不詳細介紹了。Android ButterKnife Zelezny能夠方便快速初始化,免去了 findById 等繁瑣的操作。 Gsonformat可根據 json 資料快速生成Java實體類作。 Android Material Design Icon Generator快速生成 Material Design 圖示,對於在小公司,設計要求不那麼嚴格的同學可以方便生成合適的圖示。Android Wifi ADB是不是很討厭除錯總是要把手機放在電腦旁,有了這個外掛你可以不用挨著電腦除錯了。由於時間關係,外掛的圖沒有製作,上面兩張圖的地址出處:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/1009/3557.htmlTip of the day不知道大家有沒有注意,每天當你第一次開啟 Android Studio 的時候,總是先彈出一個對話方塊,相信大多數同學都是果斷關閉然後開始今天的工作,被猜中的給我點贊!hahaTip of the day 會推薦給你一些使用 Android Studio 的技巧,快捷鍵等等功能,所以希望大家能夠花一分鐘看一看,每天一個積累,半年一年之後你就是開發效率之王了!你可以隨時選單選擇 help->tip of the day 進行檢視 結語

作者:zml2015

連結:https://hacpai.com/article/1488000012289

來源:黑客派

著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。