android studio模版功能簡介

星星笑語發表於2019-03-04

序言

在使用android studio編寫程式碼的時候,有一些模版功能能夠增加開發效率,例如,當你輸入logd 的時候,會出現如下圖選項:

示例圖片

然後選擇這一項按下enter鍵,就會自動出現如下程式碼:

Log.d(TAG, "onCreate: ");
複製程式碼

並且游標定位在冒號後面,這樣就能方便的增加日誌資訊,下面來介紹一下該功能。

新增自己的模版

剛才的日誌輸出後的TAG沒有定義,現在來建立一個TAG的模版。

進入android studio的設定介面後,然後開啟如下地方:

android studio模版功能簡介

然後點選皮膚右上方的家好店,就可以分別建立模版及模版組(模版指logd,模版組指AndroidLog),先選擇user組,然後選擇建立模版,在Abbreviation處填寫輸入喚起模版的關鍵詞,對應於日誌模版的 logd ,我們在這兒輸入 tag ,Description處填寫這一個模版的描述資訊,在這兒填寫 public static final String TAG = ""; ,然後在下面的內容區域填寫之後模版要生成的內容,填寫上 public static final String TAG = "$className$"; ,這時皮膚如下:

android studio模版功能簡介

其中className變顏色了,這時模版的語法,使用兩個$來標記這是帶填充的內容,然後點選右側的 Edit variables 按鈕,為帶填充的內容選擇內容:

android studio模版功能簡介

每一項都很好理解,我們在表示式處選擇 className() ,然後點選下方的 Define 來設定這個模版能使用的地方。

android studio模版功能簡介

我們選擇java下面的 declaration,這樣他能在java的class下面和欄位同級的地方使用。

android studio模版功能簡介

然後我們在class宣告屬性的地方輸入tag:

android studio模版功能簡介

按下enter就直接出現瞭如下程式碼:

public static final String TAG = "MainActivity";
複製程式碼

如此我們就成功新增了一個使用的自定義模版。

模版功能的更多介紹

在模版裡輸入雙美元符號包裹的屬性事,如果屬性名輸入相同的,最後能生成相同的值。如果不為屬性選擇函式,就需要自己去輸入值,其的用法可以參見下一節的 快速生成retrofit的field註解

下面列舉一些常用的屬性的生成函式:

函式名 函式值
user() 當前計算機的使用者名稱
date() 當前時間
methodName() 當前方法名
methodParameters() 當前方法的輸入引數
methodReturnType() 當前方法的返回值型別
className() 當前類的類名
classNameComplete() 當前類的完整類名

還有一些其他的可以自行探索。

一些實用模版

下面介紹幾個實用的模版。

頁面的根佈局

在xml檔案裡快速生成以LinearLayout為根佈局的模版:

android studio模版功能簡介

使用 DataBinding 的版本

android studio模版功能簡介

供於測試的時候快速生成main方法的模版

android studio模版功能簡介

Activity頭部的註釋

android studio模版功能簡介

快速生成retrofit的field註解

android studio模版功能簡介

可以將如下配置檔案複製,儲存為user.xml,放在android studio的配置目錄裡面直接引入這些模版,其中mac儲存在 user/{使用者名稱}/資源庫/Preferences/AndroidStudio3.2/templates 下面,Windows儲存在C盤下 .AndroidStudio3.2 的相應位置。

