本身編寫Android Studio插件 別停留在用的程度了(轉載)

轉自:本身編寫Android Studio插件 別停留在用的程度了html

1概述   android

相信你們在使用Android Studio的時候,或多或少的會使用一些插件,適當的配合插件能夠幫助咱們提高必定的開發效率,更加快樂。例如:git

 

  • https://github.com/zzz40500/GsonFormat 能夠幫助咱們從Gson轉化爲實體類github

  • https://github.com/avast/android-butterknife-zelezny 能夠幫助咱們更加方便的使用butterknifejson

  • https://github.com/Skykai521/ECTranslation 能夠幫助在IDE裏面完成英文->中文的翻譯api

 

有句話叫作授人以魚不如授人以漁,不能一直跟隨着別人的腳步去使用插件了,有必要去學習編寫插件,當本身有好的創意的時候,就能夠本身實現了。So,本文的內容是:瀏覽器

 

本身編寫一個Android Studio插件 

 

ok,其實編寫插件並不難,官方也有詳細的文檔,因此你也能夠選擇直接閱讀下文學習:網絡

 

  • http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started.html

 

爲了文章有必定的流暢性,決定以ECTranslation做爲編寫Android Studio插件的例子。ide

 

我爲何選這個呢?由於創意好,實用而且代碼簡單。學習

 

貼一個今天這個插件的最終效果圖:

 

注:效果與ECTranslation基本一致,本文僅用做學習,不造輪子,若是須要使用,直接使用ECTranslation便可。

 

2準備工做   

首先須要安裝IntelliJ IDEA

 

  • 下載網址:https://www.jetbrains.com/idea/

 

下載好就能夠了~~

 

而後安裝,運行,點擊create New Project:

 

按照上圖進行選擇,若是沒有SDK,則點擊New新建一個便可。

 

而後點擊Next,輸入項目名稱選擇位置,就能夠點擊finish了。

 

項目的結構以下:

 

src目錄下主要用於存放咱們編寫的代碼。

 

這樣準備工做就結束了~~

 

3編碼   

 

3.1 關鍵知識

 

 

編碼實際上核心的一個類叫作AnAction,能夠直接選擇NEW->Action,以下圖:

 

 

而後填寫一些相關信息:

 

 

須要填寫的屬性以下:

 

  • ActionID:表明該Action的惟一的ID,通常的格式爲:pluginName.ID

  • ClassName:類名

  • Name:就是最終插件在菜單上的名稱

  • Description:對這個Action的描述信息

 

而後往下,選擇這個Action即將存在的位置:

 

咱們選擇的是EditMenu,右側選擇爲first,即EditMenu下的第一個,效果如圖:

 

 

再往下就是制定快捷鍵了~~

 

都填寫完成就能夠點擊OK了。

 

點擊ok以後,能夠看到爲咱們生成了下類:

 

 

此外咱們剛纔填寫的信息,也在plugin.xml中完成了註冊,你們能夠進去看一眼,actions的標籤中,

 

當咱們點擊菜單的時候,就回觸發`actionPerformed()`方法。

 

那麼這麼看,咱們在這個方法中只要完成三件事:

 

  1.  得到當前選中的單詞

  2. 調用相關API獲得單詞的意思經過一個相似於PopupWindow來顯示

 

固然,爲了儘快的測試,你能夠先在裏面彈一個對話框,例如以下:

 

 

預期效果是點擊Tranlate菜單,或者按快捷鍵會彈出一個提示對話框。

 

那麼點擊Run:

 

而後它會默認啓動一個新的IntelliJ IDEA的界面,你能夠隨便新建一個項目,進入之後,你會發現Edit下多了一個Translate菜單,點擊便可彈出咱們設定的對話框:

 

 

ok,測試經過就放心了~

 

繼續剛纔的功能性的API:

 

1. 得到當前選中的單詞

2. 調用相關API獲得單詞的意思

3. 經過一個相似於PopupWindow來顯示

 

3.2 得到選中的單詞

 

 

是否是以爲API很陌生,恩,我也以爲很陌生,關於API這裏介紹其實沒什麼意義,本文主要目的是讓你們對自定義插件有個類helloworld的認識,至於插件裏面的代碼涉及到的API等到你們須要編寫插件的時候,再詳細學習就行了,如今就不要浪費精力記憶這些東西了。

 

