Screen adaptation + internationalization

1. Screen adaptation

1. Create a MakeXml class (mainly to generate the same unit of each mobile phone screen, run this page alone, let it automatically generate the file, and put the file in the project)

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class MakeXml {
    private final static String rootPath = "C:\\Users\\DELL-\\Desktop\\layoutroot\\values-{0}x{1}\\";
    private final static float dw = 1080f;
    private final static float dh = 1920f;
    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 < 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;
    }
}
 
 

As shown in the figure:

Save the generated file to the res directory and change the name to values-xxhdpi (most recent mobile phones use this value 1920*1080)

2. Write the layout (start adaptation)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="wangyanyong.packag.com.pingmu_shipei.MainActivity">
    <LinearLayout
        android:background="#03A9F4"
        android:gravity="center_vertical"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="@dimen/y45">
        <ImageView
            android:layout_marginLeft="@dimen/x7"
            android:src="@drawable/touxiang"
            android:layout_width="@dimen/x41"
            android:layout_height="@dimen/y41" />
        <TextView
            android:textColor="#ffffff"
            android:text="@string/title_name"
            android:textSize="16dp"
            android:layout_marginLeft="@dimen/x123"
            android:layout_width="@dimen/x33"
            android:layout_height="@dimen/y45" />
        <ImageView
            android:layout_marginLeft="@dimen/x130"
            android:src="@drawable/touxiang"
            android:layout_width="@dimen/x41"
            android:layout_height="@dimen/y45" />
    </LinearLayout>
    <ImageView
        android:src="@drawable/ad1"
        android:layout_width="match_parent"
        android:layout_height="@dimen/y138" />
</LinearLayout>
宽用@dimen/x45   设置(后面的45指的是美工标注的px值),高用@dimen/x45  (和宽一样)
适配完成


二、国际化

1、右键res目录 ——> new ——>Android resource directoy




它会弹出一个框 ,如上图

选择Locale 再点击 右边的  “ >> ” 按钮 






再选择 国家 、地区




如上图,我选择的是 美国  , 所有地区

之后点击 OK 

它会自动创建一个 values-en 文件夹  如图:



再把values文件夹下的string 粘贴到 values-en 中

国际化也就完成了。。。。。




Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324671991&siteId=291194637
Recommended