首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造AS酷炫dimens适配插件

打造AS酷炫dimens适配插件

作者头像
先知先觉
发布2019-01-21 16:09:20
1.1K0
发布2019-01-21 16:09:20
举报

书接上文 Android完美适配dimens.xml脚本后,今天给大家带来了本人最新开发的dimens适配插件。 接下来给大家介绍一下插件的基本使用,非常简单。 脚本下载地址

使用

一、安装插件

1.选择Preferences

这里写图片描述
这里写图片描述

2.Plugins–>Install plugin from disk…

这里写图片描述
这里写图片描述

3.选中dimens-conver.jar文件

这里写图片描述
这里写图片描述

4.Restart Android Studio

重启之后插件算是安装完成。 接下来看一看如何使用呢?

二、插件使用

1、选择Tools —-》 Dimens Convert

这里写图片描述
这里写图片描述

2、在这里输入需要转换的数值

这里写图片描述
这里写图片描述

具体如何换算可以参考本人上一篇文章 Android完美适配dimens.xml脚本,这里就不详细介绍了

分类目录

ldpi

mdpi

hdpi

xhdpi

xxhdpi

xxxhdpi

密度(dpi)

~160

~240

~320

~480

~640

~960

图片比例

1.5

2

3

4

6

8

倍数

0.75x

1x

1.5x

2x

3x

4x

3、输入生成的文件夹名称,会在该文件夹下生成dimens.xml文件

项目名称/app/src/main/res/输入的文件夹名称/dimens.xml
这里写图片描述
这里写图片描述

4、选择需要转换数值的dimens文件

这里写图片描述
这里写图片描述

5、就是这么简单成功了

这里写图片描述
这里写图片描述

让我们来看一下效果 6.效果展示

这里写图片描述
这里写图片描述

三、动态演示

这里写图片描述
这里写图片描述

原理

终于大公告成了,那么很多童鞋可能对插件开发充满了兴趣,其实被人也是刚起步,下面就将本人实现过程给大家Show一下。

第一步:

了解基本的AS插件开发,可以借鉴下面的文章, AS插件开发 - 收藏集 - 掘金 类似的文章相当多,这里就不做详细叙述了。 不过这里有坑, AS版本号一定好对应,可以参考文档: Build Number Ranges <idea-version since-build="141.0"/>

这里写图片描述
这里写图片描述

这里基础就不多说了,Google都是,有问题的小伙伴可以扫码右侧二维码,加入微信群,进行讨论,交流。

第二步:

步入正题,首先我们需要获取到用户想要转换的倍率和生成文件夹的名称,那么这里我们使用了InputDialog,代码如下,

private String askForResolution(Project project) {
        return Messages.showInputDialog(project,
                "请输入需要转换倍数", "Input Your Resolution",
                Messages.getQuestionIcon());
    }

    private String askForFileName(Project project) {
        return Messages.showInputDialog(project,
                "请输入新的文件夹名称?", "Input Your FileName",
                Messages.getQuestionIcon());

    }

我们将获取到的数值保存起来。

第三步:

接下来我们需要获取到dimens原始文件,这里我们通过JFileChooser来获取文件,这里我们的类型是JFileChooser.FILES_ONLY只支持文件。 在这里我们可以得到文件路径和文件名称。

代码如下: 重点都已注释:

JFileChooser jfc = new JFileChooser();
        //只支持文件
        jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
        jfc.showDialog(new JLabel(), "选择");
        File file = jfc.getSelectedFile();
        if (file.isFile()) {
            //获取文件名
            String getFileName = jfc.getSelectedFile().getName();
            String fileType = getFileName.substring(getFileName.lastIndexOf("."));
            if(fileType.equals(".xml")){
                //file.getAbsolutePath() 获取文件路径
                convert(project,file.getAbsolutePath(),resolution,fileName);
            }else {
                Messages.showMessageDialog(project,"选择的文件类型有误","失败",Messages.getQuestionIcon());
            }
        }

第四步

接下来就到了我们转换dimens文件了,这里是用的是java代码,上一篇文章也介绍过dimens转换的脚本,有问题的小伙伴可以先阅读上一篇文章。

直接上代码,原理非常简单,就是逐行替换,这里非常感谢BlackJ的支持,哈哈。 Blankj/AndroidUtilCode 友情链接。 下面的代码想必大家都能读懂,就不详细介绍了。

        //输入
        File xml = new File(absolutePath);
        //输出 原name+分辨率.xml
        String newFilePath = absolutePath.substring(0, absolutePath.indexOf("/res/"));
        newFilePath = newFilePath + "/res/" + fileName + "/dimens.xml";
        System.out.println(newFilePath+"=====");
        File xmlOutput = new File(newFilePath);
        List<String> list = FileIOUtils.readFile2List(xml, "UTF-8");
        StringBuilder sb = new StringBuilder();
        for (int i = 0, len = list.size(); i < len; ++i) {
            String line = list.get(i);
            if (!line.contains("<dimen name=")) {
                sb.append(line);
            } else {
                int indexOfStart = line.indexOf('>');
                sb.append(line.substring(0, indexOfStart + 1));
                int indexOfEnd = line.lastIndexOf('<');
                int num = Integer.parseInt(line.substring(indexOfStart + 1, indexOfEnd - 2));
                String unit = line.substring(indexOfEnd - 2, indexOfEnd);
                String scaleString = String.valueOf((int) ((scale * num) + 0.5));
                sb.append(scaleString)
                        .append(line.substring(indexOfEnd - 2));
            }
            sb.append(LINE_SEP);
        }
        FileIOUtils.writeFileFromString(xmlOutput, sb.toString(), false);

到这里我们的开发流程就结束了,是不是非常简单,你也可以一试!!!

有问题的小伙伴扫码右侧二维码加群,讨论哦!!

脚本下载地址

源码GitHub地址: https://github.com/libin7278/dimens-convert

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年08月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用
    • 一、安装插件
      • 二、插件使用
        • 三、动态演示
        • 原理
          • 第一步:
            • 第二步:
              • 第三步:
              • 第四步
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档