文章目录
Presentation承自 Dialog,专门用于多屏异显场景。用来在副屏 / 外部显示器上显示独立界面的组件。
文章目录
- 文章目录
- 前言
- 一、Presentation是什么?
- 二、使用步骤
-
- 1.找到要控制的副屏
- [2.创建 Presentation 子类](#2.创建 Presentation 子类)
- [3.调用 Presentation 子类](#3.调用 Presentation 子类)
- 4.副屏界面
- 总结
前言
最近整理过去项目,有副屏相关内容,现在单独拿出来
一、Presentation是什么?
承自 Dialog,专门用于多屏异显场景。用来在副屏 / 外部显示器上显示独立界面的组件
二、使用步骤
1.找到要控制的副屏
c
private Display[] displays;
private DisplayManager displayManager;
void function()
{
displayManager=(DisplayManager)getSystemService(DISPLAY_SERVICE);
displays=displayManager.getDisplays();
Log.i(TAG,"屏幕数目:"+displays.length);
if(displaye.length<2)
return;
//打开要控制的副屏
if(aboutPresentation==null)
aboutPresentation=new APresentation(this,displays[1]);
aboutPresentation.show();
}
2.创建 Presentation 子类
在子类里 onCreate() 里 setContentView()
c
ublic abstract class BasePresentation extends Presentation {
private Context context;
public BasePresentation(Context outCon, Display display)
{
super(outCon,display);
context=outCon;
}
@Override
public void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, @Nullable Menu menu, int deviceId) {
super.onProvideKeyboardShortcuts(data, menu, deviceId);
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
super.onPointerCaptureChanged(hasCapture);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View inflate = LayoutInflater.from(context).inflate(getLayoutResId(), null, false);
setContentView(inflate);
initView(inflate);
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public void onDisplayRemoved() {
super.onDisplayRemoved();
}
public abstract void initView(View inflate);
public abstract int getLayoutResId();
}
3.调用 Presentation 子类
在副屏打开网页
csharp
public class APresentation extends BasePresentation{
private static final String TAG="APresentation";
private static final Logger log = LoggerFactory.getLogger(PresentationIniti.class);
public static AndroidWebView web;
public static WebView view;
private TextView textView;
public static MainPresentation mainPresentation;
public APresentation(Context outCon, Display display) {
super(outCon, display);
mContest=outCon;
setContentView(R.layout.start_main_layout);
}
@Override
public void initView( View inflate)
{
view=(WebView) findViewById(R.id.web_tbs);
web=new AndroidWebView();
String web_url= "https://chat.deepseek.com/";
if(web_url!=null)
{
web.onShowWebView(view,web_url);
}
else
{
String url="https://cn.bing.com/";
web.onShowWebView(view,url);
}
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
}
@Override
public int getLayoutResId()
{ //加载layout
return R.layout.webview_layout;
}
}
4.副屏界面
csharp
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.tencent.smtt.sdk.WebView
android:id="@+id/web_tbs"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
</com.tencent.smtt.sdk.WebView>
</RelativeLayout>
总结
可以调用副屏