You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android代码启动分屏模式时,能否控制分屏比例为30/70?

Android 分屏启动自定义30/70比例实现方案

结论

可以实现,但仅支持Android 12(API 31)及以上版本,低版本系统无官方API支持自定义启动时分屏比例。

可行实现方法(Android 12+)

Android 12引入了ActivityOptions.setLaunchBounds(Rect) API,可直接指定启动时Activity的窗口边界,以此控制分屏比例。具体步骤如下:

  1. 计算目标分屏区域的Rect
    根据屏幕尺寸计算30/70比例对应的边界,以横向分屏(左侧占30%)为例:

    val displayMetrics = resources.displayMetrics
    val screenWidth = displayMetrics.widthPixels
    val screenHeight = displayMetrics.heightPixels
    // 左侧30%宽度的分屏区域
    val launchBounds = Rect(0, 0, (screenWidth * 0.3).toInt(), screenHeight)
    
  2. 启动Activity时传入配置
    将计算好的launchBounds通过ActivityOptions传入启动逻辑:

    val intent = Intent(this, TargetActivity::class.java)
    val options = ActivityOptionsCompat.makeBasic()
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        options.launchBounds = launchBounds
    }
    startActivity(intent, options.toBundle())
    

为什么之前的方法无效?

  • manifest中的android:defaultHeight/android:maxHeight等标签:仅针对自由窗口模式,不作用于分屏模式。
  • Intent Flags:系统未提供控制分屏比例的Intent Flag。
  • ActivityOptionsCompat旧版本方法:Android 12之前的版本无相关API支持启动时分屏比例定制。

注意事项

  • 系统可能会限制极端比例:部分设备或定制系统会设置分屏最小宽度(如320dp),若30%比例的宽度低于该阈值,系统会自动调整到允许的最小范围。
  • 纵向分屏同理:若需要纵向分屏(顶部30%),只需调整Rect的上下边界即可。

低版本系统(Android 11及以下)

无官方API支持启动时自定义分屏比例,只能:

  • 接受系统默认的50/50比例启动;
  • 启动后引导用户手动调整分屏边界;
  • 通过辅助功能模拟手势调整(需权限,不推荐用于正式应用)。

内容的提问来源于stack exchange,提问作者Walter Rezende

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:20:17