打造属于自己的Android Studio插件

你还在彻彻底底的用别人写好的插件吗,想不想拥有一款属于自己的AS插件,其实写插件特别的简单,只要跟着我的脚步,分分钟写出一款好的插件,心动不如行动,赶紧来写吧。

一、AS常用插件

  • A8Translate:有毒的翻译插件

  • MaterialDesignIcon:自动生成常用小图标

  • CodeGlance:代码快速定位,鸟瞰图

  • ButterKnife:快速生成控件对象

  • AndroidSelector:快速生成选择器

  • JsonFormat:快速生成Bean

  • RetroLambda:在Java6,7中使用拉姆达表达式

  • FreeLine:神级编译器,增量编译
    ...

二、参考网站

  • jetbrains官网教程

  • 学会编写Android Studio插件

  • 简单的Android Studio 翻译插件

  • 有道API

三、打造插件

具体如何配置环境,创建项目,运行打包等等,请查看参考网站,这里只讲具体实现。

3.1 大致流程介绍

打造属于自己的Android Studio插件_第1张图片
开发流程
  • 配置开发环境
  • 创建一个插件项目
  • 构建版本范围
  • 创建一个动作意图
  • 编写运行插件
  • 部署插件
  • 配置插件的平台
  • 发布插件到插件仓库

3.2 翻译插件实现原理

内部其实很简单,总共包括三个步骤:获取选中单词,联网查询单词,弹框显示结果

  • 获取选中单词

      // 获取编辑器
      Editor editor = e.getData(PlatformDataKeys.EDITOR);
      if (editor == null) return;
    
      // 获取选择模式对象
      SelectionModel model = editor.getSelectionModel();
    
      // 选中文字
      String selectedText = model.getSelectedText();
    
  • 联网查询单词

单词的翻译使用的是有道翻译,通过查询返回Json格式的中文结果,然后自己组装一下进行显示。

网络请求使用的是最基本的HttpURLConnection,没有特意做什么优化。

Json使用Gson解析生成JavaBean,然后使用回调来处理请求的结果。

  •   /** 请求网络数据 */
      public static void requestNetData(String queryWord, TranslateCallBack callBack) {
          // TODO 读取本地缓存
    
          try {
              URL url = new URL(BASE_URL + queryWord);
              HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
              conn.setConnectTimeout(5000);
              conn.setReadTimeout(5000);
              conn.setRequestMethod(conn.getRequestMethod());
    
              // 连接成功
              if (conn.getResponseCode() == 200) {
                  InputStream ins = conn.getInputStream();
    
                  // 获取到Json字符串
                  String content = StreamUtils.getStringFromStream(ins);
                  if (content != null) {
                      callBack.onSuccess(new Gson().fromJson(content, callBack.mType));
                  } else {
                      callBack.onFailure(TranslationBean.EMPTY);
                  }
              } else {
                  callBack.onFailure(conn.getResponseMessage());
              }
          } catch (java.io.IOException e) {
              e.printStackTrace();
              callBack.onFailure(e.getMessage());
          }
      }
    
  • 弹框显示查询结果(使用了Lambda表达式)

    /** 第三步,弹出对话框 */
    private void showPopupWindow(final String result) {
        ApplicationManager.getApplication().invokeLater(() -> {
            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(mEditor), Balloon.Position.below);
        });
    }
  • 写完了实现逻辑,运行后,IDEA会让你新建一个测试插件的项目,随便建立一个项目就好,然后按快捷键就可以显示

欢迎大家访问我的,博客和GitHub。

你可能感兴趣的:(打造属于自己的Android Studio插件)