上面的代碼就是得到選中的文本,經過一個Editor,而後拿到SelectionModel,再拿到selectedText,從字面上仍是蠻好理解的。

 

拿到選中的文本以後,應該就是去查詢該單詞的意思了,查詢呢,ECTranslation用的是youdao的Open SDK,其實也很簡單,就是拼接一個url,而後等着解析返回數據就行了。

 

3.3 調用相關API拿到單詞的意思

 

有道API的地址:

 

  • http://fanyi.youdao.com/openapi?path=data-mode

 

你們若是想要作單詞翻譯,能夠看下,很是簡單。

 

涉及到的代碼:

 

 

HttpUtils就不貼了,就是直接開了個線程,經過HttpUrlConnection去訪問網絡,你們的項目中或者經過搜索引擎,代碼一搜一堆。

 

baseUrl就是有道的url,加上咱們選中的單詞就是完整的url了,而後經過http訪問,callback回調出返回的字符串,這裏返回的是json類型的字符串。

 

baseUrl以下:

 

  • http://fanyi.youdao.com/openapi.do?keyfrom=Skykai521&key=977124034&type=data&doctype=json&version=1.1&q=name

 

咱們根據返回的json字符串生成了一個類Translation;

 

而後經過Gson轉化爲Translation對象。

 

ps:拿着上面的baseUrl後面跟一個任何單詞,直接訪問瀏覽器就能看到返回的json數據了,這裏你們每天寫接口,相似的步驟比我確定還熟悉。

 

好了,有了返回的數據之後,直接經過一個相似popupWindow展示便可。

 

3.4 經過一個相似popupWindow顯示

 

涉及到的代碼:

 

 

這個API,恩,我copy的源碼,依然是不求記住,知道這有個相似的功能便可。

 

簡單看一下,是經過建立一個JBPopupFactory,而後經過它建立一個HtmlTextBalloonBuilder,經過這個builder去設置各類參數,最後show。

 

ok,對於一個入門的例子,不要太強求對插件中這些API的掌握,仍是那句話,等須要寫了再去查,須要什麼功能,哪怕到對應的插件中去copy源碼均可以,固然也有文檔:

 

  • http://www.jetbrains.org/intellij/sdk/docs/tutorials.html

 

有興趣的能夠整理各類類型的插件,好比彈出popupWindow,生成代碼,生成文件類別的,而後對相關的API進行收集與整理。

 

這樣代碼寫完了,先測試一下,點擊RUN,而後看效果~

 

咱們這裏確定是測試沒問題的,效果圖就是開始的那個gif.

 

若是沒有問題,就能夠去部署和發佈咱們的插件給別人去使用了。

 

這兩部也很是簡單。

 

4部署插件   4.1填寫插件相關信息

 

打開項目文件的plugin.xml,以下圖:

 

 

在裏面填寫id,name,version等。。。記得隨便填一下~

 

而後,點擊build->prepare plugin...,以下圖:

 

 

會在項目的根目錄生成一個jar,如圖:

 

 

這個jar就能夠用於安裝了。

 

4.2 安裝插件

 

打開Andorid Studio,選擇Preferences -> Plugins -> Install plugin from disk,選擇咱們生成的jar便可,如圖:

 

 

點擊安裝,而後重啓便可。

 

好了,重啓完成就能夠在EDIT下看到Translate菜單了,選中單詞,點擊菜單或者快捷鍵都能實現翻譯了。

 

若是你有興趣,趕忙編寫一個插件本身玩吧。

 

 

固然,還能夠把咱們的插件發佈到倉庫,支持在plugin中搜索安裝,參考:

 

  • http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/publishing_plugin.html

 

就是註冊帳號,提交jar,填寫信息,等着審覈就能夠了。

 

5總結   

終於到了總結的環節,這麼長的文章其實編寫插件總結起來就幾句話。

 

1. 下載Intellij IDEA,新建一個Intellij IDEA plugin的項目

2. 而後在裏面new Action以及編寫API

3. 點擊prepare plugin生成jar,這個jar就能夠用來安裝了。

 

恩,就是這麼簡單,實踐起來會比較麻煩一點,等成功之後,回過頭來總結,發現步驟其實就那麼幾個步驟~~對於實際的Action相關的API,等你在編寫相關插件的時候,參考別的相似插件,查看官方文檔均可以。

相關文章
相關標籤/搜索