1. 程式人生 > >Android Studio Activity模版開發

Android Studio Activity模版開發

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

為什麼要使用模版開發

在開發之中,我們總會遇到一些比較通用的模組,比如啟動頁,登陸功能,網路請求,MVP模式等等。有些功能甚至需要重複使用多次,我們通常的做法是把之前的模組拷貝過來,修改名字,再修改內容。如果使用了程式碼模板的話,會減少很多重複的工作。

我們經常使用的系統的模版的結構如下圖所示。如果你想自定義一個Activity模版或其他類模版,你可以把這2個檔案拷貝過去,修改一下就行了。

 

這種方式稍微複雜一些,因為新手大都對這幾個檔案不熟悉,不知道怎麼修改。

模板檔案字尾名都是以【.ftl】結尾。

  • globals.xml.ftl 全域性變數檔案 存放的是一些全域性變數
  • recipe.xml.ftl 配置要引用的模板路徑以及生成檔案的路徑
  • template.xml 模板的配置資訊,以及要輸入的引數.定義了模板的流程框架 基本結構
  • template_blank_activity.png 顯示的縮圖(只是展示用)
    -root Activity模板檔案

globals.xml.ftl

<?xml version="1.0"?>
<globals>
    <global id="resOut" value="${resDir}" />
    <global id="srcOut" value="${srcDir}/${slashedPackageName(packageName)}" />
    <global id="relativePackage" value="<#if relativePackage?has_content>${relativePackage}<#else>${packageName}</#if>" />
</globals>

定義一些全域性的變數,可以看到其內部有<global>標籤,分別定義id,type,預設值。同理,我們可以通過id的值訪問到該值。

recipe.xml.ftl

<?xml version="1.0"?>
<recipe>

    <instantiate from="root/src/app_package/MVPActivity.java.ftl"
        to="${escapeXmlAttribute(srcOut)}/${activityName}Activity.java" />

    <merge from="root/AndroidManifest.xml.ftl"
           to="${escapeXmlAttribute(manifestOut)}/AndroidManifest.xml" />

    <merge from="root/${resIn}/values/strings.xml.ftl"
             to="${escapeXmlAttribute(resOut)}/values/strings.xml" />

</recipe>
  • instantiate : 把Activity模版或其他模版拷貝到我們的專案中,並且會更改我們自定義的引數。

  • merge : 合併的意思,比如將我們使用到的strings.xml合併到我們的專案的stirngs.xml中

  • copy :從root中copy檔案到我們的目標目錄,比如drawable、anim等資料夾。

  • open:在程式碼生成後,開啟指定的檔案,比如我們新建一個Activity後,預設就會將該Activity開啟。

template.xml

<?xml version="1.0"?>
<template
    format="5"
    revision="5"
    name="MVPActivity"
    minApi="7"
    minBuildApi="14"
    description="mvp">

    <category value="Activity" />
    <formfactor value="Mobile" />

    <!-- input data -->
    

    <parameter
        id="activityName"
        name="Activity Nme"
        type="string"
        default="MVP"
        help="" />

    <!-- 128x128 thumbnails relative to com.puke.template.xml -->
    <thumbs>
        <!-- default thumbnail is required -->
        <thumb>template_cover.png</thumb>
    </thumbs>

    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />

</template>
  • <template>中的name屬性,對應新建Activity時顯示的名字
  • <category>對應New的類別為Activity

parameter,部分屬性介紹:

  • id :唯一標識,最終通過該屬性的值,獲取使用者輸入值(文字框內容,是否選中)
  • name:介面上的類似label的提示語
  • type : 輸入值型別
  • constraints:填寫值的約束
  • suggest:建議值,比如填寫ActivityName的時候,會給出一個佈局檔案的建議值。
  • default:預設值
  • help:底部顯示的提升語

template.xml的最下面的部分引入了globals.xml.ftl和recipe.xml.ftl。

最後給大家分享一份非常系統和全面的Android進階技術大綱及進階資料,及面試題集

想學習更多Android知識,請加入Android技術開發企鵝交流 7520 16839

進群與大牛們一起討論,還可獲取Android高階架構資料、原始碼、筆記、視訊

包括 高階UI、Gradle、RxJava、小程式、Hybrid、移動架構、React Native、效能優化等全面的Android高階實踐技術講解效能優化架構思維導圖,和BATJ面試題及答案!

群裡免費分享給有需要的朋友,希望能夠幫助一些在這個行業發展迷茫的,或者想系統深入提升以及困於瓶頸的

朋友,在網上部落格論壇等地方少花些時間找資料,把有限的時間,真正花在學習上,所以我在這免費分享一些架構資料及給大家。希望在這些資料中都有你需要的內容。

相關推薦

Android Studio Activity模版開發

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

使用Android Studio進行NDK開發

ndk開發 開發 ews ret split c++基礎 ndk 給定 註意 Step1:創建native方法 很easy,僅僅須要給定義好的方法加上native關鍵詞就可以 註意:由於該方法的詳細實現是在c++中詳細實現的。所以相似於接口方法不

Android Studio多Module開發需要註意的問題

CI 完成 xen icon and schema In tools targe 多module開發,其中的一個為入口module,其他module為獨立的“應用”(library) 1.在原有的項目導入另外個項目的module為主項目的次module,即在A項目

Android studio 下 JNI 開發實例

