Android-------手机屏幕适配,文件适配

public class Main {
        //定义文件本地存储路径,可按照需求更改
        private final static String rootPath = "D:\\workfiles\\layoutroot\\values-{0}x{1}";
    
        /** 横轴方向分为320份 */
        private final static float dw = 320f;
        /** 纵轴方向分为480份 */
        private final static float dh = 480f;
    
        /** 宽度的模板 */
        private final static String WTemplate = "<dimen name=\"x{0}\">{1}px</dimen>\n";
        /** 高度的模板 */
        private final static String HTemplate = "<dimen name=\"y{0}\">{1}px</dimen>\n";
    
        public static void main(String[] args) {
            //就适配了三个分辨率的手机屏幕
            makeString(320, 480);
            makeString(720, 1280);
            makeString(1080, 1920);
        }
        
        /**
         * 生成对应分辨率的dimen文件
         * 
         * @param width
         *            手机屏幕x方向的像素数量
         * @param height
         *            手机屏幕y方向的像素数量
         */
        private static void makeString(int width, int height) {
            StringBuffer sbWidth = new StringBuffer();
            sbWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
            sbWidth.append("<resources>");
            float cellw = width / dw;
            for (int i = 0; i < dw; i++) {
                sbWidth.append(WTemplate.replace("{0}", i + "").replace("{1}",
                        change(cellw * i) + ""));
            }
            sbWidth.append(WTemplate.replace("{0}", "320").replace("{1}",
                    width + ""));
            sbWidth.append("</resources>");
    
            StringBuffer sbHeight = new StringBuffer();
            sbHeight.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
            sbHeight.append("<resources>");
            float cellh = height / dh;
            for (int i = 0; i < dh; i++) {
                sbHeight.append(HTemplate.replace("{0}", i + "").replace("{1}",
                        change(cellh * i) + ""));
            }
            sbHeight.append(HTemplate.replace("{0}", "480").replace("{1}",
                    height + ""));
            sbHeight.append("</resources>");
    
            String path = rootPath.replace("{0}", height + "").replace("{1}",
                    width + "");
            File rootFile = new File(path);
            if (!rootFile.exists()) {
                rootFile.mkdirs();
            }
    
            File layxFile = new File(path + "\\lay_x.xml");
            File layyFile = new File(path + "\\lay_y.xml");
    
            try {
                PrintWriter pw = new PrintWriter(new FileOutputStream(layxFile));
                pw.print(sbWidth.toString());
                pw.close();
                pw = new PrintWriter(new FileOutputStream(layyFile));
                pw.print(sbHeight.toString());
                pw.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
        /**
         * 将浮点数小数点后保留两位小数
         */
        private static float change(float a) {
            int temp = (int) (a * 100);
            return temp / 100f;
        }

}

将生成的values文件复制到工程的res下,

使用用例:
android:layout_width="@dimen/x160"

时间: 2024-11-07 08:56:23

Android-------手机屏幕适配,文件适配的相关文章

android 使用asm.jar将android手机屏幕投影到电脑上

使用asm.jar将Android手机屏幕投影到电脑 有时候可能需要将手机上的一些操作投影出来,比如一些App Demo的展示等.其实,有专门的硬件设备能干这件事儿,但没必要专门为展示个Demo去花钱买硬件设备.正好,对于Android系统的手机,有一个开源的jar包能干这事儿:Android Screen Monitor(asm.jar),官网 https://code.google.com/p/android-screen-monitor/  . 1.到官网下载ASM的zip包,解压后得到a

终结者:电脑显示Android手机屏幕之asm.jar工具正确的使用方法

1.asm.jar的作用: 提到asm.jar的作用,那么最显著的莫过于计算机显示Android手机屏幕了:其次可以调整计算机上显示Android手机屏幕的大小(好多人都没有发现这个功能):再者可以选择不同的显示的Android手机设备:还可以设置手机显示屏幕的方向:还可以截取手机的屏幕:等等等. 2.下载asm.jar: 网上下载asm.jar的链接有很多,但需要说明的是有一些是病毒,这里提供一个安全的下载链接地址(下载下来的压缩文件不仅包含了asm.jar,而且还有其实现的源码):http:

Unity3D Android手机屏幕分辨率问题

Android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式:unity3D 也为我们提供了一个不错的解决方案. 在Unity3D 进行 android 游戏开发时,对于不同分辨率下的显示效果就像是摄像机的自动平移了一般,看了不少游戏,对于 Unity3D 开发 android 游戏貌似都没有做相应的屏幕分辨率的处理,而是随摄像机的自动移动,把场景做大些不至于出现空白背景. 其实 Unity3D 开发3D游戏,对于不同的分辨率,我们只需要设置 1

Android手机修改hosts文件

有的时候,我们需要在内网环境测试软件,内网将域名解析的时候比较麻烦,Android手机直接修改hosts文件可以带来方便. hosts文件的作用实际上就是讲域名解析为ip地址,比如你的hosts文件里面存在192.168.4.77 ppo.xxuo.cn那么当你手机访问ppo.xxuo.cn的时候,服务器地址就会被解析为192.168.4.77,如果hosts文件没有内容,则采用DNS服务器的数据解析域名. 进入正题,修改Android手机的hosts步骤:1.root:2.修改hosts文件权

android 手机屏幕解锁最多有多少种?

  这个十分有趣的题目出自知乎http://www.zhihu.com/question/24905007/answer/29414497 ,排名第一的知友的答案用python简洁的给出了代码和答案,枉费我用C++ 鼓捣了半天... 不过也不能算是白做,还是有颇多收获的. 先准确描述一下这个问题解决思路: 这题目本质就是计算排列: 定义一个函数 permutation(n.m) :从n个数中选m个进行全排列 我们要计算的就是        1. Σ permutation(9,i) (i从1到9

Android手机屏幕流畅投影到电脑进行演示(无需Root)

最近要在公司的会议上演示App,需要在投影仪上显示出来给大家演示.由于投影仪不是智能投影仪,只能将App先投影到自己的笔记本上,然后再将笔记本上的内容投影到投影仪上.该App是个游戏,实时交互性比较高,之前试过一些各种手机助手,比如腾讯的应用宝.360手机助手.豌豆荚手机助手等,这些手机助手可以在电脑上显示手机屏幕,但是非常卡顿,基本没法演示游戏App.我的手机是小米Note,最开始的时候用的是Android 4.4的系统,当时可以用小米助手链接小米Note,小米助手可以在PC上相对来说比较流畅

[email&#160;protected]:在PC屏幕上显示Android手机屏幕

这里介绍一款工具——[email protected],用来获取手机屏幕,显示在PC屏幕上.它集截图.录像等多种功能于一体. 安装 1.    下载地址:http://droid-at-screen.org/download.html,下载后是一个jar包,放到某个目录就可以. 2.    安装JDK6或以上版本 3.    安装Android SDK(从Android官方下载一个完整包解压即可) 4.    设置ANDROID_HOME环境变量指向AndroidSDK主目录(这步如果不做,则需

android 使用asm.jar将android手机屏幕投射到电脑

使用asm.jar将Android手机到电脑屏幕投影 有时候可能须要将手机上的一些操作投影出来,比方一些App Demo的展示等.事实上,有专门的硬件设备能干这件事儿.但不是必需专门为展示个Demo去花钱买硬件设备.正好,对于Android系统的手机.有一个开源的jar包能干这事儿:Android Screen Monitor(asm.jar),官网 https://code.google.com/p/android-screen-monitor/  . 1.到官网下载ASM的zip包,解压后得

Android手机屏幕投射到电脑神器Vysor

做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机画面同步 Vysor是chrome浏览器的应用,因此先要下载原版的chrome,并且还要使用chrome应用商店,如何fq使用应用商店大家可以百度 软件打开后是这么个样子 PS:win10要安装最新的ADB驱动,软件界面下方有提供下载链接 然后是手机的准备,首先,开启usb调试模式 然后用usb线把

分享 Android 手机屏幕录制并制作成 GIF 演示图片

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42506741 --学之开源,用于开源:初学者的心态,与君共勉! ================================