Android安卓进阶技巧之使用Compose实现Android的多屏异显功能

问题

Android平台上一直都支持多屏幕设备开发,使用android.app.Presentation可以快速的创建一个副屏显示页面但是只能使用传统的View布局,并不支持直接使用compose-ui,导致我们在开发多屏幕应用时无法统一UI框架。

幸运的是Android提供了DialogCompose实现方式,位于android.compose.ui:ui组件中的androidx.compose.ui.window.Dialog,而android.app.Presentation恰恰是继承自Dialog的一个子类,于是可以得出一个实现方案,魔改出一个androidx.compose.ui.window.Presentation就可以使用了。

解决方法

  • AndroidPresentation.android.kt

首先打开手机开发者选项->模拟辅助显示设备->720P,1080P(双屏)

截图_选择区域_20211202141653.png

打开后屏幕会显示出两个区域,这就是模拟的副屏,目前这个副屏无法提供手势操作,最好有实体的双屏设备来测试,比如微软的suface duo。

使用示例

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 获取所有的屏幕信息(主屏+副屏)
    displayManagerCompat.displays.also { ownDisplayList ->
        setContent { // 设置内容
            ownDisplayList.forEach { // 遍历屏幕
                if (it.displayId == Display.DEFAULT_DISPLAY) { // 是否为默认屏幕(主屏)
                    composeContent(it) // 组合屏幕UI
                } else {
                    // 使
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值