前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 的 Presentation 双屏异显,遇到的问题总结

Android 的 Presentation 双屏异显,遇到的问题总结

作者头像
杨永贞
发布2020-10-26 11:29:46
4.1K8
发布2020-10-26 11:29:46
举报

工作中用到了Android的 Presentation 双屏异显,本以为很简单的,结果真实项目中还是遇到了一些问题。

而这些问题呢,网上能查到的寥寥,群里也没人会告诉你。好在我尝试过程中一一解决了。这里记录下来。

遇到的问题有:

1.Presentation中弹出的对话框,显示像素密度可能跟前屏的像素密度不一致,导致必须得适配。

2.Presentation的异步显示,当异显的屏幕配置信息改变时,会自动dismiss,提示Presentation is being dismissed because display metrics have changed since it was created

3.Presentation中创建的对话框,不是模态的对话框,就是说如果它是个登录框的话,后面的内容还能点击。

4.Presentation中不能调用Android系统的软键盘。

.5.双屏之间的通信问题和同步异步显示。

.后屏无法显示Toast消息问题。

这些问题好在我都一一解决了。网上问了个遍都没答案,我差点以为我是全网唯一一个用到这玩意的。。

你们还遇到过哪些坑呢?欢迎补充留言。

双屏异显的用法也很简单,如:

private void initPresentation() {
        mediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
        displayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
        displays = displayManager.getDisplays();
        MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO);
        if (route != null) {
            Display presentationDisplay = route.getPresentationDisplay();
            if (presentationDisplay != null) {
                presentation = new IndexPresent(this, displays[1]);
                presentation.show();
                presentation.showLogin();
            }
        }
    }

IndexPresent类继承自Presentation。

public class IndexPresent extends Presentation {
    private static final String TAG = "IndexPresent";
    private Context context;
    private Context mycontext;
    ......
    public IndexPresent(Context outerContext, Display display) {
        super(outerContext, display);
        Log.e(TAG, "IndexPresent");
        this.context = outerContext;
        mycontext = getContext();
    }

    private void initDate(){
        Observable.interval(0, 1000, TimeUnit.MILLISECONDS)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {
                        Date nowDate = new Date();
                        String setDay = ymd.format(nowDate);
                        String setTime = hms.format(nowDate);
                        String setWeek = DateUtils.getWeek();
                        indexDataBindingBean.hourMinuteSecond.set(setTime);
                        indexDataBindingBean.yearMonthDate.set(setDay);
                        indexDataBindingBean.week.set(setWeek);
                    }
                });
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档