Android Studio for Experts:Edit
冒死總結!有些地方不知道怎么描述,自己動手感受一番吧。
我只總結了前面五分多鐘講的快捷方式。后面的高級技巧我還在學習中,坑慢慢填。
已將 Tor Norbye 演講的編輯技巧補充完。
昨天@陳啟超同學發了 Android Studio for Experts (Android Dev Summit 2015) 的視頻,我也跟著學習了一下。這個視頻講的非常好!做點小結,分享交流。
completion
-
使用 Tab 補全,會自動編輯光標之后的字符串,如下,你在光標處鍵入 c 然后選擇contentEquals然后回車,magic!
c.png
-
使用 ctrl + shift + space 智能補全,比如下圖,按下組合鍵,magic!可以按兩次哦!
c2.png
-
補充一個,嘗試在編輯器中輸入:new Bitmap().var
selection
-
ctrl+ w 選中,繼續操作會擴大選中范圍,相反的操作是 ctrl + shift + w
-
選中后可以使用 Extra 快捷鍵重構為變量、方法等,這個可以在 Refactor -> Extra 下看到。
ctrl+ alt+ v:變量
ctrl+ alt+ c:常量
ctrl+ alt+ f:域值
ctrl+ alt+ p:參數
ctrl+ alt+ m:方法
-
這里我有一個快捷鍵沒有聽出來,就是從構造函數提取 parameters 為 fields,
public static class Init { public Init(String first, boolean second, int third) { } }
LiveTemplates
這個內容極度豐富,我以前發過微博,可以在 Setting -> Editor -> Live Templates 下查看。舉幾個例子:
-
fori和foreach,在需要使用for循環時,嘗試輸入這兩種for試試;
-
你還可以在數據集合變量后輸入.for,例如list.for,這時候你看一下補全,會列出三種for循環形式讓你選擇;
-
logt,logd,logm,在方法外輸入logt,在方法內輸入logd試試;
-
另外還有fbc,gone,iter等等,感興趣的話可以在 Setting -> Editor -> Live Templates 下看看。
接下來可以說是牛哄哄的技巧了,同時也說明 Android Studio 真是強大!
Replace Structurally
這里就不得不貼上很多代碼了。比如以下資源文件,現在你想去掉所有的translation_description,技巧是使用 雙擊 shift 或者 ctrl + shift + a 調出搜索框然后搜索并選擇 replace structurally ,編輯規則,選擇 find,然后就可以十分便捷的批量修改了。
<resources> <string name="a_fragment" translation_description="false">Hello blank fragment</string> <string name="s_fragment" translation_description="false">Hello blank fragment</string> <string name="d_fragment" translation_description="false">Hello blank fragment</string> <string name="f_fragment" translation_description="false">Hello blank fragment</string> </resources>
rs.png
另外你還可以把這個加入設置中,由編輯器自動檢查,不符合規則的代碼就會變黃,alt + enter 組合鍵進行修改。
ssi.png
這個方法對 java 源碼同樣適用,只需要修改 file type。
Search Structurally
這個和 Replace Structurally 大同小異,不再贅述,請自行嘗試一下吧,^_^。
Designtime Attributes
在寫好布局文件后,我們可能想要直接看一下 preview 效果,但是不想在編譯時還預設這些屬性和值,這個時候可以使用 tools 這個強大的工具。
首先我們要在布局文件中聲明xmlns:tools="http://schemas.android.com/tools",放在最外層的 layout 就好。
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" ...
使用起來跟xmlns:android沒有什么差別。
<TextView android:id="@+id/tv" android:text="Hello World!" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:visibility="visible" tools:text="tools" />
這里面比較逆天的是tools:listitem,看下面這段代碼!
<GridView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" tools:numColumns="4" tools:listitem="@android:layout/simple_list_item_2" />
猜到了嗎?它可以直接讓我們 preview GridView的效果!
tools.png
如果你夠細心的話一定會發現異常:那就是那個ToolBar 和 FAB 哪來的?!因為有tools:showIn。這個屬性聲明在最頂層的 layout,值是 include 了本布局的一個父布局,它使得預覽本布局時同時會渲染該父布局。
更多的 tools attributes 可以訪問官方文檔 Android Tools Project Site: Tools Attributes
Private Resources
Android studio 默認 library 的所有 resource 為 public,如果想保護某些 resources 不被外部訪問,可以創建 res/values/public.xml,因為 public 是關鍵詞,所以需要用 new file 的方式創建。至少要添加一行,未添加的則視為 private。
<resources> <public name="mylib_app_name" type="string"/> </resources>
參考: Public and Private Resources
另外,如果在 library 的 build.gradle 中添加resourcePrefix,則所有資源必須以此 prefix 開頭,否則會報錯。
android { ... buildTypes { ... } resourcePrefix 'my_prefix_' }
Resource Shrinking
這一段講解了一個減少未使用的資源文件的技巧,可以參考官方文檔: Android Tools Project Site: Resource Shrinking ,我就不做二次消化了。
原文 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1126/3724.