自动生成Android dimens.xml文件

2,302 阅读2分钟

前言

好久没更新内容了,现在疫情差不多稳定了,人们又开启了丰富多彩的娱乐活动。程序猿们早就开始了工作,其实这段时间发生了很多事,我也不知道写什么好,谁知道未来会怎么样呢?不bb了,生活还得继续。 在Android开发日常中,相信对dimens.xml文件还是很熟悉的,我们会把单位写在这个文件里,而不用直接硬编码在布局里。当然dimems.xml还有另一个用途,就是官方出的屏幕分辨率适配方案,不同分辨率下读取不同的dimens.xml文件,分别在不同目录下:

./app/src/main/res/values-sw480dp-land/dimens.xml  
./app/src/main/res/values-sw600dp-land/dimens.xml  
./app/src/main/res/values-sw720dp-land/dimens.xml  
./app/src/main/res/values-sw800dp-land/dimens.xml  
./app/src/main/res/values-w820dp/dimens.xml

当然屏幕适配方案有很多,我比较喜欢用今日头条的方案,令人拍案叫绝,在这里我就不赘述相关内容了,感兴趣的小伙伴可以去看看。

正文

上面的内容只是介绍dimen.xml文件,下面开始正文内容,人工处理这些dimens.xml文件毕竟是个体力活,弄起来比较麻烦。程序员嘛,当然要从重复的无意义的活动中抽身出来,那是机器干的事,哈哈哈哈,所以就有了下面这段代码:

public class GenerateDimenTool {
    public static void main(String[] args) {
        StringBuilder sw400 = new StringBuilder();
        //添加xml开始的标签
        String xmlStart = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<resources>\n";
        sw400.append(xmlStart);
        //添加内容
        for (int i = 0; i <= 1920; i++) {
//            此处name后的标签名可以自定义"margin_"随意更改
            String start = "<dimen name=\"dimen_" + i + "\">";
            String end = "dp</dimen>";
            sw400.append(start).append(i).append(end).append("\n");
        }
        //添加xml的尾标签
        sw400.append("</resources>");
        String sw400file = "./app/src/main/res/values/dimens.xml";
        writeFile(sw400file, sw400.toString());
    }

    public static void writeFile(String file, String text) {
        PrintWriter out = null;
        try {
            out = new PrintWriter(new BufferedWriter(new FileWriter(file)));
            out.println(text);
        } catch (IOException e) {
            e.printStackTrace();
        }

        out.close();
    }
}

实施

这一节的内容,如果上面已经看明白了,基本上就可以忽略了。

第一步:打开Android Studio,可以在你项目目录下,新建一个tools文件夹,毕竟不要跟工程文件混在一起比较好,然后新建一个类,将上述代码copy过去。

在这里插入图片描述
第二步:如图,将这个文件run起来,等执行结束,然后你会在对应目录下看到生成的dimens.xml文件。就是这么简单方便。
在这里插入图片描述
最终效果:是不是很方便呀呀呀呀呀
在这里插入图片描述