Skip to content

Window Play

贾俊辉 edited this page Jun 10, 2018 · 4 revisions

框架提供者两种window组件,一种是可以直接用于播放的WindowVideoView,一种是window视图FloatWindow

FloatWindowParams

window组件的设置参数均被封装到FloatWindowParams中,包含了以下参数:

  • windowType

默认为WindowManager.LayoutParams.TYPE_TOAST,测试发现TYPE_TOAST类型的window在一些手机上被禁止了(可能是由于这种类型的window不需要权限),使用时可以将windowType设置为WindowManager.LayoutParams.TYPE_SYSTEM_ALERT。但是由于window权限不属于运行时权限,所以需要用户手动开启悬浮窗权限(测试发现华为P9手机默认是可以弹悬浮窗的,不需要手动处理)。

  • gravity

window出现的方位。默认gravity为Gravity.TOP | Gravity.LEFT

  • format

像素格式。默认为PixelFormat.RGBA_8888

  • flag

window的标记参数。默认为WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE

  • x和y

window的精确显示位置,默认为0,0

  • width和height

window的宽高,默认为WindowManager.LayoutParams.WRAP_CONTENT

  • defaultAnimation

是否开启默认window显示隐藏动画,默认开启。

WindowVideoView

继承自BaseVideoView,区别就在于WindowVideoView是以window的形式显示。默认的window窗体可以拖动,您可以设置禁止拖动。

方法释义

------------------------------------------------------------

//设置window监听器,用于监听window的显示和隐藏
void setOnWindowListener(OnWindowListener onWindowListener);

------------------------------------------------------------

//设置window是否可以拖拽,默认开启
void setDragEnable(boolean dragEnable);

------------------------------------------------------------

//window是否显示了
boolean isWindowShow();

------------------------------------------------------------

//更新window的位置
void updateWindowViewLayout(int x, int y);

------------------------------------------------------------

//显示window,默认开启显示动画(您可以通过FloatWindowParams进行关闭)
boolean show();

------------------------------------------------------------

//显示window,您可以传入指定的显示动画
boolean show(Animator... items);

------------------------------------------------------------

//关闭window
void close();

------------------------------------------------------------

//关闭window,您可以传入指定的关闭动画
void close(Animator... items);

------------------------------------------------------------

FloatWindow

FloatWindow是框架提供的window显示视图组件,不具备播放能力。是继承自FrameLayout以window形式显示的View,您可以通过构造函数传入指定的布局放置其内。

与上面WindowVideoView中的方法一致。