精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
自己編寫Android Studio插件 別停留在用的程度了
1
概述
   

相信大家在使用Android Studio的時候,或多或少的會使用一些插件,適當?shù)呐浜喜寮梢詭椭覀兲嵘欢ǖ拈_發(fā)效率,更加快樂。例如:


  • https://github.com/zzz40500/GsonFormat 可以幫助我們從Gson轉(zhuǎn)化為實體類

  • https://github.com/avast/android-butterknife-zelezny 可以幫助我們更加方便的使用butterknife

  • https://github.com/Skykai521/ECTranslation 可以幫助在IDE里面完成英文->中文的翻譯


有句話叫做授人以魚不如授人以漁,不能一直跟隨著別人的腳步去使用插件了,有必要去學(xué)習編寫插件,當自己有好的創(chuàng)意的時候,就可以自己實現(xiàn)了。So,本文的內(nèi)容是:


自己編寫一個Android Studio插件 



ok,其實編寫插件并不難,官方也有詳細的文檔,所以你也可以選擇直接閱讀下文學(xué)習:


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


為了文章有一定的流暢性,決定以ECTranslation作為編寫Android Studio插件的例子。


我為什么選這個呢?因為創(chuàng)意好,實用并且代碼簡單。


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



注:效果與ECTranslation基本一致,本文僅用作學(xué)習,不造輪子,如果需要使用,直接使用ECTranslation即可。


2
準備工作
   

首先需要安裝IntelliJ IDEA

  • 下載網(wǎng)址:https://www.jetbrains.com/idea/


下載好就可以了~~


然后安裝,運行,點擊create New Project:



按照上圖進行選擇,如果沒有SDK,則點擊New新建一個即可。


然后點擊Next,輸入項目名稱選擇位置,就可以點擊finish了。


項目的結(jié)構(gòu)如下:



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


這樣準備工作就結(jié)束了~~


3
編碼
   

3.1 關(guān)鍵知識



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




然后填寫一些相關(guān)信息:




需要填寫的屬性如下:


  • ActionID:代表該Action的唯一的ID,一般的格式為:pluginName.ID

  • ClassName:類名

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

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


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


我們選擇的是EditMenu,右側(cè)選擇為first,即EditMenu下的第一個,效果如圖:




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


都填寫完成就可以點擊OK了。


點擊ok之后,可以看到為我們生成了下類:




此外我們剛才填寫的信息,也在plugin.xml中完成了注冊,大家可以進去看一眼,actions的標簽中,


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


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


  1.  獲得當前選中的單詞

  2. 調(diào)用相關(guān)API得到單詞的意思通過一個類似于PopupWindow來顯示


當然,為了盡快的測試,你可以先在里面彈一個對話框,例如如下:




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


那么點擊Run:



然后它會默認啟動一個新的IntelliJ IDEA的界面,你可以隨便新建一個項目,進入以后,你會發(fā)現(xiàn)Edit下多了一個Translate菜單,點擊即可彈出我們設(shè)定的對話框:




ok,測試通過就放心了~


繼續(xù)剛才的功能性的API:


1. 獲得當前選中的單詞

2. 調(diào)用相關(guān)API得到單詞的意思

3. 通過一個類似于PopupWindow來顯示


3.2 獲得選中的單詞




是不是覺得API很陌生,恩,我也覺得很陌生,關(guān)于API這里介紹其實沒什么意義,本文主要目的是讓大家對自定義插件有個類helloworld的認識,至于插件里面的代碼涉及到的API等到大家需要編寫插件的時候,再詳細學(xué)習就好了,現(xiàn)在就不要浪費精力記憶這些東西了。


上面的代碼就是獲得選中的文本,通過一個Editor,然后拿到SelectionModel,再拿到selectedText,從字面上還是蠻好理解的。


拿到選中的文本之后,應(yīng)該就是去查詢該單詞的意思了,查詢呢,ECTranslation用的是youdao的Open SDK,其實也很簡單,就是拼接一個url,然后等著解析返回數(shù)據(jù)就好了。


3.3 調(diào)用相關(guān)API拿到單詞的意思


有道API的地址:


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


