android折叠屏仿微信适配

1.assets 目录下 ,添加easygo.json

  "easyGoVersion": "1.0",
  "client": "com.biu.copilot",
  "logicEntities": [
    {
      "head": {
        "function": "magicwindow",
        "required": "true"
      },
      "body": {
        "mode": "1",
        "defaultDualActivities": {
            主页在左边
          "mainPages": "com.54.554.MainActivity",
          //右边用一张图的actity
          "relatedPage": "com.54.554.activity.MainRightActivity"
        },

        "activityPairs": [
          {
          主页进入其他页面,主页在左边,其他页在右边
            "from": "com.54.554.MainActivity",
            "to": "*"
          },
          {
            "from": "com.54.554.activity.LoginActivity",
            "to": "*"
          }
        ],
        "Activities": [
          {
          //登录界面全屏
            "name": "com.54.554.activity.LoginActivity",
            "defaultFullScreen": "true"
          },
          {
          在这个界面打开其他界面 会SettingActivit移动左边,新界面移动右边
            "name": "com.54.554.SettingActivity",
            "lockSide": "primary"
          }
        ]

      }
    }
  ]
}
在这里插入代码片

2.最后一定要开平行视界的权限哦,否则不生效

3.如果用了今日头条的适配,

        AutoSizeConfig.getInstance()
            .setOnAdaptListener(object : onAdaptListener {
                override fun onAdaptBefore(target: Any, activity: Activity) {
                    if (activity == null) {
                        return
                    }


                    AutoSizeConfig.getInstance()
                        .setExcludeFontScale(true) //是否排除系统字体的影响
                        .setUseDeviceSize(false)  //是否使用机型自带的字体配置
                        .setLog(BuildConfig.DEBUG) //是否打印日志
                        .setCustomFragment(true)


                    /*判断屏幕宽高比是否为大屏*/if (
                        FoldUtils.isLargeScreen(activity)) {
                        LogUtils.e("大屏:")
                        /*判断window宽高比是否为大窗口*/
                        if (FoldUtils.isLargeWindow(activity)) {

                            /*判断横竖屏*/
                            if (activity.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                                //LogUtils.e("大窗口1")
                                /*大屏-大窗口-横屏设计尺寸*/

                                AutoSizeConfig.getInstance()
                                    .setDesignWidthInDp(1556)  //设置设计图的宽度,单位dp
                                    .setDesignHeightInDp(1395) //设置设计图的高度,单位dp

                            } else {
                              //  LogUtils.e("大窗口2")
                                /*大屏-大窗口-竖屏设计尺寸*/
                                AutoSizeConfig.getInstance()
                                    .setDesignWidthInDp(1395)  //设置设计图的宽度,单位dp
                                    .setDesignHeightInDp(1556) //设置设计图的高度,单位dp

                            }
                        } else {
                            if (activity.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                                LogUtils.e("小窗口1")
                                /*大屏-小窗口-横屏设计尺寸*/
                                AutoSizeConfig.getInstance()
                                    .setDesignWidthInDp(812)  //设置设计图的宽度,单位dp
                                    .setDesignHeightInDp(375)

                            } else {
                                LogUtils.e("小窗口2")
                                /*大屏-小窗口-竖屏设计尺寸*/
                                AutoSizeConfig.getInstance()
                                    .setDesignWidthInDp(375)  //设置设计图的宽度,单位dp
                                    .setDesignHeightInDp(812)
                            }
                        }
                    } else {

                      //  LogUtils.e("小屏幕:"+StatusBar.getScreenWidth(AppGlobalss.getApplication()))
                        /*小屏通常禁止旋转,仅设置竖屏设计尺寸即可*/
                        /*特殊情况:平行视窗下只能拿到当前activity的显示区域宽高,会被判定为小屏*/

                        AutoSizeConfig.getInstance()
                            .setDesignWidthInDp(375)  //设置设计图的宽度,单位dp
                            .setDesignHeightInDp(812)
                    }
                }

                override fun onAdaptAfter(target: Any, activity: Activity) {
                  //  LogUtils.e("监听改了啊")

                }
            })

4.下面是两个用到方法

``object FoldUtils {

fun isLargeWindow(activity: Activity?): Boolean {
    if (activity == null) {
        return false
    }
    var longSide = 0f
    var shortSide = 0f
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        val windowMetrics = activity.windowManager.currentWindowMetrics
        val windowRect = windowMetrics.bounds
        longSide = max(windowRect.width(), windowRect.height()).toFloat()
        shortSide = min(windowRect.width(), windowRect.height()).toFloat()
    } else {
        val widthPixels = activity.resources.displayMetrics.widthPixels
        val heightPixels = activity.resources.displayMetrics.heightPixels
        longSide = max(widthPixels, heightPixels).toFloat()
        shortSide = min(widthPixels, heightPixels).toFloat()
    }
    val isLargeWindow: Boolean = longSide / shortSide < 15 / 9.0
    // Log.i("isLargeWindow", "longSide" + longSide + "shortSide" + shortSide)
    return isLargeWindow
}
fun isLargeScreen(activity: Activity?): Boolean {
    if (activity == null) {
        return false
    }
    var longSide = 0f
    var shortSide = 0f
    val screenSize: IntArray = me.jessyan.autosize.utils.ScreenUtils.getScreenSize(activity)
    longSide = max(screenSize[0], screenSize[1]).toFloat()
    shortSide = min(screenSize[0], screenSize[1]).toFloat()
    return longSide / shortSide < 15 / 9.0
}

}`


  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值