10

在我的应用程序中,我希望显示一个始终可见、半透明的状态,但很难弄清楚它是如何完成的。

Facebook Messenger 和我见过的其他一些应用程序可以做到这一点,所以我知道这是可能的。他们使用 SYSTEM_ALERT_WINDOW 权限来显示大部分透明的活动或对话框“始终在顶部”。

但我不明白的是它们是如何做到的,以便在按下后退或主页按钮时它们不会关闭?换句话说,它们看起来根本不像活动,但我看不出它们还能是什么?

非常感谢这里的任何帮助:-)

4

2 回答 2

15

您可以在以下帮助下创建一个透明的活动

  1. 通过使用使 xml 文件中的布局背景透明

    android:background="@android:color/transparent

  2. 此外,使清单文件中的主题对该特定活动透明

    <activity android:name="Your activity" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> </activity>

  3. 并且对于后按覆盖该onBackPressed()方法并删除super.onBackPressed()

    @Override
     public void onBackPressed()
      {
        // TODO Auto-generated method stub
      }
    
于 2013-08-22T06:12:59.013 回答
4

您可以使用以下代码..它对我有用,除了它不允许从内部存储安装应用程序..

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View oView = layoutInflater.inflate(R.layout.activity_transperant, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
        0 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
        PixelFormat.TRANSLUCENT);        
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(oView, params);
于 2014-02-25T09:56:26.577 回答