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
}
}`