Android屏幕适配

简介: Android屏幕适配 Android屏幕适配的文章已经很多很多了,想看“大道理”的可以去搜搜,这里只介绍怎么用。

Android屏幕适配

Android屏幕适配的文章已经很多很多了,想看“大道理”的可以去搜搜,这里只介绍怎么用。

工具类

生成适配所有Android手机屏幕分辨率的适配文件

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;

/**
 * Created by kongqw on 2015/11/21.
 */
public class MakeXml {
    // 生成地址 C盘layoutroot目录下
    private final static String rootPath = "C:\\layoutroot\\values-{0}x{1}\\";

    /**
     * 设置基准分辨率
     * 一般标注按照多大的图标,这里我们就设置多大尺寸
     */
    private final static float dw = 720f;
    private final static float dh = 1280f;

    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(480, 800);
        makeString(480, 854);
        makeString(540, 960);
        makeString(600, 1024);
        makeString(720, 1184);
        makeString(720, 1196);
        makeString(720, 1280);
        makeString(768, 1024);
        makeString(800, 1280);
        makeString(1080, 1812);
        makeString(1080, 1920);
        makeString(1440, 2560);

    }

    public static void makeString(int w, int h) {

        StringBuffer sb = new StringBuffer();
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
        sb.append("<resources>");
        float cellw = w / dw;
        for (int i = 1; i < dw; i++) {
            sb.append(WTemplate.replace("{0}", i + "").replace("{1}", change(cellw * i) + ""));
        }
        sb.append(WTemplate.replace("{0}", "720").replace("{1}", w + ""));
        sb.append("</resources>");

        StringBuffer sb2 = new StringBuffer();
        sb2.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
        sb2.append("<resources>");
        float cellh = h / dh;
        for (int i = 1; i < dh; i++) {
            sb2.append(HTemplate.replace("{0}", i + "").replace("{1}", change(cellh * i) + ""));
        }
        sb2.append(HTemplate.replace("{0}", "1280").replace("{1}", h + ""));
        sb2.append("</resources>");

        String path = rootPath.replace("{0}", h + "").replace("{1}", w + "");
        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(sb.toString());
            pw.close();
            pw = new PrintWriter(new FileOutputStream(layyFile));
            pw.print(sb2.toString());
            pw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static float change(float a) {
        int temp = (int) (a * 100);
        return temp / 100f;
    }

}

生成适配文件

上述工具类(MakeXml.java)放置在任意目录下,按住Shift+鼠标右键,点击在此处打开命令窗口
或者
Windows键 + R,输入cmd,打开命令行窗口以后,再进入到MakeXml.java所在目录

我是把MakeXml.java放在了桌面

P1

输入编译指令,会生成.class文件

javac MakeXml.java

P4

在编译过程中,可能会出现如下错误

P2

右键使用文本编辑器,另存为,改下编码就行了

P3

最后一步,输入指令,生成xml文件

java MakeXml

如下

P5

到此,xml已经生成了,到C盘下看一下

P6

适配文件的使用

使用比较简单,直接将这些文件拷贝到工程目录下就可以了

P7

使用

android:layout_width="@dimen/x24"
android:layout_height="@dimen/y24"

在使用的时候,你可能会发现没有提示,找一个分辨率的适配文件,copy到默认的values目录下就可以了,一般标注按照什么尺寸的标注,就把那个尺寸的适配文件放过去就行了。

P8

相关文章
|
1月前
|
JavaScript Android开发
使用贝叶斯曲线滑动安卓屏幕(autojsPro7)
使用贝叶斯曲线滑动安卓屏幕(autojsPro7)
104 0
|
1月前
|
XML Java Android开发
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
75 0
|
9月前
|
编解码 开发工具 Android开发
Android平台RTSP轻量级服务|RTMP推送摄像头或屏幕之音频接口设计
好多开发者在做Android平台录像或者RTSP轻量级服务、RTMP推送相关模块时,对需要设计哪些常用接口会心存疑惑,本文主要以大牛直播SDK(官方)为例,简单介绍下Android平台直播推送SDK所有音频相关的接口,感兴趣的开发者可以看看。
|
1月前
|
编解码 Java Android开发
Android技能树 — 屏幕适配小结,2024年最新android开发环境搭建教程
Android技能树 — 屏幕适配小结,2024年最新android开发环境搭建教程
|
1月前
|
开发工具 Android开发
rk平台Android12屏幕永不休眠
rk平台Android12屏幕永不休眠
34 1
|
1月前
|
Shell Android开发
ADB更改Android设备屏幕显示方向
ADB更改Android设备屏幕显示方向
61 5
|
1月前
|
编解码 Android开发
Android 屏幕适配
Android 屏幕适配
43 4
|
1月前
|
Android开发
获取Android设备屏幕大小
获取Android设备屏幕大小
31 3
|
1月前
|
XML Java Android开发
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
Android系统 添加动态控制屏幕方向、强制APP横竖屏方向
93 1
|
1月前
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配