在我的应用程序中,我希望显示一个始终可见、半透明的状态,但很难弄清楚它是如何完成的。
Facebook Messenger 和我见过的其他一些应用程序可以做到这一点,所以我知道这是可能的。他们使用 SYSTEM_ALERT_WINDOW 权限来显示大部分透明的活动或对话框“始终在顶部”。
但我不明白的是它们是如何做到的,以便在按下后退或主页按钮时它们不会关闭?换句话说,它们看起来根本不像活动,但我看不出它们还能是什么?
非常感谢这里的任何帮助:-)
在我的应用程序中,我希望显示一个始终可见、半透明的状态,但很难弄清楚它是如何完成的。
Facebook Messenger 和我见过的其他一些应用程序可以做到这一点,所以我知道这是可能的。他们使用 SYSTEM_ALERT_WINDOW 权限来显示大部分透明的活动或对话框“始终在顶部”。
但我不明白的是它们是如何做到的,以便在按下后退或主页按钮时它们不会关闭?换句话说,它们看起来根本不像活动,但我看不出它们还能是什么?
非常感谢这里的任何帮助:-)
您可以在以下帮助下创建一个透明的活动
通过使用使 xml 文件中的布局背景透明
android:background="@android:color/transparent
此外,使清单文件中的主题对该特定活动透明
<activity
android:name="Your activity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
</activity>
并且对于后按覆盖该onBackPressed()
方法并删除super.onBackPressed()
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
}
您可以使用以下代码..它对我有用,除了它不允许从内部存储安装应用程序..
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);