美文网首页
安卓适配探索

安卓适配探索

作者: 大笨龙___ | 来源:发表于2018-04-25 09:41 被阅读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();
        }
    }
    

    相关文章

      网友评论

          本文标题:安卓适配探索

          本文链接:https://www.haomeiwen.com/subject/lsjelftx.html