关于安卓dimens的适配处理

2018-07-06  本文已影响0人  初见soulmate

最近在写一个框架,对于dimens的适配感觉比较繁琐,事情并不复杂,但是如果是自己一个一个的创建文件进行copy修改也是挺累人的,我是一个有点懒的人,所以就自己写个shell脚本解决一下了。

脚本已经写好了,经过测试运行正常,相关注释也写的很清晰,内容如下:

#!/bin/bash


#将values里面的dimens的数据copy到其他文件里面
function copydata ( )
{
    #用于处理shell将空格当成换行的问题
    IFS_old=$IFS
    IFS=$'\n'

    #scale=$(($1 / 320)) | bc
    scale=$(echo "scale=1;1.0*$1/320"|bc)
    echo ${scale}
    echo -e "<resources>" >> $2
    for line2 in `cat $3`
    do
        if [[ ${line2} == *"dimen"* ]]; then
            #截取右边字符串
            right=${line2#*>}
            #截取左边字符串
            mid=${right%px*}
            new=$(echo "scale=1;${mid} * ${scale}"|bc)
            echo -e ${line2%${mid}*}${new}${line2#*${mid}} >> $2
        fi
    done
    echo -e "</resources>" >> $2

    IFS=${IFS_old}
}


#==========================================
currentPath=$(pwd)
basepath=""
frompath=""
tofile="/dimens.xml"
mention="配置文件dmconfig.txt放在工程根目录下,相关格式如下:\n
            frompath:/app/src/main/res/values/dimens.xml\n
            topath:/app/src/main/res\n
            320\n
            480\n
            720\n
            960\n
            1080"\n
#读取配置文件
for line in `cat ${currentPath}"/dmconfig.txt"`
do
    if [[ ${line} == *"frompath"* ]];
    then
        #获取copy源地址
        echo "开始获取源地址。。。"
        frompath=${currentPath}${line#*frompath:}
    elif [[ ${line} == *"topath"* ]];
    then
        #获取需要copy过去的路径
        echo "开始保存位置地址。。。"
        basepath=${currentPath}${line#*topath:}"/values-sw"
    else
        if [[ ${frompath} != *"src/main/res"* ]]; then
            echo -e "【错误】源文件地址配置配置错误!!!\n"${mention}
            exit
        fi
        if [[ ${basepath} != *"src/main/res"* ]]; then
            echo -e "【错误】配置文件位置错误!!!\n"${mention}
            exit
        fi
        echo "开始进行相关文件配置"
        #如果没有相关文件夹则创建
        cdir=${basepath}${line}"dp"
        if [ ! -d ${cdir} ]; then
            mkdir ${cdir}
        fi

        #如果已经存在该文件则进行删除
        cfile=${cdir}${tofile}
        if  [ -e ${cfile} ]; then
            cmd="rm "${cfile}
            eval $cmd
        fi

        #创建相关文件并写入相关数据
        cmd="touch "${cfile}
        eval $cmd

        #复制数据到适配文件里面
        echo "开始进行相关文件拷贝"
        copydata ${line} ${cfile} ${frompath}
    fi

done



使用的话需要在工程根目录创建一个dmconfig.txt的配置文件,内容如下:
第一行指定源文件,就是基本文件,需要里面的dimens的单位是px。
第二行是拷贝的目录地址。
第三行及以下是相关的分辨率,根据需要指定,个数不限。

frompath:/app/src/main/res/values/dimens.xml
topath:/app/src/main/res
320
480
720
960
1080

另外需要在根目录下创建dimens.sh的文件,内容的话直接拷贝上面的内容即可。
配置好了之后在Terminal中输入:
按回车之后就搞定了,如果修改了基本dimens里面的数据需要同步,再重新运行命令即可,灰常方便。

./dimens.sh

相关效果如下:

7131C608-1728-459D-AF28-65D200C5A6F7.png
4011D5DD-DFFD-4A56-BCE4-587BFA919344.png
上一篇 下一篇

猜你喜欢

热点阅读