屏幕适配

Posted feng8026

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了屏幕适配相关的知识,希望对你有一定的参考价值。

技术分享图片

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="@dimen/x160"
            android:layout_height="wrap_content"
            android:text="姓名"
            android:background="#00ff00"
            />
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="保存"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/img1"
        />
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/img2"
        />

</LinearLayout>

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
        <TextView
            android:layout_width="@dimen/x160"
            android:layout_height="wrap_content"
            android:text="姓名"
            android:background="#00ff00"
            />
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="保存"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/img1"
        />
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/img2"
        />

</LinearLayout>

 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.PrintWriter; 
 
public class MakeXml { 
 
    private final static String rootPath = "D:\\\\layoutroot\\\\values-{0}x{1}\\\\"; 
 
    private final static float dw = 320f; 
    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(240, 320); 
        makeString(320, 480); 
        makeString(480,800); 
        makeString(480, 854);  
        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 < 320; i++) { 
            sb.append(WTemplate.replace("{0}", i + "").replace("{1}", 
                    change(cellw * i) + "")); 
        } 
        sb.append(WTemplate.replace("{0}", "320").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 < 480; i++) { 
            sb2.append(HTemplate.replace("{0}", i + "").replace("{1}", 
                    change(cellh * i) + "")); 
        } 
        sb2.append(HTemplate.replace("{0}", "480").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; 
    } 
}








































































































































以上是关于屏幕适配的主要内容,如果未能解决你的问题,请参考以下文章

屏幕适配

smallestWidth 限定符适配 : 屏幕适配-插件:ScreenMatch

Android 屏幕适配屏幕适配基础概念 ① ( Android 与 iOS 屏幕宽高比种类 | 屏幕像素密度 DPI )

iOS屏幕适配(尺寸适配)

Android 屏幕适配

Android 屏幕适配总结