<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 第三章:使用 Android Studio 編程 > 譯者:[keyoo](http://ask.android-studio.org/?/people/keyoo) > 來源:[Learn Android Studio 漢化教程 第三章:使用 Android Studio 編程](http://ask.android-studio.org/?/question/802) 本章包含如何在Android Studio中書寫或生成代碼。 Android Studio 使用面向對象編程的思想來生成極其相關的和格式規范的代碼。本章的特色體現在重載方法,Java塊的包圍語句,使用模板插入代碼,自動補全,注釋代碼和移動代碼,如果你讀這本書的目標是要精通Android Studio,那么你需要密切關注這章,因為所描述的工具和技術將在你的編程效率發揮最大的作用。 讓我們開始吧,若是在第一章創建的 `HelloWorld` 應用程序還沒有打開,請前往打開。 代碼折疊是一種在編輯器中保存屏幕實際使用空間的方式,代碼折疊允許你去隱藏特定代碼塊以便于于你可以充分地集中注意力在你感興趣的代碼塊上,如果`MainActivity.java` 沒有打開,按`Ctrl+N | Cmd+O` 并輸入`Main`,按`Enter`鍵打開`MainActivity.java` 的類,如圖3-1 ![](https://box.kancloud.cn/2016-08-06_57a5d3bdbf604.jpg) 圖3-1 使用輸入類名對話框來打開MainActivity.java 如果行號默認沒有顯示,導航到`Help ? Find`,輸入`show line numbers`并且勾選Show Line Numbers Active Editor這一項,如圖3-2. ![](https://box.kancloud.cn/2016-08-06_57a5d3bdd941a.jpg) 圖3-2 使用輸入Action或者選項名對話框來顯示行號 正如你在`MainActivity.java`中所觀察到的行號,你將會注意到一些奇怪的情況:行號不是連續的,在圖3-3中,行號從1,2,3開始,然后就跳躍到7,8,9了,仔細觀察圖3-3的第3行,你會發現這里在`import`語句的左邊有一個包含了`+`的方塊,同時隨后是省略號,如果你仔細觀察你的代碼,你也會注意到這個省略號用淺綠色高亮顯示,這些可見的元素提示你Android Studio 正隱藏被折疊的代碼塊 ![](https://box.kancloud.cn/2016-08-06_57a5d3be01950.jpg) 圖3-3. 在import 語句的折疊代碼塊 位于左邊留空處是折疊邊框形成的細虛線,同時介于灰色留空與白色編輯器之間,折疊邊框包含了三個圖標:位于小方塊的內部`+`號(正如圖3-3的第3行)和有著水平線在里面的上下箭頭,向下的將頭表名是一個可折疊代碼塊的開始部分,同時向上箭頭指示它的結束部分,上文提到的`+`號,表明某個代碼塊已經被折疊了,點擊這些圖標中的任意一個將會切換對應代碼塊為折疊還是打開狀態,表3-1包含了代碼折疊操作的描述和快捷鍵。 ![](https://box.kancloud.cn/2016-08-06_57a5d3be1d3d5.jpg) 把你的光標放在 `MainActivity.java` 的`onCreate()` 方法中,現在長按`Ctrl+Period | Cmd+Period `來切換他的代碼塊展開或折疊,此外,也可以用快捷鍵`Ctrl+數字鍵"+"`或者`Cmd+數字鍵"+"`展開代碼、也可以用快捷鍵`Ctrl+數字鍵"-"`或者`Cmd+數字鍵"-"`折疊代碼。 總之通過點擊在折疊邊框內的代碼折疊圖標折疊/展開你的代碼塊,記住,折疊單個塊,多個塊,或一個文件的所有塊,是為了節省屏幕空間從你的視線中刪除了,然而當你bulid的時候,編譯器仍然會編譯他們。類似的,折疊一個包含了問題的、有錯誤的代碼的塊將不會從標示條刪除任何警告或者出錯。你若要改變代碼折疊的選項,請選擇通過菜單選線進入`Settings ? Editor ? Code Folding`. ## 使用代碼補全 現代大多數編譯器都會提供一些代碼補全的格式,Android Studio也不例外,Android Studio樂意幫助,就算你不主動去尋求幫助,實際上,Android Studio將為你各種各樣的的默認提醒來隨著你的輸入完成你的代碼。這些Android Studio自動生成的默認提醒列表可能是不完美的,但是這些提醒是根據最佳實踐得到來設置的,并且它們通常遵循很好的命名規則。Android Studio可以很好地理解Android SDK和java程序設計語言;事實上,它可能知道那些問題,遠遠超過你所知道的,如果你以謹慎和熱忱的心態學習這個工具的使用,你最終將會看起來想一個搖滾歌手,不管你的之前的編程經驗是什么。 這個代碼補全的特點是對上下文敏感的,在此條件下,這些補全根據你的光標所在的范圍來提供給你不同的提醒,比如,你正在鍵入一個類范圍內的代碼,代碼補全的提醒將是不同于你在方法范圍內鍵入的代碼,即使你選擇不接受這個代碼補全提醒,基于上述理由,你也需要注意他們。 表3-2列出了4種在Android Studio中的代碼補全: - 一旦你鍵入代碼,默認的代碼補全功能會自動啟作用 - 基本的代碼補全不僅扮演著類似于默認代碼補全的功能,還在提醒列表中的當前選項的旁邊展示了一個Javadoc的窗口 - 精妙的代碼補全同時扮演者Javadoc的功能之外,還有生成一個更敏感的相關的提醒列表 - 循環地擴展單詞環,允許你選擇在已用過的源代碼單詞 ![](https://box.kancloud.cn/2016-08-06_57a5d3be33b23.jpg) 讓我們開始編碼來演示代碼補全是怎么工作的,在包`com.apress.gerber.helloworld`右鍵(Mac中是`Ctrl`-單擊),并選擇 `New ? Java Class` 來創建新的類對話框,如圖3-4所示,吧這個類命名 `Sandbox` 并點擊OK ![](https://box.kancloud.cn/2016-08-06_57a5d3be55c44.jpg) 創建新的類對話框 `Sandox.java的Sandbox` 類的大括號內部,定義一個私有變量,如圖3-5,一個代碼補全的菜單出現了,并列出了可能的選擇幫你完成你的嗲嗎,使用上下箭頭鍵來導航代碼補全的菜單,使用下鍵選擇`List<E>`這個選項并回車。 ![](https://box.kancloud.cn/2016-08-06_57a5d3be6d37c.jpg) 圖3-5. 當你開始輸入的時候出現的一個代碼補全的菜單 Android Studio的默認行為是當你開始鍵入時,出現代碼補全提醒列表,你不需要激活任何快捷鍵來調用這個默認的代碼補全——他是自動出現的。你應該現在有一行私有 List的代碼,如圖3-6,直接跟隨這個單詞列表,鍵入左尖括號用以定義在java中的泛型,注意Android Studio關閉了括號語句用封閉的右尖括號,并把你的光標置于括號中 ![](https://box.kancloud.cn/2016-08-06_57a5d3be8ca03.jpg) 圖3-6. 字符串作為泛型的列表的代碼補全 在尖括號的`Str`類型,按下`Ctrl+Space`調用基本代碼補全功能。你將會注意到一個`String`的Javadoc窗口的文檔在提醒列表中出現當前選中項(`String`) ,滾動 Javadoc 窗口可以看到對`String`的Javadoc文檔說明,點擊向上箭頭,Javadoc窗口將展示出詳細的`String` API文檔在你的默認瀏覽器,返回 Android Studio 并選擇`String `作為泛型類,你將會使用的,按`Enter` 鍵定義出`List<String>`。 Android Studio的特色之一是它會為你提醒變量名,直接鍵入一個空格后,私有 `List<String>`通過按Ctr+空格出現基本的基本代碼補全,Android Studio生成一個提示列表,但是上述變量名都不足于描述,因此只能鍵入`mGreetings`。小寫字母`m` 代表成員(即域),把類的成員名用`m`作為前綴在Android中是一種命名約定。同樣的,靜態類成員用小寫字母`s`作為前綴,你不需要遵循這種命名約定,但是你的代碼會更容易被別人閱讀如果你遵循了,記住局部變量(方法作用域內)不允許用`m`和`s`作為前綴約定,修改你的代碼行為`List<String> mGreetings = new`。按 `Ctrl+Shift+Space`調用智能代碼補全,選擇`ArrayList<>()`完成語句,還包含了終止的分號,如圖3-7,類似于基本代碼補全,在生成提醒列表的時候,還比默認的和基本代碼補全范圍增多了,比如,當使用智能代碼補全在賦值操作的右邊,提醒列表通常包含了相關的工廠方法。 注:如果你的在 Android Studio 的JDK版本是7或者更高,通過代碼補全的生成的代碼可能是用菱形標記,比如,在使用泛型的賦值語句來定義的右邊,`ArrayList<String>` 可能出現為`ArrayList<>`。 ![](https://box.kancloud.cn/2016-08-06_57a5d3bea412a.jpg) 圖3-7 智能代碼補全 循環擴展詞是一個花哨的名字,但是它實際上非常簡單。調用循環擴展詞只需按下`Alt`鍵,同時按住`/`鍵幾秒鐘,單詞集合里提供你同樣的單詞,他們都曾出現在你的文檔里,由于你的循環遍歷這些單詞,注意黃色高亮部分,現在調用循環擴展詞,長按`Alt + Shift +"/"`,注意到提供并高亮的單詞現在向下遠離你的光標,而非向上遠離。 ## 注釋代碼 如果你已經完成了所有的編碼工作,你了解到,有些代碼行是一些注釋,將會被編譯器忽略,但是包含了信息或者元數據,數據是非常重要的,對于編碼者和協同編碼者,注釋可能是行注釋,以`//`開始,也可能是塊注釋,以`/`開始,以`/`結束,從主菜單可以看出,你可以激活注釋,只需選擇`Code ? Comment`,然而,最好的方法是通過快捷鍵來截獲,如表3-3所示: ![](https://box.kancloud.cn/2016-08-06_57a5d3beb948f.jpg) 類型重構初始化被構造,并放在`mGreetings` 聲明的上面,`Ctrl+/ | Cmd+/ `把其轉化為注釋,如圖3-7,在開啟和關閉注釋切換實驗,只需使用快捷鍵`Ctrl+/ | Cmd+/`. ## 使用代碼生成 恰當的使用代碼生成功能,這一特色將為你節約大量的時間,代碼生成是生成各種方法的的強大功能,包括了構造,`getters`, `setters`, `equals()`,`hashCode()`, `toString()`,方法等等。在你使用代碼生成之前,確認Android Studio 是配置好了,可以忽略成員名稱的前綴,如m和s,點擊`File ? Settings ? Code Style ? Java ? Code Generation`將得到設置對話框,將會出現代碼生成的標簽頁,如果域和靜態域文本框不包含`m`和`s`,則鍵入他們并點擊”應用“和”確定“,如圖3-8. ![](https://box.kancloud.cn/2016-08-06_57a5d3bed061e.jpg) 圖3-8 加入`m`和`s`到代碼生成標簽頁的域和靜態域 ## 構造器 把你的光標放在`Sandbox.java`的類范圍中。為了在Android Studio生成一個構造器,按`Alt+Insert | Cmd+N `并選擇 `Constructor`,那么選擇的域被構造對話框初始化,如圖3-9,選擇類成員作為參數。我們非參數構造器,因此點擊None這個按鈕。在Java中,是很常見的,就是重載構造器,通過不同類型的參數和不同數量的參數,比如,你可以調用這個對話框來生成一個帶`List<String>`參數的構造器,并且為成員變量`mGreetings`賦值。 ![](https://box.kancloud.cn/2016-08-06_57a5d3beede96.jpg) 通過構造對話框來選擇要初始化的域。 ## Getters/Setters Java類通常是封裝好的,這意味著類成員通常聲明為私有的,并且訪問這些成員的公共接口是通過公有訪問器(`getter`)和公有修改器(`setter`)方法愛提供的。在`Sandbox.java`類域范圍內點擊你的鼠標。并且按`Alt+insert`( `Cmd + N`)。你會注意到有一個選項是`Getter`,一個為`Setter`,還有`Getter`和`Setter`的組合。`Getter`和`setter` 方法一般都是成對出現的,除非你有一個很好的理由要省略其中一個或著另一個,否則最好是生成后面的組合選項。從列表中選擇Getter and Setter, 如圖3-10所示。在隨后的選擇字段生成`getter`和`setter`對話框中,從列表中選擇`mGreetings:List<String>`列表并點擊OK。你的類現在為變量`mGreeting`有了`getter`和`setter`,如圖3-11。請注意,生成的代碼忽略了`m`前綴,在生成方法名稱的時候,因為你在之前的設置中把`m`和`s`設置為了前綴。 ![](https://box.kancloud.cn/2016-08-06_57a5d3bf165a9.jpg) 生成訪問器和修改器 ![](https://box.kancloud.cn/2016-08-06_57a5d3bf2e8d2.jpg) 生成訪問器和修改器方法 ## 方法重載 代碼生成是理解類繼承結構的,所以你可以覆蓋包含在任何父類或接口實現的方法。`Sandbox.java `是一個簡單的普通java對象(POJO)。現在你修改`Sandbox`類來繼承`RectShape`。當你輸入繼承`RectShape`時,這個詞`RectShape`可能以紅色突出顯示。如果適合你需要的情景,按`Alt + Enter`來導入`RectShape`類,如圖3-12所示 ![](https://box.kancloud.cn/2016-08-06_57a5d3bf476ae.jpg) 繼承超類 如果你通過按`Ctrl+H`調用了層次結構視圖,您將看到帶有`RectShape`的`Sandbox`的類層次結構,`Shape`,和`Object`作為它的祖先,可以通過觀察圖3-13,你可以明白。現在按`Alt +Insert | Cmd + N`并選擇覆蓋方法。讓我們重寫`Shape`的`hasAlpha()`方法,如圖3 - 14所示。自java 5 版本開始的約定:要用`@Override`來注解想覆蓋的方法,我們選中`@Override`復選框并插入。`@Override`注解告訴編譯器來驗證方法的名字和簽名,以確保該方法事實上已被覆蓋。修改`hasAlpha()`的返回值為`true`。 ![](https://box.kancloud.cn/2016-08-06_57a5d3bf5c759.jpg) 在RectShape中選擇要覆蓋/實現的方法 ![](https://box.kancloud.cn/2016-08-06_57a5d3bf78838.jpg) 修改`hasAlpha( )`方法 ## `toString( )`方法 Android Studio 可以為你生成`toString()`方法。讓我們為`Sandbox`創建一個`toString()`方法,同時也包括`mGreetings`成員。按`Alt +Insert| Cmd + N`并選擇`toString()`。選擇你的唯一成員——`mGreetings`,并單擊OK。Android Studio生成一個返回字符串,如`“Sandbox{“+”mGreetings = " + mGreetings +‘}’`,如圖3-15。如果在類中有多個成員,可選擇他們,他們也會被附加到這個方法的返回字符串。當然`toString()`方法生成的代碼并不是一成不變的,這個方法是可以改變為任何你想要的,只要它返回是一個字符串。 ![](https://box.kancloud.cn/2016-08-06_57a5d3bfbf572.jpg) 圖3-15 生成`toString()`方法 ## 委托方法 Android Studio知道你的類成員,從而允許您從一個代理委托行為方法中定義類方法的類成員。這聽起來很復雜,但它很容易。為了給你展示委托方法的選擇是如何工作的,讓我們轉到代碼中來看。在`Sandbox.java`,把你的光標放在類范圍內。按`Alt +Insert | Cmd + N`,然后選擇 Delegate Methods。選擇`mGreetings:List<String>`并按下OK。列表接口有很多方法,你都可以委托行為。為簡單起見,選擇添加`(object:E):boolean`,如圖3-16。如果你想委托多個方法,在選擇這些方法的時候,按住`Ctrl`鍵(`Cmd`鍵在Mac),單擊OK。 ![](https://box.kancloud.cn/2016-08-06_57a5d3bfd3e95.jpg) 選擇要生成委托的方法 在`Sandbox.java`中生成的`add()`方法現在是一個代理,代表`mGreetings`成員行為的`add()`方法。如圖3-17所示。注意到`add()`方法的參數是定義為一個`String`來匹配`mGreetings`的泛型定義,`List<String>`。委托方法并不覆蓋方法,所以您可以隨意重命名你的代理方法,但這個名字`add()`很有意義,所以盡可能保留這個名字。 ![](https://box.kancloud.cn/2016-08-06_57a5d3bfeba51.jpg) 生成 `add( )`方法 ## 插入動態模板 Android Studio有很多模板,允許您將預定義的代碼直接插入到你的源文件中。在許多ide,生成的代碼只是從模板中粘貼,而從來不考慮作用域;但是Android Studion的模板是對作用域敏感的,也可以集成變量數據。在你開始使用Android Studion的動態模板之前,讓我們探索動態模板和自定義模板。導航到`File ? Settings ? Live Templates`。選擇普通模板組。現在在右上角單擊綠色加號按鈕并選擇住模板。如圖3-18,填充好縮寫、描述和模板文本字段。在這個模板可以應用之前,您必須單擊Define按鈕,這看起來像一個藍色的超文本鏈接,位于窗口的底部。現在選擇Java和選擇所有范圍(語句,表達式,聲明等等)。單擊Apply。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c0182ab.jpg) 圖3-18 創建一個名為`cb`的動態模板(注釋塊) 您剛剛創建一個稱為`cb`的自定義動態模板,將在任何Java源文件和任何范圍中編碼時都是可用的。如圖3-18,紅色的字`$SELECTION$` 是一個變量。很快你會看到這個變量在起作用。動態模板的選項如表3 - 4所示 ![](https://box.kancloud.cn/2016-08-06_57a5d3c02ea72.jpg) 在離開動態模板的設置頁面之前,瀏覽一下現有的動態模板,簡稱為`psfs`,在簡單模板組中。單擊psfs來查看其內容。你會注意到這個模板最終生成一個公共靜態的字符串常量,它僅在Java和Groovy聲明范圍可用。單擊OK返回Editor。在`Sandbox`的聲明部分,在`mGreetings`的定義下面,鍵入`psfs`然后按`Ctrl + J | Cmd + J`調用動態模板,然后按Enter鍵。給這個常數一個名稱來完成這個聲明并賦值,如 `public static final String HELLO = “Hello Sandbox”;`。 注意:在Java中,常量的命名約定是全部大寫。在構造函數,輸入`CONSTRUCTORS`這個單詞。現在這個詞轉換成一個注釋塊好引起其他程序員的注意。選擇整個詞,`CONSTRUCTOR`,然后按`Ctrl + Alt + J | Cmd + Alt + J`彈出動態住模板。從動態模板列表中選擇`cb`和按`Enter`鍵,如圖3-19。你即可應用在前面創建的動態模板 ![](https://box.kancloud.cn/2016-08-06_57a5d3c045465.jpg) 應用動態模板稱為`cb`(注釋塊) ## Moving Your Code Android Studio 可以感知代碼塊結束,所以按行或者代碼塊移動都是很容易和直觀的。移動語句和移動行之間的差別是:移動語句代表著考慮界限和范圍,而行不考慮。如果你選擇有著Move Statement的代碼語句來移動,該語句將保留它的塊的邊界范圍。如果你移動相同的有著Move Line的語句,Android Studio將語句作為一個簡單的行文本,并將它移動到任何你想要到的地方。 你也可以移動整個代碼塊。 有了Move Statement,所有你需要做的是把光標放在你想移動的塊的開始行(花括號的),按`Ctrl + Shift + Down | Cmd + Shift +Down` 或者`Ctrl + Shift + Up| Cmd + Shift + Up`,在考慮其他的邊界塊和保持封閉的邊界范圍內的情況下,整個塊將集體移動。Move Line 不能識別范圍或界限,但你仍然可以移動多行,通過 `Alt + Shift + Up | Alt + Shift +Down`(分別在PC和Mac中)實現Move Line Up or Move Line Down 操作。 要理解 Android Studio的移動操作,最好就是實踐一下。首先讓我們在add()方法中創建一個語句,隨后直接返回`mGreetings.add(object)`,按回車鍵并開始一個新行并鍵入`soutm`。然后按`Ctrl + J | Cmd + J`調用動態模板,會產生`System.out.println(“Sandbox. add");`。您可能已經注意到,你的新行代碼將不會達到,因為返回語句在其上面,如圖3-20所示。用Move Statement Up移動這個語句,同時按住`Ctrl | Cmd`和`Shift`,多次按向上箭頭鍵。Android Studio 重新放置這個語句,但是不讓你把這個語句移到一個可能沒有任何意義的范圍。再次嘗試此操作 Move Line (`Alt + Shift +Up`),觀察其行為。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c06436b.jpg) Move Statement 和 Move Line 讓我們嘗試一下另一個例子來演示移動Move Statement的強大:把構造函數移動到類的底部。確保`Sandbox()`聲明和上面的注釋塊之間沒有空換行。現在,把你的光標在聲明的`Sandbox()`,并且按住`Ctrl | Cmd`和`Shift`鍵,同時按下箭頭鍵來調用Move Statement Down,重復直到你的構造函數是類的最后一個方法。注意,整個塊,包括注釋,都移動到類的底部了,避免了其他方法。移動代碼操作和鍵盤快捷鍵表如3 - 5所示。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c07ce8d.jpg) ## 樣式代碼 代碼風格規范在不斷發展。沒有固定的規則,你應該在你的方法之后放置空格的數量,還是左括號應該出現在同一行作為方法簽名或略低于它。組織傾向于定義自己的代碼風格,但每個程序員的代碼風格也各不相同,你也可能有你習慣的代碼風格。幸運的是,Android Studio很簡單就能樣式化和組織你的代碼。在開始樣式化代碼之前,讓我們檢查一下代碼風格的設置。選擇`File ? Settings ? Code Style`彈出設置對話框,如圖3 - 21所示。Java和XML是我們在Android中最感興趣的語言。在左窗格中切換打開代碼風格選項,選擇Java,并檢查在設置窗口的每個選項卡。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c0959ad.jpg) 圖3-21 代碼風格?Java selected并顯示包裝和括號選項卡的設置對話框 通過在中間的面板的各種tab頁的這些設置選擇/取消選擇復選框的實驗,注意類在右窗格中發生相應變化,滿足你的風格。點擊Manage按鈕在頂部定義一個新的架構。現在點擊另存為,給您的架構起一個名字,比如android,并單擊OK。如果你做出進一步更改保存方案,單擊Apply按鈕應用它們。當你用`Ctrl + Alt + L | Cmd + Alt + L`格式化你的代碼,在代碼中設置你選擇的風格標簽將被應用。代碼組織的選項如表3 - 6所示。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c0ae9aa.jpg) ## 自動縮進行 自動縮進行有助于保持正常的行縮進代碼。在Java中管理標簽和縮進規則,通過`File ? Settings ? Code Style ? Java ? Tabs and Indents`。自動縮進線應用于當前行,或如果您有多個行選中,則是選中的所有行。 `Sandbox.java`,選擇整個方法的代碼塊,按`Tab`鍵。塊應該向右移動一個選項卡的距離。現在把光標放在第一行的塊,按`Ctrl + Alt +I`(在PC和Mac中)。你會注意到自動縮進復位這條線到適當的縮進位置,盡管方法塊的其余部分仍不受影響。現在選擇的所有代碼的類按`Ctrl + I| Cmd +A`,并且按`Ctrl + Alt +I`。這次,適當的縮進將會應用于整個文件。 ## 重新整理代碼 Arrangement管理代碼中元素的順序。例如,大多數人喜歡保持在類的頂部聲明類成員,其次是構造函數,其次是`getter`和`setter`,等等。通過`File ? Settings ? Code Style ? Java ? Arrangement`,您可以編輯Arrangement的安排設置選項卡。在前面的部分中,您將構造函數的類。這不是通常他們在的地方。從主菜單 `Code ? Rearrange`。你會注意到構造函數已經搬回其預期的位置——聲明部分的下面。Rearrange Code按照 Arrangement 的設置執行這種重排操作。 ## 代碼重新格式化 重新格式化代碼是在代碼樣式化中最強大的功能,因為它給了你選擇應用的所有代碼風格選項中定義的代碼風格設置。正如您已經看到的,代碼風格設置可以通過從主菜單中訪問——`File ? Settings ? Code Style`。此外,重新格式化代碼允許您重新格式化當前選擇的文件,或相同類型的每個文件和目錄。此外,重新格式化代碼允許您鏈接重新排列條目(這將重新排列代碼的Java文件),并優化導入到命令,如圖3-22。按`Ctrl + Alt + L | cmd + Alt + L`,嘗試重新格式化`Sandbox.java`。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c0c82b0.jpg) 圖3-2 包含重新整理條目選擇的重新格式化代碼對話框 ## 環繞 環繞(`Ctrl + Alt + T | Cmd + Alt + T`)是一個在周圍發現功能的超集,環繞動態模板(`Ctrl + Alt + J | Cmd + Alt + J`)。然而,環繞還包括選項來選擇與Java語句或語句塊周圍如`if / else`,`try / catch`等等。雖然在你的`Sandbox `類中,簡單的代碼不可能產生任何受控異常,周圍的語句可能拋出異常的`try / catch`塊的周圍是最好的應用,這可能是為什么鍵盤快捷鍵`Ctrl + Alt + T | Cmd + Alt + T`包括一個`T`。環繞的操作如表3 - 7所示。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c0ee39d.jpg) 在`Sandbox.java`的`add()`方法中,您希望確保沒有重復的。讓我們用一個`if / else`塊圍繞 `return mGreetings.add(Object);` 如圖3-23。選擇整行,按`Ctrl + Alt + T | Cmd + Alt + T`激活周圍。現在從菜單中選擇`if / else`。在`if`的括號里鍵入`!mGreetings. contains(object) `,在`else`塊返回`false;`。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c112910.jpg) 圖3-23 用Surround With包裝和打開代碼塊 假如你的業務規則已經改變,你不再關心`mGreetings`重復的條目了。使用Unwrap/Remove刪除剛才創建的`if / else`塊。把你的光標在`return mGreetings.add(object);`語句的任何位置,按`Ctrl + Shift +Delete| Cmd + Shift +Delete`,并選擇打開。該方法現在看起來應該像之前你修改它的那樣。 環繞的另一個偉大的應用是遍歷集合。在前面的小節中自動生成`toString()`方法。現在改變這種方法遍歷`mGreetings`集合。刪除`toString()`方法的返回語句,確保`toString()`方法的主體是空的。現在鍵入`mGreetings`,然后按`Ctrl + Alt + T | Cmd + Alt + T`。從列表中選擇迭代Iterable,或者按`I`鍵。再次按下`Enter`接受`greeting `作為單個元素的名稱。生成的代碼是一個`for - each`循環。注意到Android Studio明白`mGreetings`包含字符串,而且它也產生一個局部變量叫做`greeting` ——`mGreetings`缺少 `m`的單數形式。進一步修改`add()`方法,如圖3-24。 ![](https://box.kancloud.cn/2016-08-06_57a5d3c128bca.jpg) ## 小結 本章涵蓋了Android Studio最重要的代碼生成功能。我們鼓勵您返回`File ? Settings ? Code Style ? Java and File ? Settings ? Code Style ?`,并花幾分鐘探索各種設置。Android Studio為編碼提供了很多快捷鍵,但你不必記得。如果你會不知所措,你可以使用本書作為參考,或者導航到Code菜單和探索其菜單項和子菜單作為參考。 勘誤感謝:Sohnyi ,zhin
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看