面试题答案
一键面试在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
中显示。