android 副屏连接

文章目录

Presentation承自 Dialog,专门用于多屏异显场景。用来在副屏 / 外部显示器上显示独立界面的组件。


文章目录


前言

最近整理过去项目,有副屏相关内容,现在单独拿出来


一、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>

总结

可以调用副屏

相关推荐
OxYGC3 小时前
手机为什么能“自动跳过“开屏广告?李跳跳、GKD 与 iOS 代理软件原理盘点
android·ios·开屏广告·广告屏蔽
Android-Flutter10 小时前
Compose 管理状态 详解
android·compose
缓慢更新11 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
我怀里的猫12 小时前
android-activity-launch-sequence
android
YB137514 小时前
Jetpack Compose 动画rememberInfiniteTransition
android
baidu_2474386117 小时前
Android 自定义竖直的虚线
android
传奇开心果编程18 小时前
【Jetpack Compose娓娓道来】 第25课:ViewModel就是UI界面的大脑
android·kotlin·移动开发·jetpack compose·编程语言理论·编程框架·声明式ui
马立杰18 小时前
PHP 未授权 RCE 应急响应:CVE-2026-109618 CVE-2026-109619 排查与加固实战
android·开发语言·php
NamoAmitabha12818 小时前
安装“编译器环境”(Android Studio)--deepseek--Cocos --Creator3.8.8
android·ide·android studio