声明:作者是根据 Hongyang的博客自己实践之后,根据自己的理解写的,有什么不对的地方还望指正。
先放两张效果图
一、准备
- 由于AndroidStudio不具备开发插件的功能,需要安装IDEA
- 翻译使用的是有道的翻译接口,需要申请,接口申请的网址点这里
- json解析使用的是GSON
二、创建工程
在此处创建的plugin工程,如下图所示
填写完工程名之后, 创建的工程结构如下所示
其中plugin.xml就和j2ee中web.xml功能类似,是配置插件属性的地方。
三、撸代码
首先,new一个Action,在弹出界面简单填写类的信息,如下图
其中第一部分是类相关的信息,ActionID表示一个独一无二的名字,就像Android清单文件中的包名一样。
第二部分是将这个功能添加到哪个菜单中去,当前选择的是添加到Edit菜单中并且作为第一个子菜单。
第三部分是这个功能的快捷键,可将光标置于输入框内,点击键盘进行输入
可以看到在生成的类中有public void actionPerformed(AnActionEvent e)
这个方法,关键的地方就在这个方法中,在IDE中几乎所有操作都可以在此方法中捕捉到。如下图
首先获取选中的文字,调用以下api
final Editor mEditor = e.getData(PlatformDataKeys.EDITOR);
if (null == mEditor) {
return;
}
SelectionModel model = mEditor.getSelectionModel();
final String selectedText = model.getSelectedText();
if (TextUtils.isEmpty(selectedText)) {
return;
}
获取到选中的文字之后,就可以调用申请到的有道翻译接口进行翻译,要翻译的文本,必须是UTF-8编码,字符长度不能超过200个字符,需要进行urlencode编码。翻译完成之后就可以以一个类似popupWindow的窗口将接口展示出来了。
private void showPopupBalloon(final Editor editor, final String result) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
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.guessBestPopupLoc