Android 화면 맞춤식 dimens를 자동으로 생성합니다.xml

5392 단어 Android
최근에 팀은 안드로이드 앱의 화면 어울림을 다시 했다. 공식적인 방법으로는 레이아웃 파일에서 dimen 변수를 인용하고 변수를 여러 해상도에 두는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

인공 처리 이런 dimens.xml, 비교적 번거롭고 육체노동인 것 같아서 도구류를 만들어 비례에 따라 자동화하여dimens를 생성했다.xml 파일은 효율이 순식간에 많이 향상되었습니다. 특별한 정의 사이즈가 필요하면 다른 xml 파일에 넣으면 됩니다.
values/dimens.xml 파일 예


    
    14dp
    14dp

    50dp
    81dp
    18dp
    63dp

    54dp
    54dp

    72dp
    14dp

도구류 코드, 직접 실행하면 됩니다
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 *   values/dimens.xml,                dimens.xml
 *    dp sp,   dip,         ;xml      
 * Created by zhangxitao on 15/9/22.
 */
public class DimenTool {

    public static void gen() {

        File file = new File("./app/src/main/res/values/dimens.xml");
        BufferedReader reader = null;
        StringBuilder sw480 = new StringBuilder();
        StringBuilder sw600 = new StringBuilder();
        StringBuilder sw720 = new StringBuilder();
        StringBuilder sw800 = new StringBuilder();
        StringBuilder w820 = new StringBuilder();


        try {
            System.out.println("       :");
            reader = new BufferedReader(new FileReader(file));
            String tempString;
            int line = 1;
            //       ,    null     

            while ((tempString = reader.readLine()) != null) {

                if (tempString.contains("")) {
                    //tempString = tempString.replaceAll(" ", "");
                    String start = tempString.substring(0, tempString.indexOf(">") + 1);
                    String end = tempString.substring(tempString.lastIndexOf("") + 1, tempString.indexOf("") - 2));

                    sw480.append(start).append((int) Math.round(num * 0.6)).append(end).append("
"); sw600.append(start).append((int) Math.round(num * 0.75)).append(end).append("
"); sw720.append(start).append((int) Math.round(num * 0.9)).append(end).append("
"); sw800.append(tempString).append("
"); w820.append(tempString).append("
"); } else { sw480.append(tempString).append("
"); sw600.append(tempString).append("
"); sw720.append(tempString).append("
"); sw800.append(tempString).append("
"); w820.append(tempString).append("
"); } line++; } reader.close(); System.out.println(""); System.out.println(sw480); System.out.println(""); System.out.println(sw600); System.out.println(""); System.out.println(sw720); System.out.println(""); System.out.println(sw800); String sw480file = "./app/src/main/res/values-sw480dp-land/dimens.xml"; String sw600file = "./app/src/main/res/values-sw600dp-land/dimens.xml"; String sw720file = "./app/src/main/res/values-sw720dp-land/dimens.xml"; String sw800file = "./app/src/main/res/values-sw800dp-land/dimens.xml"; String w820file = "./app/src/main/res/values-w820dp/dimens.xml"; writeFile(sw480file, sw480.toString()); writeFile(sw600file, sw600.toString()); writeFile(sw720file, sw720.toString()); writeFile(sw800file, sw800.toString()); writeFile(w820file, w820.toString()); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } 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(); } public static void main(String[] args) { gen(); } }

좋은 웹페이지 즐겨찾기