英语水平太差劲,这是个很无奈的事情,在android studio里面看源码,注释看不懂!怎么办呢,安装个插件吧!搜了一下,就搜到一个,还没写怎么用。自己写一个简单的吧。在网上找了一下教程,照葫芦画瓢,最后做出来了,记录一下吧。
一、先下一个IntelliJ IDEA,安装好
https://www.jetbrains.com/idea/download/
二、新建一个IntelliJ Platform Plugin 工程
ProjectSDK : 点击New,选择IntelliJ 的根目录就可以。
next ,起个名,finish。
三、新建一个Action
在src文件夹上右键->New->Action
Class Name : 生成的java文件名,Name : 在菜单中显示的名称,Groups:在那组菜单中显示,Keyboard Shortcuts :用于设置快捷键。点击OK会生成TranslationAction.java文件。
四、先显示一个MessageDialog吧
在TranslationAction.java里面添加代码:
@Override
public void actionPerformed(AnActionEvent e) {
// TODO: insert action logic here
Messages.showMessageDialog(
"试一试看看效果",
"这是标题",
Messages.getInformationIcon());
}
五、运行一下
点击Run,会打开一个IntelliJ 窗口,刚才action选择了EditMenu,在Edit下可以发现一个名为translate的选项,快捷键是ALT+A。
六、接下来就是实现翻译功能啦
用有道API实现吧。地址:http://fanyi.youdao.com/openapi?path=data-mode
申请一个,网站名称,网站地址随便写,无所谓的东西。申请成功,会有一个 keyfrom 和 key。
七、封装数据
下面是我封装的数据格式。
package com.lcy.plugin;
import java.util.List;
import java.util.Map;
/**
* Created by loucyin on 2016/3/25.
*/
public class Translation {
public final static String US_PHONETIC = "us-phonetic";
public final static String UK_PHONETIC = "uk-phonetic";
public final static String PHONETIC = "phonetic";
public final static String EXPLAINS = "explains";
private final static int SUCCESS = 0;
private final static int QUERY_STRING_TOO_LONG = 20;
private final static int CAN_NOT_TRANSLATE = 30;
private final static int INVALID_LANGUAGE = 40;
private final static int INVALID_KEY = 50;
private final static int NO_RESULT = 60;
private String[] translation;
private String query;
private int errorCode;
private Map basic;
private List
发挥自己想象力的时候到了,根据IntelliJ 的代码提示功能,试了几次竟然成功了。
@Override
public void actionPerformed(AnActionEvent e) {
//获取编辑器
Editor editor = e.getData(PlatformDataKeys.EDITOR);
if (editor != null) {
SelectionModel model = editor.getSelectionModel();
//获取选中的文本
String selectedText = model.getSelectedText();
if (selectedText != null) {
//翻译并显示
getTranslation(selectedText);
}
}
}
九、请求网络获取翻译结果
我是用httpclient4.5实现的,下载地址:http://hc.apache.org/downloads.cgi
private void getTranslation(String query) {
try {
//获取URI
URI uri = createTranslationURI(query);
System.out.println(uri.toString());
//配置GET请求
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000)
.setConnectionRequestTimeout(5000).build();
HttpGet httpGet = new HttpGet(uri);
httpGet.setConfig(requestConfig);
HttpClient client = HttpClients.createDefault();
//请求网络
HttpResponse response = client.execute(httpGet);
int status = response.getStatusLine().getStatusCode();
if (status >= 200 && status < 300) {
//获取响应数据
HttpEntity resEntity = response.getEntity();
String json = EntityUtils.toString(resEntity, "UTF-8");
//转化为Translation对象
Gson gson = new Gson();
Translation translation = gson.fromJson(json, Translation.class);
//显示结果
Messages.showMessageDialog(
translation.toString(),
"翻译结果",
Messages.getInformationIcon()
);
} else {
//显示错误代码和错误信息
Messages.showMessageDialog(
response.getStatusLine().getReasonPhrase(),
"错误代码:" + status,
Messages.getInformationIcon()
);
}
} catch (IOException e) {
//显示异常信息
Messages.showMessageDialog(
e.getMessage(),
"啊欧,崩溃了",
Messages.getInformationIcon()
);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
/**
* 生成URI
*
* @param query 查询内容
* @return URI
* @throws URISyntaxException
*/
private URI createTranslationURI(String query) throws URISyntaxException {
URIBuilder builder = new URIBuilder();
builder.setScheme("http")
.setHost(HOST)
.setPath(PATH)
.addParameter(PARAM_KEY_FROM, KEY_FROM)
.addParameter(PARAM_KEY, KEY)
.addParameter(PARAM_TYPE, TYPE)
.addParameter(PARAM_VERSION, VERSION)
.addParameter(PARAM_DOC_TYPE, DOC_TYPE)
.addParameter(PARAM_CALL_BACK, CALL_BACK)
.addParameter(PARAM_QUERY, query)
;
return builder.build();
}
十、部署
Builde->Prepare Plgin Module ‘MyTranslation’For Deployment,就会在工程目录下生成MyTranslation.zip文件。然后,settings->Plugins->Install Plugin from Disk,找到刚才生成的文件安装即可,安装完重启,看看效果。
效果图 :
界面比较挫,音标还出现乱码,还好能用。
源码地址:https://github.com/loucyin/MyTranslation