如何让android中的透明活动窗口始终位于顶部?

use*_*454 5 android android-activity

我创建了一个透明活动A.在这里,我使用表面视图来播放视频.我能够触摸此活动背后的应用程序和活动A.但是当我点击另一个应用程序时,活动A进入后台并以不正确的方式关闭.如果您点击其他应用,我想让活动A始终保持在屏幕顶部.我试过很多旗帜,但没有人正常工作.如果想知道如何让活动窗口始终保持最佳状态?

请分享您的建议和想法.任何帮助将受到高度赞赏.

iSt*_*tar 5

您可以使用WindowManager.addView()将自定义视图添加到窗口,并可以WindowManager.LayoutParams为View 设置属性.

这是一个示例:

private WindowManager wm=null;
private WindowManager.LayoutParams wmParams=null;

private MyCustomView myView=null;

private void createView(){
    myView = new MyCustomView(getApplicationContext());
    wm = (WindowManager)getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
    wmParams = new WindowManager.LayoutParams();

    /**
     * Window type: phone.  These are non-application windows providing
     * user interaction with the phone (in particular incoming calls).
     * These windows are normally placed above all applications, but behind
     * the status bar.
     */
    wmParams.type=LayoutParams.TYPE_PHONE;
    wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE;
    wmParams.gravity=Gravity.LEFT|Gravity.TOP; 
    wmParams.x=0;
    wmParams.y=0;
    wmParams.width=40;
    wmParams.height=40;
    wm.addView(myView, wmParams);
}
Run Code Online (Sandbox Code Playgroud)

不要忘记AndroidManifest.xml中的添加权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在MyCustomView所有应用程序中执行任何操作.