diff --git a/app/build.gradle b/app/build.gradle
index 55e2b82c6..79aeba4c4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -49,8 +49,8 @@ android {
enable true
reset()
- include "x86", "x86_64", "armeabi-v7a", "arm64-v8a"
- universalApk true //generate an additional APK that contains all the ABIs
+ include "arm64-v8a"
+
}
}
@@ -99,4 +99,5 @@ dependencies {
implementation 'androidx.annotation:annotation:1.6.0'
implementation 'androidx.drawerlayout:drawerlayout:1.2.0'
compileOnly project(':shell-loader:stub')
+
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1e001ac19..736b891d7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="internalOnly">
+
diff --git a/app/src/main/java/com/termux/x11/LoriePreferences.java b/app/src/main/java/com/termux/x11/LoriePreferences.java
index 4de4157e2..b3597949b 100644
--- a/app/src/main/java/com/termux/x11/LoriePreferences.java
+++ b/app/src/main/java/com/termux/x11/LoriePreferences.java
@@ -2,6 +2,11 @@
import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import android.os.Environment;
+import java.nio.file.Files;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import android.annotation.SuppressLint;
import android.app.Dialog;
@@ -83,6 +88,29 @@ public static class LoriePreferenceFragment extends PreferenceFragmentCompat imp
public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
addPreferencesFromResource(R.xml.preferences);
}
+
+ @Override
+ public void onDetach() {
+
+ // SharedPreferences sp = getContext().getSharedPreferences("com.eltechs.ed.CONTAINER_CONFIG_0", Context.MODE_PRIVATE);
+ SharedPreferences sp = android.preference.PreferenceManager.getDefaultSharedPreferences(getContext());
+ String res = null;
+ String mode = sp.getString("displayResolutionMode", "native");
+ if ("exact".equals(mode))
+ res = sp.getString("displayResolutionExact", "1280x1024");
+ else if("custom".equals(mode))
+ res = sp.getString("displayResolutionCustom", "1280x1024");
+ try {
+ File file = new File(Environment.getExternalStorageDirectory(), "Box64Droid/resolution.conf");
+ if (!file.exists())
+ file.createNewFile();
+ if (res != null && file.canWrite())
+ Files.write(file.toPath(),res.getBytes(StandardCharsets.UTF_8));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ super.onDetach();
+ }
@SuppressWarnings("ConstantConditions")
void updatePreferencesLayout() {
diff --git a/app/src/main/java/com/termux/x11/LorieView.java b/app/src/main/java/com/termux/x11/LorieView.java
new file mode 100644
index 000000000..b0cf72ba0
--- /dev/null
+++ b/app/src/main/java/com/termux/x11/LorieView.java
@@ -0,0 +1,72 @@
+package com.termux.x11;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.AttributeSet;
+import android.view.SurfaceView;
+
+import java.util.regex.PatternSyntaxException;
+
+public class LorieView extends SurfaceView {
+ public LorieView(Context context) {
+ super(context);
+ }
+
+ public LorieView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public LorieView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ public LorieView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ try {
+
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
+ boolean shouldResize = sp.getBoolean("should_full_screen_with_ratio", true); //full_screen_with_ratio是字符串类型了
+
+ float ratio; //宽除以高
+ String[] res = null;
+ switch (sp.getString("displayResolutionMode", "native")) {
+ case "exact": {
+ res = sp.getString("displayResolutionExact", "1280x1024").split("x");
+ break;
+ }
+ case "custom": {
+ try {
+ res = sp.getString("displayResolutionCustom", "1280x1024").split("x");
+ } catch (NumberFormatException | PatternSyntaxException ignored) {
+ }
+ break;
+ }
+ default:
+ break;
+ }
+
+ ratio = res != null ? Integer.parseInt(res[0]) * 1.0f / Integer.parseInt(res[1]) : 0f;
+
+ if (ratio != 0 && shouldResize) {
+ int width = MeasureSpec.getSize(widthMeasureSpec);
+ int height = MeasureSpec.getSize(heightMeasureSpec);
+ //左右黑边
+ if (width * 1f / height > ratio) {
+ widthMeasureSpec = MeasureSpec.makeMeasureSpec((int) (height * ratio), MeasureSpec.EXACTLY);
+ }
+ //上下黑边
+ else {
+ heightMeasureSpec = MeasureSpec.makeMeasureSpec((int) (width / ratio), MeasureSpec.EXACTLY);
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+}
diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml
index 322f30b56..5759d920d 100644
--- a/app/src/main/res/layout/main_activity.xml
+++ b/app/src/main/res/layout/main_activity.xml
@@ -6,6 +6,7 @@
android:layout_height="match_parent">
-
+
+