最近有一个双屏显示的需求,当时一脸蒙逼完全不知如何着手,不负众望找到解决办法,在Android4.2版本以后提供了Presentation类,可以轻松实现在两块屏幕上同时显示不同的内容。做一下笔记。
Presentation是一个特殊的dialog,它的目的是显示内容到第二屏幕。在Presentation创建的时候关联一个目标设备,确定Presentation要显示在那个设备上,根据这个设备的信息来配置Presentation的context和resources信息。
上代码
1public class MainActivity extends AppCompatActivity { 2 3private WebView webView; 4@Override 5protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 webView = findViewById(R.id.webView); 9 webView.loadUrl("https://www.baidu.com/"); 10 webView.getSettings().setJavaScriptEnabled(true); 11 //这里面是主要的代码 12 setCustomerProductList(); 13} 14@SuppressLint("NewApi") 15private void setCustomerProductList() { 16 DisplayManager displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); 17 Display[] presentationDisplays = displayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION); 18 if (presentationDisplays.length > 0) { 19 Display display = presentationDisplays[0]; 20 Presentation presentation = new DifferentDislay(this, display); 21 presentation.show(); 22 } 23} 24}
新建一个类继承Presentation
1public class DifferentDislay extends Presentation { 2 3 public DifferentDislay(Context outerContext, Display display) { 4 super(outerContext,display); 5 } 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_home); 10 11 } 12}
在副屏操作,或者跳转页面
1public class DifferentDislay extends Presentation { 2private Context context; 3private TextView img; 4private Display display; 5 6 public DifferentDislay(Context outerContext, Display display) { 7 super(outerContext,display); 8 this.context = outerContext; 9 } 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_home); 14 img = findViewById(R.id.img); 15 16 img.setOnClickListener(new View.OnClickListener() { 17 @Override 18 public void onClick(View view) { 19 Presentation presentation = new PresentationActivity(context, display); 20 presentation.show(); 21 } 22 }); 23 } 24}
副屏跳转页面是跳转到新建的一个Presentation
别忘了加权限
1<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 2<!-- 在 屏幕最顶部显示addview--> 3<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />