等比例屏幕適配

package com.tencent.webdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

// 需要支持的屏幕尺寸(高x寬)

// private String supportDimensions = "1920x1080,2094x1080,2220x1080,1280x720,2030x1080,2560x1440," +
// "2076x1080,1776x1080,2118x1080,2392x1440,2218x1080,2040x1080,1808x1080,2150x1080,2116x1080," +
// "2016x1080,1812x1080,2792x1440,1344x720,1794x1080,2058x1080,2008x1080,1184x720,2672x1440,2712x1440," +
// "2034x1080,2960x1440,1360x720,2048x1536,1280x800,2154x1080,1758x1080,2114x1080,2004x1080,1208x720," +
// "2240x1080,1802x1080,2160x1080,2768x1440,2244x1080,1980x1080,1920x1200" + "2560x1600,2678x1440,2038x1080," +
// "1384x720,2412x1440,1320x720,1998x1080,1792x1080,1024x768,2190x1080,2371x1440,2074x1080,2400x1440,960x540," +
// "1788x1080,1798x1080,2009x1080,1232x800,2417x1440,2452x1600,1216x800,2368x1440,1480x720,2340x1080,800x480," +
// "2214x1080,2952x1440,1358x720,2280x1080,1952x1536,2140x1080,2052x1080,1184x768,888x480,1332x720,1824x1200," +
// "2200x1080,2032x1080,2733x1440,1080x2009,2646x1440,2454x1600,1396x720,2316x1080,1368x720";
private String supportDimensions = "1576x840";
// 上下文
private Context mContext;
// 異步任務
private MarkTask mMarkTask = null;

/**
 * 1.首先點擊按鈕生成xml文件
 * 2.然後在手機本地文件夾中找到res目錄
 * 3.把手機本地res目錄下的文件全部拷貝到項目中的res文件中即可
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    requestPermission();
    mContext = this;
    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d("TAG", "分辨率總數量:" + supportDimensions.split(",").length);
            if (mMarkTask == null) {
                mMarkTask = new MarkTask();
            }
            if (mMarkTask.getStatus() != AsyncTask.Status.RUNNING) {
                mMarkTask.execute();
            }
        }
    });


}

/**
 * 異步任務
 */
@SuppressLint("StaticFieldLeak")
private class MarkTask extends AsyncTask<String, String, String> {
    @Override
    protected String doInBackground(String... strings) {
        /**
         * 如果不需要生成默認的dp值,上下文傳null即可
         */
        // com.wyq.markXml.MarkXmlUtil.markXmlFile(null, 720, 1280, supportDimensions);
        /**
         * 參數一:傳遞context,可以生成默認的dp值(當設備找不到指定分辨率的資源文件時,可使用默認dp值),默認dp值是根據基本尺寸來定義的
         * 參數二:基本寬度(UI作圖的寬度)
         * 參數三:基本高度(UI作圖的高度)
         * 參數四:自定義需要支持適配的屏幕分辨率(高x寬加逗號隔開)
         * 參數五:是否需要支持負數?true代表支持,false代表不需要支持
         */
        // 例如,我們公司的UI設計師是在1920x1080分辨率上做效果圖,則傳入相對應的分辨率尺寸
        com.wyq.markXml.MarkXmlUtil.markXmlFile(mContext, 1896, 976, supportDimensions, true);
        /**
         * 文件全部生產完畢,也添加完畢,現在應該怎麼使用呢?
         * 你會發現,如果你公司的UI設計師是在720x1280屏幕分辨率上作圖時,你傳入的基本寬度應該是720,你傳入的基本高度應該是1280
         * 這個時候,你會發現在res/values-1280x720文件夾裏的不論是寬還是高,它們的name和value是一致的,而在其他values下的name和value是不一致的,
         * 其實這就是適配效果,你只需要傳入720x1280分辨率上的大小即可自動適配完成,因爲當你傳入720x1280上的值後,它在其他分辨率上相對應的尺寸也會被計算出來。
         */
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Toast.makeText(mContext, "生成xml文件完畢!", Toast.LENGTH_SHORT).show();
        Log.e("TAG", "onPostExecute: 生成xml文件完畢" );
        mMarkTask = null;
    }
}

private void requestPermission() {


    if (!PermissionManager.getInstance().isPermissionGranted(this)) {
        Log.e("requestPermission", "重新請求權限申請");
        PermissionManager.getInstance().requestPermission(this);
    } else {
        Log.e("requestPermission", "requestPermission: is ok");
    }
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章