From 15aacdc4e1c7d30f280e474cd795af04810a8979 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 22 Feb 2023 11:57:21 +0800 Subject: [PATCH] [mobile] support autosize --- app/build.gradle | 2 +- .../java/com/fongmi/android/tv/Product.java | 13 ++----- .../android/tv/ui/activity/BaseActivity.java | 37 ++++++++++++++++++- app/src/mobile/AndroidManifest.xml | 10 ++++- .../java/com/fongmi/android/tv/Product.java | 16 +++----- 5 files changed, 55 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7d404a1e2..082f4b6c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -83,6 +83,7 @@ dependencies { implementation 'com.google.zxing:core:3.3.0' implementation 'com.guolindev.permissionx:permissionx:1.7.1' implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10' + implementation 'me.jessyan:autosize:1.2.1' implementation 'net.java.dev.jna:jna:5.12.1' implementation 'org.apache.commons:commons-compress:1.20' implementation 'org.chromium.net:cronet-embedded:101.4951.41' @@ -90,7 +91,6 @@ dependencies { implementation 'org.nanohttpd:nanohttpd:2.3.1' implementation('org.simpleframework:simple-xml:2.7.1') { exclude group: 'stax', module: 'stax-api' exclude group: 'xpp3', module: 'xpp3' } leanbackImplementation 'androidx.leanback:leanback:1.2.0-alpha02' - leanbackImplementation 'me.jessyan:autosize:1.2.1' annotationProcessor 'androidx.room:room-compiler:2.5.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2' } \ No newline at end of file diff --git a/app/src/leanback/java/com/fongmi/android/tv/Product.java b/app/src/leanback/java/com/fongmi/android/tv/Product.java index 83156e5a5..61c790bfd 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/Product.java +++ b/app/src/leanback/java/com/fongmi/android/tv/Product.java @@ -9,15 +9,6 @@ import me.jessyan.autosize.AutoSizeCompat; public class Product { - public static Resources hackResources(Resources resources) { - try { - AutoSizeCompat.autoConvertDensityOfGlobal(resources); - return resources; - } catch (Exception ignored) { - return resources; - } - } - public static int getColumn() { return Math.abs(Prefers.getSize() - 7); } @@ -25,4 +16,8 @@ public class Product { public static void bootLive() { LiveActivity.start(App.activity()); } + + public static int getSizeInDp(boolean land) { + return land ? AutoSizeConfig.getInstance().getDesignWidthInDp() : AutoSizeConfig.getInstance().getDesignHeightInDp(); + } } diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java index a672ddb9c..10a519982 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java @@ -1,10 +1,12 @@ package com.fongmi.android.tv.ui.activity; import android.app.Activity; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewbinding.ViewBinding; @@ -22,12 +24,18 @@ import org.greenrobot.eventbus.ThreadMode; import java.io.File; -public abstract class BaseActivity extends AppCompatActivity { +import me.jessyan.autosize.AutoSizeCompat; +import me.jessyan.autosize.internal.CustomAdapt; + +public abstract class BaseActivity extends AppCompatActivity implements CustomAdapt { protected abstract ViewBinding getBinding(); + private boolean land; + @Override protected void onCreate(Bundle savedInstanceState) { + land = ResUtil.isLand(this); super.onCreate(savedInstanceState); setContentView(getBinding().getRoot()); EventBus.getDefault().register(this); @@ -56,6 +64,15 @@ public abstract class BaseActivity extends AppCompatActivity { } } + private Resources hackResources(Resources resources) { + try { + AutoSizeCompat.autoConvertDensityOfCustomAdapt(resources, this); + return resources; + } catch (Exception ignored) { + return resources; + } + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshEvent(RefreshEvent event) { if (event.getType() != RefreshEvent.Type.WALL) return; @@ -65,7 +82,7 @@ public abstract class BaseActivity extends AppCompatActivity { @Override public Resources getResources() { - return Product.hackResources(super.getResources()); + return hackResources(super.getResources()); } @Override @@ -73,4 +90,20 @@ public abstract class BaseActivity extends AppCompatActivity { super.onDestroy(); EventBus.getDefault().unregister(this); } + + @Override + public void onConfigurationChanged(@NonNull Configuration newConfig) { + super.onConfigurationChanged(newConfig); + land = ResUtil.isLand(this); + } + + @Override + public boolean isBaseOnWidth() { + return true; + } + + @Override + public float getSizeInDp() { + return Product.getSizeInDp(land); + } } diff --git a/app/src/mobile/AndroidManifest.xml b/app/src/mobile/AndroidManifest.xml index 590a40874..39ceb3b27 100644 --- a/app/src/mobile/AndroidManifest.xml +++ b/app/src/mobile/AndroidManifest.xml @@ -4,6 +4,14 @@ + + + + diff --git a/app/src/mobile/java/com/fongmi/android/tv/Product.java b/app/src/mobile/java/com/fongmi/android/tv/Product.java index 13907a1df..abb446c2b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/Product.java +++ b/app/src/mobile/java/com/fongmi/android/tv/Product.java @@ -1,20 +1,12 @@ package com.fongmi.android.tv; import android.app.Activity; -import android.content.res.Resources; import com.fongmi.android.tv.utils.ResUtil; -public class Product { +import me.jessyan.autosize.AutoSizeConfig; - public static Resources hackResources(Resources resources) { - try { - //AutoSizeCompat.autoConvertDensityOfGlobal(resources); - return resources; - } catch (Exception ignored) { - return resources; - } - } +public class Product { public static int getColumn(Activity activity) { return ResUtil.isPort(activity) ? 3 : 6; @@ -22,4 +14,8 @@ public class Product { public static void bootLive() { } + + public static int getSizeInDp(boolean land) { + return land ? AutoSizeConfig.getInstance().getDesignHeightInDp() : AutoSizeConfig.getInstance().getDesignWidthInDp(); + } }