当前位置:   article > 正文

安卓多屏异显_vendor.display.builtin_presentation=1

vendor.display.builtin_presentation=1

有些定制化的安卓板,有时候往往不止一个显示屏,从安卓4.2开始就有多屏的概念。

1.获取当前系统所有屏幕信息:
  1. val displayManager = getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
  2. val displays: Array<Display> = displayManager.displays
  3. //获取屏幕个数
  4. val screenCount: Int = displays.size
  5. Log.e("TAG", "screenCount======${screenCount}")
  6. //循环获取所有屏幕信息
  7. for (display in displays) {
  8. val displayId = display.displayId
  9. val displayName = display.name
  10. val displayWidth = display.width
  11. val displayHeight = display.height
  12. Log.e("TAG", "displayId======${displayId}")
  13. Log.e("TAG", "displayName======${displayName}")
  14. Log.e("TAG", "displayWidth======${displayWidth}")
  15. Log.e("TAG", "displayHeight======${displayHeight}")
  16. }
 2.关于多屏,需要引进一个叫做 Presentation的东西, Presentation 是扩展自 dialog.相当于一个升级版的弹窗,其实还是在同一个activity里面完成的,两个屏幕里面的内容,可以通过同一个activity进行控制和相关数据变动展示。在副屏上显示不同内容。它的显示内容是依附在主屏的Activity上的,如果Activity被销毁Presentation也不会再显示,多屏也是支持的,接下来看我怎么操作多屏。

比如我有三个屏:分别为一个主屏以及两个副屏,先创建两个Presentation

  1. package com.example.test;
  2. import android.app.Presentation;
  3. import android.content.Context;
  4. import android.os.Build;
  5. import android.os.Bundle;
  6. import android.view.Display;
  7. import androidx.annotation.RequiresApi;
  8. @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
  9. public class BuiltInPresentation extends Presentation {
  10. public BuiltInPresentation(Context outerContext, Display display) {
  11. super(outerContext, display);
  12. }
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. // 设置内置屏幕的布局和内容
  17. setContentView(R.layout.disactivity);
  18. }
  19. }

  1. package com.example.test;
  2. import android.app.Presentation;
  3. import android.content.Context;
  4. import android.media.MediaPlayer;
  5. import android.os.Build;
  6. import android.os.Bundle;
  7. import android.view.Display;
  8. import android.widget.VideoView;
  9. import androidx.annotation.RequiresApi;
  10. @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
  11. public class BuiltInPresentation2 extends Presentation {
  12. public BuiltInPresentation2(Context outerContext, Display display) {
  13. super(outerContext, display);
  14. }
  15. @Override
  16. protected void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. // 设置内置屏幕的布局和内容
  19. setContentView(R.layout.disactivity2);
  20. }
  21. }
 3.我们继续看主Activity
  1. package com.example.test
  2. import android.annotation.SuppressLint
  3. import android.content.Context
  4. import android.hardware.display.DisplayManager
  5. import android.os.Build
  6. import android.os.Bundle
  7. import android.util.Log
  8. import android.view.Display
  9. import android.widget.SeekBar
  10. import androidx.annotation.RequiresApi
  11. import androidx.appcompat.app.AppCompatActivity
  12. import kotlinx.android.synthetic.main.activity_main.*
  13. import java.util.*
  14. class MainActivity : AppCompatActivity() {
  15. private var builtInPresentation: BuiltInPresentation? = null
  16. private var builtInPresentation2: BuiltInPresentation2? = null
  17. @RequiresApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
  18. override fun onCreate(savedInstanceState: Bundle?) {
  19. super.onCreate(savedInstanceState)
  20. setContentView(R.layout.activity_main)
  21. val displayManager =
  22. getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
  23. val displays: Array<Display> = displayManager.displays
  24. for (display in displays) {
  25. val displayId = display.displayId
  26. val displayName = display.name
  27. val displayWidth = display.width
  28. val displayHeight = display.height
  29. Log.e("TAG", "displayId======${displayId}")
  30. Log.e("TAG", "displayName======${displayName}")
  31. Log.e("TAG", "displayWidth======${displayWidth}")
  32. Log.e("TAG", "displayHeight======${displayHeight}")
  33. val screenCount: Int = displays.size
  34. Log.e("TAG", "screenCount======${screenCount}")
  35. }
  36. builtInPresentation = BuiltInPresentation(this, displays[1])
  37. builtInPresentation!!.show()
  38. builtInPresentation2 = BuiltInPresentation2(this, displays[2])
  39. builtInPresentation2!!.show()
  40. }
  41. override fun onDestroy() {
  42. super.onDestroy()
  43. // 在Activity销毁时,确保隐藏和释放Presentation
  44. if (builtInPresentation != null) {
  45. builtInPresentation!!.dismiss()
  46. builtInPresentation = null
  47. }
  48. if (builtInPresentation2 != null) {
  49. builtInPresentation2!!.dismiss()
  50. builtInPresentation2 = null
  51. }
  52. }
  53. }

 到这里,你们大概应该都看懂了,我直接在主activity里面调用两个Presentation类,传入不同的屏信息,设置不同的屏内容。这里需要注意你的主屏是第几个,否则有可能不生效!一般的主屏都是displays[0],就是主activity显示的界面。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号