赞
踩
有些定制化的安卓板,有时候往往不止一个显示屏,从安卓4.2开始就有多屏的概念。
1.获取当前系统所有屏幕信息:
- val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
- val displays: Array<Display> = displayManager.displays
- //获取屏幕个数
- val screenCount: Int = displays.size
- Log.e("TAG", "screenCount======${screenCount}")
- //循环获取所有屏幕信息
- for (display in displays) {
- val displayId = display.displayId
- val displayName = display.name
- val displayWidth = display.width
- val displayHeight = display.height
- Log.e("TAG", "displayId======${displayId}")
- Log.e("TAG", "displayName======${displayName}")
- Log.e("TAG", "displayWidth======${displayWidth}")
- Log.e("TAG", "displayHeight======${displayHeight}")
- }
2.关于多屏,需要引进一个叫做 Presentation的东西, Presentation 是扩展自 dialog.相当于一个升级版的弹窗,其实还是在同一个activity里面完成的,两个屏幕里面的内容,可以通过同一个activity进行控制和相关数据变动展示。在副屏上显示不同内容。它的显示内容是依附在主屏的Activity上的,如果Activity被销毁Presentation也不会再显示,多屏也是支持的,接下来看我怎么操作多屏。
比如我有三个屏:分别为一个主屏以及两个副屏,先创建两个Presentation
- package com.example.test;
-
- import android.app.Presentation;
- import android.content.Context;
- import android.os.Build;
- import android.os.Bundle;
- import android.view.Display;
-
- import androidx.annotation.RequiresApi;
-
- @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
- public class BuiltInPresentation extends Presentation {
-
-
- public BuiltInPresentation(Context outerContext, Display display) {
- super(outerContext, display);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // 设置内置屏幕的布局和内容
- setContentView(R.layout.disactivity);
- }
- }
- package com.example.test;
-
- import android.app.Presentation;
- import android.content.Context;
- import android.media.MediaPlayer;
- import android.os.Build;
- import android.os.Bundle;
- import android.view.Display;
- import android.widget.VideoView;
-
- import androidx.annotation.RequiresApi;
-
- @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
- public class BuiltInPresentation2 extends Presentation {
-
- public BuiltInPresentation2(Context outerContext, Display display) {
- super(outerContext, display);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- // 设置内置屏幕的布局和内容
- setContentView(R.layout.disactivity2);
- }
- }
3.我们继续看主Activity
- package com.example.test
-
- import android.annotation.SuppressLint
- import android.content.Context
- import android.hardware.display.DisplayManager
- import android.os.Build
- import android.os.Bundle
- import android.util.Log
- import android.view.Display
- import android.widget.SeekBar
- import androidx.annotation.RequiresApi
- import androidx.appcompat.app.AppCompatActivity
- import kotlinx.android.synthetic.main.activity_main.*
- import java.util.*
-
-
- class MainActivity : AppCompatActivity() {
-
- private var builtInPresentation: BuiltInPresentation? = null
- private var builtInPresentation2: BuiltInPresentation2? = null
-
- @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- setContentView(R.layout.activity_main)
-
- val displayManager =
- getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
- val displays: Array<Display> = displayManager.displays
- for (display in displays) {
- val displayId = display.displayId
- val displayName = display.name
- val displayWidth = display.width
- val displayHeight = display.height
- Log.e("TAG", "displayId======${displayId}")
- Log.e("TAG", "displayName======${displayName}")
- Log.e("TAG", "displayWidth======${displayWidth}")
- Log.e("TAG", "displayHeight======${displayHeight}")
- val screenCount: Int = displays.size
- Log.e("TAG", "screenCount======${screenCount}")
- }
-
-
-
- builtInPresentation = BuiltInPresentation(this, displays[1])
- builtInPresentation!!.show()
-
-
-
- builtInPresentation2 = BuiltInPresentation2(this, displays[2])
- builtInPresentation2!!.show()
- }
-
- override fun onDestroy() {
- super.onDestroy()
- // 在Activity销毁时,确保隐藏和释放Presentation
- if (builtInPresentation != null) {
- builtInPresentation!!.dismiss()
- builtInPresentation = null
- }
-
- if (builtInPresentation2 != null) {
- builtInPresentation2!!.dismiss()
- builtInPresentation2 = null
- }
- }
- }
到这里,你们大概应该都看懂了,我直接在主activity里面调用两个Presentation类,传入不同的屏信息,设置不同的屏内容。这里需要注意你的主屏是第几个,否则有可能不生效!一般的主屏都是displays[0],就是主activity显示的界面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。