日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Studio 插件开发详解三:翻译插件实战

發布時間:2024/9/30 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Studio 插件开发详解三:翻译插件实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/78113868
本文出自【趙彥軍的博客】

系列目錄

Android Gradle使用總結
Android Studio 插件開發詳解一:入門練手
Android Studio 插件開發詳解二:工具類
Android Studio 插件開發詳解三:翻譯插件實戰
Android Studio 插件開發詳解四:填坑
Android Gradle 自定義Task 詳解
Android Gradle 自定義Task詳解二:進階

一:概述

如果不了解插件開發基礎的同學可以先看,

Android Studio 插件開發詳解一:入門練手
Android Studio 插件開發詳解二:工具類

在上面的兩篇文章,講解了插件開發的基礎,今天就來一個優點難度的項目,插件的名字叫 AndroidPluginTranslate , 顧名思義就是可以翻譯文案的插件,廢話不多說,先看最終效果圖:

二、準備工作

1、環境變量配置及軟件安裝,這里省略,我在 Android Studio 插件開發詳解一:入門練手 說的很清楚。

2、新建項目 AndroidPluginTranslate ,如下圖所示:

三、編碼

(1)關鍵知識

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

然后填寫一些相關信息

需要填寫的屬性如下:

  • ActionID:代表該Action的唯一的ID,一般的格式為:pluginName.ID
  • ClassName:類名
  • Name:就是最終插件在菜單上的名稱
  • Description:對這個Action的描述信息

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

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

創建好 TranslateAction 后,它的代碼很簡單,如下:

import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent;public class TranslateAction extends AnAction {@Overridepublic void actionPerformed(AnActionEvent e) {// TODO: insert action logic here} }

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

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

<idea-plugin><id>com.your.company.unique.plugin.id</id><name>Plugin display name here</name><version>1.0</version><vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor><description><![CDATA[Enter short description for your plugin here.<br><em>most HTML tags may be used</em>]]></description><actions><action id="TranslateActionID" class="action.TranslateAction" text="Translate"description="TranslateAction TranslateAction"><add-to-group group-id="EditMenu" anchor="first"/><keyboard-shortcut keymap="$default" first-keystroke="ctrl Q"/></action></actions> <idea-plugin>

這里大家一定要注意,要對 <id> 、<name> 、<version>、 <vendor>、 <description> 這幾個標簽要認真填寫,其中 <id> 是這個插件的 id ,一定不能和市場上的其他插件一樣;<description> 是描述這個插件的功能,盡可能的寫的詳細,否則在上架插件市場的的時候,會審核不過,白白浪費時間。

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

  • 獲得當前選中的單詞
  • 調用相關API得到單詞的意思
  • 通過一個類似于PopupWindow來顯示

###(2)創建工具類

在 Android Studio 插件開發詳解二:工具類 中介紹了三個工具類,分別是 http 工具類 HttpManager、json 解析工具類 JsonUtil 、日志打印工具類 Logger 。我們需要創建一個 util 包,然后把這三個類拷貝到我們的項目中。項目結構如下圖所示:

有了這三個工具類就大大減輕了我們的開發任務。

(3) 獲得當前選中的單詞

public void actionPerformed(AnActionEvent e) {// TODO: insert action logic herefinal Editor mEditor = e.getData(PlatformDataKeys.EDITOR);if (null == mEditor) {return;}SelectionModel model = mEditor.getSelectionModel();final String selectedText = model.getSelectedText();if (TextUtils.isEmpty(selectedText)) {return;} }

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

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

(4)調用相關API得到單詞的意思

調用的 API 我們選擇有道云的翻譯 API
有道智云:http://ai.youdao.com/
有道智云API文檔:http://ai.youdao.com/docs/doc-trans-api.s#p02

家如果想要做單詞翻譯,可以看下,非常簡單, 不過這個API 現在是收費了,新注冊的用戶會有 100 元的體驗金。

接口的調用這里不細說,官方有很詳細的說明,另外本例子會上傳至 Github , 還不清楚可以去我的Github 查看。我們根據返回的 json 字符串生成了一個類 TranslateBean;然后通過 Gson 轉化為TranslateBean對象。

好了,有了返回的數據以后,直接通過一個類似popupWindow展現即可。

(5)通過一個類似于PopupWindow來顯示

涉及到的代碼:

/*** 顯示一個Popwindow** @param editor* @param result*/private void showPopupBalloon(final Editor editor, final String result) {ApplicationManager.getApplication().invokeLater(new Runnable() {public void run() {LogUtil.thread();JBPopupFactory factory = JBPopupFactory.getInstance();factory.createHtmlTextBalloonBuilder(result, null, new JBColor(new Color(186, 238, 186), new Color(73, 117, 73)), null).setFadeoutTime(5000).createBalloon().show(factory.guessBestPopupLocation(editor), Balloon.Position.below);}});}

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

簡單看一下,是通過創建一個JBPopupFactory,然后通過它創建一個HtmlTextBalloonBuilder,通過這個builder去設置各種參數,最后show。

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

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

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

四、插件部署

(1)、插件輸出

Build --> Prepare Plugin Module… 生成插件。插件輸出為 xxx.jar 包 或者 xxx.zip 包。

安裝插件,這里就不講了,在 Android Studio 插件開發詳解一:入門練手 已經講的很清楚了。

(2)插件演示

把插件安裝在 Android Studio 后,重啟 Android Studio ,就可以愉快的使用插件了

(3)插件上傳到市場

插件上傳到市場在這里就不講了,詳見 Android Studio 插件開發詳解一:入門練手

五、總結

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

  • 下載Intellij IDEA,新建一個Intellij IDEA plugin的項目
  • 然后在里面new Action以及編寫API
  • 點擊prepare plugin生成jar,這個jar就可以用來安裝了。

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

最后所有的代碼都將上傳至:https://github.com/zyj1609wz/AndroidPluginTranslate

參考資料

學會編寫Android Studio插件 別停留在用的程度了


個人微信號:zhaoyanjun125 , 歡迎關注
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-o9HJsC05-1604565192587)(http://o7rvuansr.bkt.clouddn.com/weixin200.jpg)]

總結

以上是生活随笔為你收集整理的Android Studio 插件开发详解三:翻译插件实战的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。