打造AS酷炫dimens适配插件
来源:互联网 发布:spark php客户端 编辑:程序博客网 时间:2024/06/05 03:10
书接上文 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脚本,这里就不详细介绍了
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
扫码关注公众号“伟大程序猿的诞生“,更多干货等着你~
扫码关注公众号“伟大程序猿的诞生“,更多干货等着你~
扫码关注公众号“伟大程序猿的诞生“,更多干货等着你~
- 打造AS酷炫dimens适配插件
- Dimens适配与布局适配
- Android屏幕适配---dimens转换工具
- android屏幕适配之dimens适配
- 用dimens去实现 屏幕适配
- 用dimens去实现 屏幕适配
- 安卓用dimens做屏幕适配
- Android 屏幕适配之dimens适配
- Android完美适配dimens.xml脚本
- Android 开发之屏幕适配 dimens
- Android 屏幕适配之 dimens 适配
- 使用dimens来进行屏幕适配
- Android 屏幕适配之dimens适配
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- dimens
- 自动生成Android屏幕适配的dimens.xml
- rails 多表查询
- 关于rdbuf
- c++ 一日一练:istream.rdbuf(ostringstream.rdbuf())无效!
- android 通过tcp发送数据
- wstringstream和wcout的真正用法
- 打造AS酷炫dimens适配插件
- 搞定宽字符流的读取问题。。(不能用>>)!!紧记
- SAP HR 常用事务代码
- const变量的使用方法。。
- Unity3D ,打开Unity3D 会报出 无法统一视图(是英文)
- 流式布局,标签式布局
- windows消息队列。DispatchMessage。 PostMessage
- HDU6058 Kanade's sum
- 终于搭好了一个游戏的窗口框架(一个调试窗口,一个消息窗口,一个主窗口)