<templateSet group="user">
  <template name="noteActivity" value="/**&#10; * Activity描述資訊:&#10; * &lt;p&gt;&#10; * 需要的intent引數:&#10; * &#10; * @author $USER$&#10; * @date $DATE$&#10; */&#10;" description="Activity頭部註釋" toReformat="false" toShortenFQNames="true">
    <variable name="USER" expression="user()" defaultValue="" alwaysStopAt="true" />
    <variable name="DATE" expression="date()" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="api" value="/**&#10; * 描述:&#10; * @param $param$&#10; * @return $return$&#10; * @exception $exception$&#10; * @see IOException&#10; */" description="api註釋" toReformat="false" toShortenFQNames="true">
    <variable name="param" expression="methodParameters()" defaultValue="" alwaysStopAt="true" />
    <variable name="return" expression="methodReturnType()" defaultValue="" alwaysStopAt="true" />
    <variable name="exception" expression="" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="fbc" value="($cast$) findViewById(R.id.$resId$);" description="findViewById with cast" toReformat="false" toShortenFQNames="true" deactivated="true">
    <variable name="cast" expression="" defaultValue="" alwaysStopAt="true" />
    <variable name="resId" expression="" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_EXPRESSION" value="true" />
    </context>
  </template>
  <template name="retrofitQuery" value="@Query(&quot;$name$&quot;) String $name$" description="retrofit Query引數" toReformat="false" toShortenFQNames="true">
    <variable name="name" expression="" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="retrofitField" value="@Query(&quot;$name$&quot;) String $name$" description="retrofit Field引數" toReformat="false" toShortenFQNames="true">
    <variable name="name" expression="" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="syso" value="System.out.println($message$);" description="System.out.println();" toReformat="false" toShortenFQNames="true">
    <variable name="message" expression="" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_STATEMENT" value="true" />
    </context>
  </template>
  <template name="tag" value="public static final String TAG = &quot;$className$&quot;;" description="public static final String TAG = &quot;&quot;;" toReformat="false" toShortenFQNames="true">
    <variable name="className" expression="className()" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="noteContentProvider" value="/**&#10; * ContentProvider描述資訊:&#10; * &lt;p&gt;&#10; * &#10; * @author $USER$&#10; * @date $DATE$&#10; */&#10;" description="ContentProvider頭部註釋" toReformat="false" toShortenFQNames="true">
    <variable name="USER" expression="user()" defaultValue="" alwaysStopAt="true" />
    <variable name="DATE" expression="date()" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="noteService" value="/**&#10; * Service描述資訊:&#10; * &lt;p&gt;&#10; * &#10; * &#10; * @author $USER$&#10; * @date $DATE$&#10; */&#10;" description="Service頭部註釋" toReformat="false" toShortenFQNames="true">
    <variable name="USER" expression="user()" defaultValue="" alwaysStopAt="true" />
    <variable name="DATE" expression="date()" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="noteBroadcastReceiver" value="/**&#10; * BroadcastReceiver描述資訊:&#10; * &lt;p&gt;&#10; * 監聽的廣播:&#10; * &#10; * @author $USER$&#10; * @date $DATE$&#10; */&#10;" description="BroadcastReceiver頭部註釋" toReformat="false" toShortenFQNames="true">
    <variable name="USER" expression="user()" defaultValue="" alwaysStopAt="true" />
    <variable name="DATE" expression="date()" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="noteCommon" value="/**&#10; * 類描述資訊:&#10; * &#10; * @author $USER$&#10; * @date $DATE$&#10; */&#10;" description="java類頭部註釋" toReformat="false" toShortenFQNames="true">
    <variable name="USER" expression="user()" defaultValue="" alwaysStopAt="true" />
    <variable name="DATE" expression="date()" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="layoutRoot DataBinding" value="&lt;layout&gt;&#10;&#10;    &lt;data&gt;&#10;    &#10;    &lt;/data&gt;&#10;&#10;    &lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&#10;        xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;&#10;        xmlns:tools=&quot;http://schemas.android.com/tools&quot;&#10;        android:layout_width=&quot;match_parent&quot;&#10;        android:layout_height=&quot;match_parent&quot;&#10;        android:orientation=&quot;vertical&quot;&gt;&#10;&#10;    &lt;/LinearLayout&gt;&#10;&lt;/layout&gt;" description="頁面的初始佈局 DataBinding" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="XML" value="true" />
    </context>
  </template>
  <template name="layoutRoot" value="&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&#10;    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;&#10;    xmlns:tools=&quot;http://schemas.android.com/tools&quot;&#10;    android:layout_width=&quot;match_parent&quot;&#10;    android:layout_height=&quot;match_parent&quot;&#10;    android:orientation=&quot;vertical&quot;&gt;&#10;&#10;&lt;/LinearLayout&gt;&#10;" description="頁面的初始佈局" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="XML" value="true" />
    </context>
  </template>
  <template name="main" value="    public static void main(String[] args) {&#10;&#10;    }" description="main方法" toReformat="false" toShortenFQNames="true">
    <context>
      <option name="JAVA_DECLARATION" value="true" />
    </context>
  </template>
  <template name="mode" value="&lt;input type=&quot;button&quot; name=&quot;$method$&quot; value=&quot;$method$&quot; onClick=&quot;$method$();&quot; /&gt;&#10;&#10;function $method$() {&#10;&#10;    $(&quot;result&quot;).innerText = &quot;$method$&quot;;&#10;    var ret = HardwareInfo.$method$();&#10;    $(&quot;result&quot;).innerText = &quot;$method$成功&quot; + ret;&#10;}&#10;" description="模板" toReformat="false" toShortenFQNames="true">
    <variable name="method" expression="" defaultValue="" alwaysStopAt="true" />
    <context>
      <option name="JAVA_CODE" value="true" />
    </context>
  </template>
</templateSet>
複製程式碼

相關文章