Ver código fonte

1.强制旋转屏幕为180度

JaycePC 5 dias atrás
pai
commit
2eb5d8fb26

+ 4 - 8
app/src/main/java/core/ui/activity/BaseActivity.java

@@ -1,6 +1,5 @@
 package core.ui.activity;
 
-import android.content.pm.ActivityInfo;
 import android.graphics.Color;
 import android.os.Bundle;
 import android.view.View;
@@ -10,15 +9,11 @@ import androidx.appcompat.app.AppCompatActivity;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.viewbinding.ViewBinding;
 
-import com.blankj.utilcode.util.LogUtils;
+import com.hikvision.dmb.display.InfoDisplayApi;
 
 import core.ui.common.AbsUIDelegate;
 import core.ui.common.UIDelegateImpl;
-import core.util.ScreenAdapter;
 import io.reactivex.rxjava3.disposables.Disposable;
-import xn.xxp.room.RoomTool;
-import xn.xxp.room.bean.DeviceConfig;
-import xn.xxp.room.dao.DeviceConfigDao;
 
 public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActivity {
 
@@ -27,8 +22,10 @@ public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActi
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
+        if (2 != InfoDisplayApi.getScreenRotate()) {
+            InfoDisplayApi.setScreenRotate(2);
+        }
         super.onCreate(savedInstanceState);
-        ScreenAdapter.INSTANCE.setCustomDensity(this);
         uiDelegate = AbsUIDelegate.Companion.create();
         configImmersiveMode();
         binding = createViewBinding();
@@ -41,7 +38,6 @@ public abstract class BaseActivity<VB extends ViewBinding> extends AppCompatActi
     @Override
     protected void onResume() {
         super.onResume();
-        ScreenAdapter.INSTANCE.setCustomDensity(this);
     }
 
     @Override

+ 0 - 130
app/src/main/java/core/util/ScreenAdapter.kt

@@ -1,130 +0,0 @@
-package core.util
-
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.app.Application
-import android.content.ComponentCallbacks
-import android.content.Context
-import android.content.res.Configuration
-import android.util.DisplayMetrics
-
-/**
- * 屏幕适配
- *
- * @author ReiChin_
- */
-object ScreenAdapter {
-
-    private const val DEFAULT_WIDTH = 1080 // 默认宽度
-
-    private var appDensity = 0f
-
-    /**
-     * 字体的缩放因子,正常情况下和density相等,但是调节系统字体大小后会改变这个值
-     */
-    private var appScaledDensity = 0f
-
-    /**
-     * 状态栏高度
-     */
-    private var barHeight: Int = 0
-    private var appDisplayMetrics: DisplayMetrics? = null
-    private var densityScale = 1.0f
-
-    /**
-     * application 层调用,存储默认屏幕密度
-     */
-    fun initAppDensity(application: Application) {
-        // 获取application的DisplayMetrics
-        appDisplayMetrics = application.resources.displayMetrics
-        // 获取状态栏高度
-        barHeight = getStatusBarHeight(application)
-        if (appDensity == 0f) {
-            // 初始化的时候赋值
-            appDensity = appDisplayMetrics!!.density
-            appScaledDensity = appDisplayMetrics!!.scaledDensity
-            // 添加字体变化的监听
-            application.registerComponentCallbacks(object : ComponentCallbacks {
-
-                override fun onConfigurationChanged(newConfig: Configuration) {
-                    // 字体改变后,将appScaledDensity重新赋值
-                    if (newConfig.fontScale > 0) {
-                        appScaledDensity = application.resources.displayMetrics.scaledDensity
-                    }
-                }
-
-                override fun onLowMemory() {
-                }
-            })
-        }
-    }
-
-    /**
-     * 设置自定义的屏幕密度
-     */
-    fun setCustomDensity(activity: Activity) {
-        val targetDensity = appDisplayMetrics!!.widthPixels * 1.0f / DEFAULT_WIDTH
-
-        // 最后在这里将修改过后的值赋给系统参数,只修改Activity的density值
-        val activityDisplayMetrics = activity.resources.displayMetrics.apply {
-            density = targetDensity
-            scaledDensity = targetDensity * (appScaledDensity / appDensity)
-            densityDpi = (160 * targetDensity).toInt()
-        }
-
-        densityScale = appDensity / targetDensity
-        setBitmapDefaultDensity(activityDisplayMetrics.densityDpi)
-    }
-
-    /**
-     * 重置屏幕密度
-     */
-    fun resetAppDensity(activity: Activity) {
-        val activityDisplayMetrics = activity.resources.displayMetrics
-        activityDisplayMetrics.density = appDensity
-        activityDisplayMetrics.scaledDensity = appScaledDensity
-        activityDisplayMetrics.densityDpi = (appDensity * 160).toInt()
-
-        densityScale = 1.0f
-        setBitmapDefaultDensity(activityDisplayMetrics.densityDpi)
-    }
-
-    /**
-     * 获取状态栏高度
-     *
-     * @param context context
-     * @return 状态栏高度
-     */
-    private fun getStatusBarHeight(context: Context): Int {
-        val resourceId = context.resources.getIdentifier("status_bar_height", "dimen", "android")
-        return if (resourceId > 0) {
-            context.resources.getDimensionPixelSize(resourceId)
-        } else 0
-    }
-
-    /**
-     * 设置 Bitmap 的默认屏幕密度
-     * 由于 Bitmap 的屏幕密度是读取配置的,导致修改未被启用
-     * 所有,放射方式强行修改
-     * @param defaultDensity 屏幕密度
-     */
-    @SuppressLint("SoonBlockedPrivateApi")
-    private fun setBitmapDefaultDensity(defaultDensity: Int) {
-        try {
-            // 获取单个变量的值
-            val clazz = Class.forName("android.graphics.Bitmap")
-            val field = clazz.getDeclaredField("sDefaultDensity")
-            field.isAccessible = true
-            field.set(null, defaultDensity)
-            field.isAccessible = false
-        } catch (e: Exception) {
-            e.printStackTrace()
-        }
-    }
-
-    /**
-     * 屏幕密度缩放系数
-     */
-    fun getDensityScale() = densityScale
-
-}

+ 0 - 2
app/src/main/java/xn/xxp/app/LabApp.java

@@ -28,7 +28,6 @@ import coil.Coil;
 import coil.ComponentRegistry;
 import coil.ImageLoader;
 import coil.decode.SvgDecoder;
-import core.util.ScreenAdapter;
 import http.vo.response.LaboratoryVo;
 import http.vo.response.UserVo;
 import play.AppConfig;
@@ -72,7 +71,6 @@ public class LabApp extends Application {
                 Glide.get(LabApp.this).clearDiskCache();
             }
         });
-        ScreenAdapter.INSTANCE.initAppDensity(this);
         initLog();
         initCrash();
         initX5();