安卓适配探索

2018-04-25  本文已影响0人  大笨龙___

安卓适配一直是安卓开发者的一块心头大恨,还好安卓5.0提供了万能适配法,具体可参照张鸿阳的万能适配器,然而对于电视或者当下大火的物联网开发来说不一定行得通,因为物联网开发小伙伴的伴生机器还是4+,因此还是老老实实的用多个values 。


使用帮助:
1.创建其他values 资源文件和下面的dimin
2.启用核心代码(右键,以java 的方式运行,记得加文件读写权限),生成多少倍自己设定
基础知识普及
1.sw 
最小宽度为准,如实际屏幕是480*800 ,有values-sw900dp和values-sw720dp,values-sw420dp那么实际采用的就是values-sw420dp的dimin
2.sw和w
在资源:value-w1280dp,value-w800dp,时,横屏下使用value-w1280dp的资源,竖屏使用value-w800dp的资源。
在资源:value-sw800dp,value-sw1080dp时,横屏下使用value-sw800dp的资源,竖屏下仍然使用value-sw800dp的资源。
在上诉四中资源同时存在,则优先采用sw资源,value-sw800dp


//*************************************************************
  //核心代码
  public class DimenTool {

    public static void gen() {

        File file = new File("./app/src/main/res/values/dimens.xml");
        BufferedReader reader = null;
        StringBuilder sw900 = new StringBuilder();
        StringBuilder sw1024 = 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("</dimen>")) {
                    //tempString  =  tempString.replaceAll("  ",  "");
                    String start = tempString.substring(0, tempString.indexOf(">") + 1);
                    String end = tempString.substring(tempString.lastIndexOf("<") - 2);
                    int num = Integer.valueOf(tempString.substring(tempString.indexOf(">") + 1, tempString.indexOf("</dimen>") - 2));

                    sw900.append(start).append((int) Math.round(num * 1.2)).append(end).append("\n");
                    sw1024.append(start).append((int) Math.round(num * 1.5)).append(end).append("\n");

                } else {
                    sw900.append(tempString).append("\n");
                    sw1024.append(tempString).append("\n");
                }
                line++;
            }
            reader.close();

            String sw900file = "./app/src/main/res/values-sw900dp/dimens.xml";
            String sw1024file = "./app/src/main/res/values-sw1024dp/dimens.xml";
            writeFile(sw900file, sw900.toString());
            writeFile(sw1024file, sw1024.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();
    }
}
上一篇下一篇

猜你喜欢

热点阅读