您的位置:首页 > 其它

Presentation与自定义Dialog的使用

2016-06-30 17:28 204 查看
本文为原创文章,转载请注明出处

文章最后附带DEMO,请需要的朋友下载。

从API 17开始,Android提供了Presentation类,为多屏异显开发提供了官方支持,当然最终需求的实现也需要底层硬件及驱动的支持。

基本需求:控制辅屏全屏显示与主显不同的内容,且当主显全屏显示的内容变化后对辅屏显示内容的延续性(例如辅屏视频播放)不产生影响。

本文主要内容有以下几点:

(1)Presentation的基本用法;

(2)自定义Dialog的使用(全屏);

(3)采用自定义Dialog对话框方式代替Activity间的切换,防止因Activity进入Paused状态导致Presentation不再显示或显示内容不持续的情况,例如想让辅屏连续播放视频,如果采用Activity切换方式,在Activity切换后新的Activity控制的Presentation很难延续上一个Presentation的视频播放位置且用户体验不好。

Presentation的高级用法比如硬件状态改变事件监听等,请参考官方API或其他文章。

通常,使用Presentation有几个要点:

(1)生命周期,Android API官方文档有段原话"A presentation is automatically canceled (see
cancel()
) when the display to which it is attached is removed. An activity should take care of pausing and resuming whatever content is playing within the presentation whenever the activity itself is paused or resumed.",意思是当与presentation 绑定的Display被移除或Activitiey进入pauseed、resuming状态时必须由我们自己控制Presentation的生命周期即Activity不在主显显示时由其创建的Presentation也将消失。

(2)获得Display,每个Presentation必须指定单独的Display用于与主屏幕不同内容的展现。

(3)设置ContentView,与Activity一样,Presentation也可以通过setContentView方法设置Presentation展现的XML布局文件。

说明:为了便于代码重构和逻辑分离,自定义的Presentation和Dialog均定义成单独的类,如果功能很简单也可以定义成内部类。

[b]一、自定义Presentation显示[/b]

通常获得Presentation显示需要的Display有两种方法,MediaRouterDisplayManager ,本文将采用DisplayManage获取Display的方式。

(1)创建布局文件presentation_content.xml,效果如下:

public void btn_createDialogBtnClick(View v) {
mainDialog = new XiaoshubaoFirstDialog(this, R.style.XiaoshubaoDialogStyle); //设置全屏样式
mainDialog.setContentView(R.layout.dialog_first); //设置dialog的布局
mainDialog.show();//显示dialog界面
}


View Code
(7)释放Dialog资源

dialog.dismiss();
[b]三、综述
[/b]项目最终呈现的效果如上面预览图,重点是给初学Android的朋友了解多屏异显及Dialog全屏显示和事件响应。
DEMO下载地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: