Android顶级窗口控制
顶级窗口会显示在所有视图之上,可以利用此特性用来显示优先级高的业务。
我把它可分为常规式顶级窗口和遮罩式顶级窗口。
常规式顶级窗口不影响其他组件获取焦点(图1);遮罩式顶级窗口顾名思义就是把其他组件都遮住了(图2)。
??????????????????????????? 图1
?
?
?????????????????????? ???? 图2
?
实现方式:
先启动一个服务(aidl),由该服务去绘制窗口,并对外提供绘制接口(实现见下面代码);
单独写一个应用(如上),用来连接服务并显示顶级窗口。
?
?
服务端控制顶级窗口显示与销毁的代码:
?<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
好久没有搞Android了,记得IService.Stub是根据IService.aidl文件自动生成的一个代理类。你可以在aidl文件中定义业务接口,我只在其中定义了drawTopWin()和cancelTopWin()方法,希望对你有用。