ndk create void 上層 執行效率 約束 添加 src 傳輸協議 在AS中進行 NDK 開發之前,我們先來簡單的介紹幾個大家都容易搞懵的概念: 到底什麽是JNI,什麽是NDK? 何為“交叉編譯”? 先看什麽是 JNI?JNI 的全稱就是

Android studio 下 JNI 開發例項

 在AS中進行 NDK 開發之前,我們先來簡單的介紹幾個大家都容易搞懵的概念:  到底什麼是JNI,什麼是NDK?  何為“交叉編譯”?     先看什麼是 JNI?JNI 的全稱就是 Java Native Interface,即java本地開發介面。可能大家和我一樣,一聽到介面什麼的就犯懵:“

Android studio中NDK開發(一)——使用CMake構建NDKDemo

一、前言 NDK可以支援使用C/C++來編寫Android程式,不但可以接入C/C++中優秀的庫資源,而且處理效率高,在音視訊方面有著廣泛的應用。本篇主要以CMake的方式來構建NDK,主要以最常規的方式建立一個NDKImportDemo,並對自動建立官方例子進行分析構建的過程以及CMakeLi

Android Studio下Ndk開發踩過的坑以及解辦法決

 Android studio在2.2之後是開始相容ndk的開發,嚐鮮用來本地開發,各種坑,不相容。之前用得好好的,一個升級AS或者NDK版本都會一不小心導致了編譯失敗,或者成功之後,載入不成功。故隨手筆記記錄下自己踩過的坑,也方便其他人查詢。 Trap One :

Android studio中NDK開發(一):CMakeLists.txt編寫入門

自定義變數 主要有隱式定義和顯式定義兩種。  隱式定義的一個例子是PROJECT指令,它會隱式的定義< projectname >_BINARY_DIR和< projectname >_SOURCE_DIR兩個變數;顯式定義使用SE

windows下 android studio 的NDK開發環境配置(1)(2)

參考博主文章連結: 開發環境:  windows10  AS2.1.2 首先安裝NDK,  安裝完後,新建一個空專案。    點選下一步,知道新建一個新專案。 新建好的專案如下:  檢測local.properties 檔案裡面是否有ndk的路徑,沒有加上。

使用android studio進行ndk開發時如何定位crash錯誤

使用android studio進行ndk開發時如何定位crash崩潰錯誤 在ndk開發時, jni層的程式碼一旦出現問題, 就會列印如下資訊, 然後直接閃退, 這時候讓人非常抓狂, 只能過在各個jni函式中列印日誌來跟蹤問題,但是效率實在是太低,碰到有多

Android Studio 藍芽開發流程

1. 許可權關於藍芽的許可權主要涉及到下面三個:BLUETOOTH:允許配對的裝置進行連線BLUETOOTH_ADMIN:允許搜尋和配對裝置ACCESS_COARSE_LOCATION:廣播接收器接收BluetoothDevice.ACTION_FOUND廣播需要改許可權&l

使用Android Studio與Eclipse開發NDK的對比

最近開發的一個專案中用到了JNI,所以針對Android的兩大IDE開發NDK做了一下對比。 Android Studio開發NDK的配置 我使用的是穩定版的2.0的外掛,預設情況下它是不支援NDK的,即如果你在build.gradle中配置了ndk屬性

Android Studio配置CMake開發NDK

1.在SDK Tools中勾選安裝CMake、LLDB、NDK 2.配置一些快捷方式 引數講解 javah 用於生成標頭檔案 Program:$JDKPath$/bin/javah Parameters:-d

ubuntu 16.04 Android studio 2.3開發環境搭建

1、下載軟體    Android studio 社群下載:http://www.android-studio.org/    百度雲網盤下載連結: https://pan.baidu.com/s/1Mc_X5D5QItk1tA02_LT-gQ 密碼: rem2 個人認為An

Android Studio新增NDK開發能力的兩種方法

第一種方法:新建的專案(new project)的時候使用Include C++ Support選項 第二種方法:使用外掛(Plugin)-- Experimental Plugin 這裡我演示一下,瞭解具體內容請科學上網,去檢視詳情 試驗環境: java jdk

Android Studio 進行NDK開發入門

一.開發前準備 Android Studio 最好升級到2.2 Jdk1.7 api24 Gradle2.2.2 二.下載NDK和cMake 三.配置

使用Android Studio進行NDK開發和除錯(gradle-experimental之官方文件的翻譯說明)

版本更新 環境要求 Gradle(參照三裡邊的版本要求) Android NDK r10e Build Tool在19.0.0以上的SDK Gradle版本要求 不同版本的Experimental Plugin需要不同版本的gradle

Android Studio 3.0 開發AndroidInstantApps(免安裝應用)

InstantApps(免安裝應用) 今年的GoogleIO大會之後,開始Android免安裝應用對所有開發者開放 利用 Android Studio 3.0,現在可以在專案中建立免安裝應用。免安裝應用是一種輕巧的 Android 應用,使用者無需安

Android Studio的NDK開發環境搭建

目標 由於要涉及到音視訊的開發,所以要用到JNI,之前一直用AS2.0的,發現用這個做NDK開發太麻煩了,後來看到動腦學院老師的一個教學視訊,android studio的NDK開發配置,做了一個學習筆記,視訊可以百度搜索的到。 配置要求 Android

Android Studio NDK/JNI開發

前言        我們在一步一步學習JNI(一)學習了怎麼進行Jni開發,當時說道了怎麼編寫native函式,怎麼進行載入,怎麼進行so生成,當時的都是在eclipse下生成的。這裡我們就來說說Android Studio下怎麼程序開發。 下載NDK