MST
星途 面试题库

面试题:Kotlin多窗口模式下如何获取分屏的尺寸信息

在Kotlin中,当应用处于多窗口分屏模式时,描述一下如何获取当前分屏窗口的尺寸信息,包括宽度和高度,需写出关键代码片段。
25.9万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

在Kotlin中,可以通过WindowInsets获取分屏窗口尺寸信息。以下是关键代码片段:

import android.os.Bundle
import android.view.View
import android.view.WindowInsets
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat

class MainActivity : AppCompatActivity() {

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

        val windowInsetsController = WindowInsetsControllerCompat(window, window.decorView)
        windowInsetsController.hide(WindowInsetsCompat.Type.statusBars())

        window.decorView.setOnApplyWindowInsetsListener { view, windowInsets ->
            val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
            val width = view.width - insets.left - insets.right
            val height = view.height - insets.top - insets.bottom

            val widthTextView: TextView = findViewById(R.id.widthTextView)
            val heightTextView: TextView = findViewById(R.id.heightTextView)
            widthTextView.text = "Width: $width"
            heightTextView.text = "Height: $height"

            WindowInsetsCompat.CONSUMED
        }
    }
}

在布局文件activity_main.xml中添加两个TextView用于显示宽度和高度:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/widthTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/heightTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:layout_marginTop="16dp" />

</LinearLayout>

以上代码通过监听WindowInsets变化来获取当前分屏窗口的宽度和高度,并在TextView中显示。