【问题标题】:How to make transparent activity window always on top in android?如何在android中使透明活动窗口始终位于顶部?
【发布时间】:2013-04-16 09:43:10
【问题描述】:

我创建了一个透明活动 A。在此,我使用表面视图来播放视频。我可以触摸此活动A背后的应用程序和活动。但是当我单击另一个应用程序时,活动A会进入后台并以不正确的方式关闭。如果您单击其他应用程序,我想让活动 A 始终保持在屏幕顶部。我尝试了许多标志,但没有一个工作正常。如果想知道如何使活动窗口始终保持在顶部?

请分享您的建议和想法。任何帮助将不胜感激。

【问题讨论】:

标签: android android-activity


【解决方案1】:

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

这是一个示例:

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);
}

别忘了在 AndroidManifest.xml 中添加权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

然后,您可以在MyCustomView 中为所有应用程序做任何您想做的事情。

【讨论】:

  • 来电处于锁屏状态时是否可以显示?对我来说它不可见(HTC m7 4.4.2)
  • @snowdragon,您可以在PhoneWindowManager.windowTypeToLayerLw的代码中找到不同窗口类型的显示顺序。如果您不希望您的窗口具有交互性,请尝试TYPE_SYSTEM_OVERLAY。如果您确实希望它具有交互性,请尝试 SYSTEM_SYSTEM_ALERTTYPE_SYSTEM_ERROR
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多