大家如果想要做單詞翻譯,可以看下,非常簡單。


涉及到的代碼:




HttpUtils就不貼了,就是直接開了個線程,通過HttpUrlConnection去訪問網(wǎng)絡(luò),大家的項目中或者通過搜索引擎,代碼一搜一堆。


baseUrl就是有道的url,加上我們選中的單詞就是完整的url了,然后通過http訪問,callback回調(diào)出返回的字符串,這里返回的是json類型的字符串。


baseUrl如下:


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


我們根據(jù)返回的json字符串生成了一個類Translation;


然后通過Gson轉(zhuǎn)化為Translation對象。


ps:拿著上面的baseUrl后面跟一個任何單詞,直接訪問瀏覽器就能看到返回的json數(shù)據(jù)了,這里大家天天寫接口,類似的步驟比我肯定還熟悉。


好了,有了返回的數(shù)據(jù)以后,直接通過一個類似popupWindow展現(xiàn)即可。


3.4 通過一個類似popupWindow顯示


涉及到的代碼:




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


簡單看一下,是通過創(chuàng)建一個JBPopupFactory,然后通過它創(chuàng)建一個HtmlTextBalloonBuilder,通過這個builder去設(shè)置各種參數(shù),最后show。


ok,對于一個入門的例子,不要太強求對插件中這些API的掌握,還是那句話,等需要寫了再去查,需要什么功能,哪怕到對應(yīng)的插件中去copy源碼都可以,當然也有文檔:


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


有興趣的可以整理各種類型的插件,比如彈出popupWindow,生成代碼,生成文件類別的,然后對相關(guān)的API進行收集與整理。


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


我們這里肯定是測試沒問題的,效果圖就是開始的那個gif.


如果沒有問題,就可以去部署和發(fā)布我們的插件給別人去使用了。


這兩部也非常簡單。


4
部署插件
   
4.1填寫插件相關(guān)信息


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




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


然后,點擊build->prepare plugin...,如下圖:




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




這個jar就可以用于安裝了。


4.2 安裝插件


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




點擊安裝,然后重啟即可。


好了,重啟完成就可以在EDIT下看到Translate菜單了,選中單詞,點擊菜單或者快捷鍵都能實現(xiàn)翻譯了。


如果你有興趣,趕緊編寫一個插件自己玩吧。



當然,還可以把我們的插件發(fā)布到倉庫,支持在plugin中搜索安裝,參考:


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


就是注冊賬號,提交jar,填寫信息,等著審核就可以了。


5
總結(jié)
   

終于到了總結(jié)的環(huán)節(jié),這么長的文章其實編寫插件總結(jié)起來就幾句話。


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

2. 然后在里面new Action以及編寫API

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


恩,就是這么簡單,實踐起來會比較麻煩一點,等成功以后,回過頭來總結(jié),發(fā)現(xiàn)步驟其實就那么幾個步驟~~對于實際的Action相關(guān)的API,等你在編寫相關(guān)插件的時候,參考別的類似插件,查看官方文檔都可以。



--歡迎長按或者掃碼關(guān)注,不要錯過每一篇干貨--

-本公眾號支持投稿,直接投遞md文件或者鏈接至我郵箱-


本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android Studio與其IntelliJ IDEA相比,其差異與利弊主要有哪些
Android Studio插件整理
Android Gradle插件(plugin)版本(version)與Gradle、SDK Build Tools版本關(guān)系
Android studio之NDK integration is deprecated in the current plugin解決辦法
JSon實體類快速生成插件 GsonFormat 1.2.2
Android 劉海屏適配總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 绥江县| 双城市| 南乐县| 肥乡县| 时尚| 福泉市| 两当县| 赫章县| 枣庄市| 潮安县| 泰宁县| 泰州市| 灵武市| 泸西县| 神池县| 桓台县| 临颍县| 金湖县| 沛县| 洞口县| 乐安县| 河源市| 咸宁市| 焉耆| 达日县| 永宁县| 沂南县| 海原县| 玉林市| 绥芬河市| 深州市| 五原县| 枞阳县| 邢台市| 赤壁市| 房山区| 台州市| 革吉县| 铜山县| 奈曼旗| 哈巴河县|