最近遇到一个需求 一个板子连两个显示器,第二个显示器中显示广告位,第一个显示器为应用主体,需要用双屏异显

创建一个类继承Presentation ,layout自己写

public class SecondActivity extends Presentation {


    public SecondActivity(Context outerContext, Display display) {
        super(outerContext, display);
        getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

}

开启第二个屏幕显示内容

  /**
     * 启动第二个屏幕
     */
    public static void startSecondActivity(Activity activity) {

        DisplayManager mDisplayManager;// 屏幕管理类
        mDisplayManager = (DisplayManager) activity.getSystemService(Context.DISPLAY_SERVICE);
        Display[] displays = mDisplayManager.getDisplays();
        SecondActivity mPresentation = new SecondActivity(activity, displays[displays.length - 1]);//这个决定在哪个屏幕展示 (0)开始
        mPresentation.show();
    }

启动之后 Presentation继承dialog 当dialog用呗

发现一个问题当 第二个屏幕显示这个Presentation 的时候activity无法收到触摸事件

这时候需要Presentation 中事件分发

@Override
public boolean dispatchTouchEvent(@NonNull MotionEvent ev) {
    ((Activity) context).dispatchTouchEvent(ev);//context为最上层的activity
    return false;
}

有dialog的页面 dialog又不接受事件了  有dialog的activity

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if (dailog != null && dailog.isShowing()) {
        dailog.dispatchTouchEvent(ev);
        return false;
    }
    return super.dispatchTouchEvent(ev);
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