You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android中如何仅为平板设备启用Split-screen,而不支持移动设备

仅为Android平板启用分屏模式的实现方法

当然可以实现!在Android开发中,我们有几种实用的方案来限制分屏功能只对平板设备开放,下面给你逐一说明:

方法一:利用资源限定符配置Manifest属性

这是最简洁的声明式方案,通过Android的资源限定符,让系统根据设备类型自动加载对应的配置:

  • 在项目中创建平板专属的资源文件夹:res/values-sw600dpsw600dp代表最小屏幕宽度为600dp,是平板的典型阈值)
  • 在该文件夹下新建attrs.xml,添加如下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="allow_split_screen">true</bool>
</resources>
  • 在默认的res/values/attrs.xml中添加相反配置:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="allow_split_screen">false</bool>
</resources>
  • AndroidManifest.xml<application>或目标<activity>标签中引用这个属性:
<activity
    android:name=".MainActivity"
    android:allowSplitScreen="?attr/allow_split_screen">
    <!-- 其他配置 -->
</activity>

这样系统会自动为平板加载true值开启分屏,为手机加载false值禁用分屏。

方法二:代码动态判断设备类型并控制分屏

如果需要更灵活的逻辑(比如自定义平板判断规则),可以在代码中动态设置:

示例代码(Kotlin):

import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 自定义平板判断逻辑:最小屏幕宽度≥600dp视为平板
        val isTablet = resources.configuration.smallestScreenWidthDp >= 600
        
        // 仅对非平板设备禁用分屏(API 24及以上生效,分屏从Android N开始支持)
        if (!isTablet && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            setResizeableActivity(false)
        }
    }
}

注意事项:

  • setResizeableActivity()方法仅在API 24(Android 7.0)及以上可用,刚好对应分屏功能的最低支持版本
  • 你可以根据需求调整平板判断的阈值,比如用sw720dp来针对更大尺寸的平板

额外提示

如果你的应用targetSdkVersion低于24,分屏功能默认是禁用的,但现在大部分应用都会适配更高版本,所以建议结合上面的方法来做精准控制。

内容的提问来源于stack exchange,提问作者Nagulla. venugopalaswamy

火山引擎 最新活动