打造AS酷炫dimens適配外掛

書接上文 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指令碼,這裡就不詳細介紹了

分類目錄ldpimdpihdpixhdpixxhdpixxxhdpi
密度(dpi)~160~240~320~480~640~960
圖片比例1.523468
倍數0.75x1x1.5x2x3x4x

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

掃碼關注公眾號“偉大程式猿的誕生“,更多幹貨等著你~
掃碼關注公眾號“偉大程式猿的誕生“,更多幹貨等著你~
掃碼關注公眾號“偉大程式猿的誕生“,更多幹貨等著你~

公眾號回覆“資料獲取”,獲取更多幹貨哦~