美文网首页
Android Studio插件开发

Android Studio插件开发

作者: 0青衣小褂0 | 来源:发表于2019-05-16 00:12 被阅读0次

    Android Studio插件开发

    开发工具Intellj IDEA
    • 开发插件前准备

    (1)File -> New -> Project


    创建Plugin Project

    (2)resources/META-INF/plugin.xml

    <idea-plugin>
        //指定id 可选择包名等
        <id>com.demo.plugin.shape</id>
        //插件名称
        <name>ShapeHelper</name>
        //版本号
        <version>1.0</version>
        //邮箱地址 网址 公司名
        <vendor email="邮箱" url="网址">公司名</vendor>
        
        //简介
        <description><![CDATA[
          Android Studio插件,一个生成shape框架代码的插件.<br/>
        ]]></description>
        
        //更新信息
        <change-notes><![CDATA[
          1.0.<br/>
        ]]>
        </change-notes>
    
        <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
        <idea-version since-build="173.0"/>
    
        <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
             on how to target different products -->
        <!-- uncomment to enable plugin in all products
        <depends>com.intellij.modules.lang</depends>
        -->
    
        <extensions defaultExtensionNs="com.intellij">
            <!-- Add your extensions here -->
        </extensions>
        
        //插件触发action (可采取自动生成)
        <actions>
            ...
        </actions>
    
    </idea-plugin>
    

    (3)生成action


    开启生成action界面 设置action

    Action ID: 定义插件标志 例如: com.demo.plugin.shape.id
    Class Name: 定义继承AnAction的类名 例如: MyShapeAction
    Name: 动作在菜单选项中展示的名字
    Description:插件描述
    Groups:触发插件的方式,例如: GenerateGroup
    First,Last: Frist最上面、Last最下面
    keyboard Shortcuts: 快捷键,可以不设置
    点击确定,生成action
    例如:

    <actions>
            <!-- Add your actions here -->
            <action id="com.demo.plugin.shape.id" class="MyShapeAction" text="ShapeHelper"
                    description="Android Studio插件,一个生成shape框架代码的插接件">
                <add-to-group group-id="GenerateGroup" anchor="last"/>
            </action>
     </actions>
    
    • 开发插件

    (1) 生成固定模板代码:采用固定的txt模板,为希望替换掉的值设置占位符,通过流的读写,完成占位符的替换,具体方式见Demo

    (2) dialog:
    1.通过dialog.form来进行dialog样式的配置


    dialog样式

    通过拖动右方的控件,来完成布局 field name设置id用作绑定

    2.dialog的设置

    public MyDialog(MyDialogCallBack callback) {
            //设置回调
            mCallBack = callback;
            //设置标题
            setTitle("Shape Helper");
            //设置内容面板
            setContentPane(contentPane);
            setModal(true);
            //设置宽高
            setSize(300, 300);
            setLocationRelativeTo(null);
            getRootPane().setDefaultButton(buttonOK);
    
            buttonOK.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    onOK();
                }
            });
    
            buttonCancel.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    onCancel();
                }
            });
    
            // call onCancel() when cross is clicked
            setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
            addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    onCancel();
                }
            });
    
            // call onCancel() on ESCAPE
            contentPane.registerKeyboardAction(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    onCancel();
                }
            }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
     }
    
    /**
     * dialog回调
     */
    public interface MyDialogCallBack {
        /**
          * 获取参数回调
          *
          * @param corner     角度
          * @param angle      渐变角度
          * @param startColor 起始颜色
          * @param endColor   终止颜色
          */
        void ok(String corner, String angle, String startColor, String endColor);
    }
    
    • 生成插件
    生成插件

    点击则可以生成插件啦
    jar导入as当中即可使用

    Demo地址

    相关文章

      网友评论

          本文标题:Android Studio插件开发

          本文链接:https://www.haomeiwen.com/subject/ornmaqtx.html