Commit b162c9b2 authored by kenan's avatar kenan

高度适配

parent ca18b39d
package cn.garymb.ygomobile;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Point;
import android.os.Environment;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;
......@@ -14,7 +12,6 @@ import org.json.JSONArray;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
......@@ -23,9 +20,7 @@ import java.util.Locale;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.preference.PreferenceFragmentPlus;
import cn.garymb.ygomobile.utils.DeckUtil;
import cn.garymb.ygomobile.utils.FileLogUtil;
import cn.garymb.ygomobile.utils.IOUtils;
import cn.garymb.ygomobile.utils.SystemUtils;
import static cn.garymb.ygomobile.Constants.CORE_DECK_PATH;
import static cn.garymb.ygomobile.Constants.CORE_EXPANSIONS;
......@@ -55,8 +50,9 @@ public class AppsSettings {
private static AppsSettings sAppsSettings;
private Context context;
private PreferenceFragmentPlus.SharedPreferencesPlus mSharedPreferences;
private float mScreenHeight, mScreenWidth, mDensity;
private float mDensity;
private final Point mScreenSize = new Point();
private final Point mRealScreenSize = new Point();
private AppsSettings(Context context) {
this.context = context;
......@@ -82,55 +78,11 @@ public class AppsSettings {
public void update(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point size = new Point();
//真实宽高
wm.getDefaultDisplay().getRealSize(size);
//应用尺寸
wm.getDefaultDisplay().getSize(mScreenSize);
//屏幕尺寸
wm.getDefaultDisplay().getRealSize(mRealScreenSize);
mDensity = context.getResources().getDisplayMetrics().density;
mScreenHeight = size.y;
mScreenWidth = size.x;
if (isImmerSiveMode() && context instanceof Activity) {
DisplayMetrics dm = SystemUtils.getHasVirtualDisplayMetrics((Activity) context);
if (dm != null) {
int height = Math.max(dm.widthPixels, dm.heightPixels);
Log.e("YGOMobileLog", "类地址" + System.identityHashCode(this));
int notchHeight = getNotchHeight();
try {
FileLogUtil.writeAndTime("是否沉浸: " + isImmerSiveMode());
FileLogUtil.writeAndTime("原始长: " + mScreenHeight);
FileLogUtil.writeAndTime("原始宽: " + mScreenWidth);
FileLogUtil.writeAndTime("界面长: " + dm.heightPixels);
FileLogUtil.writeAndTime("界面宽: " + dm.widthPixels);
FileLogUtil.writeAndTime("刘海长: " + notchHeight);
} catch (IOException e) {
e.printStackTrace();
}
height -= notchHeight;
try {
FileLogUtil.writeAndTime("处理后height值: " + height);
} catch (IOException e) {
e.printStackTrace();
}
if (mScreenHeight > mScreenWidth) {
mScreenHeight = height;
} else {
mScreenWidth = height;
}
try {
FileLogUtil.writeAndTime("转换后长: " + mScreenHeight);
FileLogUtil.writeAndTime("转换后宽: " + mScreenWidth);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public int getAppVersion() {
......@@ -141,17 +93,14 @@ public class AppsSettings {
mSharedPreferences.putInt(PREF_VERSION, ver);
}
public PreferenceFragmentPlus.SharedPreferencesPlus getSharedPreferences() {
return mSharedPreferences;
}
public float getSmallerSize() {
return mScreenHeight < mScreenWidth ? mScreenHeight : mScreenWidth;
}
public float getScreenWidth() {
return Math.min(mScreenWidth, mScreenHeight);
float w = getScreenWidth();
float h = getScreenHeight();
return h < w ? h : w;
}
public boolean isDialogDelete() {
......@@ -208,8 +157,33 @@ public class AppsSettings {
return mSharedPreferences.getBoolean(PREF_KEEP_SCALE, DEF_PREF_KEEP_SCALE);
}
public float getScreenWidth() {
int w, h;
if (isImmerSiveMode()) {
w = mRealScreenSize.x;
h = mRealScreenSize.y;
} else {
w = mScreenSize.x;
h = mScreenSize.y;
}
return Math.min(w, h);
}
public float getScreenHeight() {
return Math.max(mScreenWidth, mScreenHeight);
int w, h;
if (isImmerSiveMode()) {
w = mRealScreenSize.x;
h = mRealScreenSize.y;
} else {
w = mScreenSize.x;
h = mScreenSize.y;
}
int ret = Math.max(w, h);
if(isImmerSiveMode()){
//刘海高度
ret -= getNotchHeight();
}
return ret;
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment