gpt4 book ai didi

android - 如何确定状态栏是否在实现您的库的应用程序中是半透明的?

转载 作者:行者123 更新时间:2023-11-29 14:48:23 31 4
gpt4 key购买 nike

我创建了一个小型库来将 View 放置在现有 View 的旁边/上方/下方(例如,帮助箭头或类似的东西),我使用

MainView.getLocationOnScreen(..);

确定主视图的位置,兄弟 View 将放置在附近。

通常我通过上面的方法确定主视图的顶部(Y)减去状态栏的高度,使用以下方法:

protected boolean isTranslucentStaturBar()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = ((Activity) mainActionView.getContext()).getWindow();

--> return // SOME EXPRESSION TO DETERMINE IF THE STATUS BAR IS TRANSLUCENT <--- ?????
// I Need to know what expression I need to write here
// i.e. How to ready the flag: WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
}

return false;
}

protected int getStatusBarHeight() {
if (isTranslucentStaturBar()) {
return 0;
}

int result = 0;
int resourceId = mainActionView.getContext().getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = mainActionView.getContext().getResources().getDimensionPixelSize(resourceId);
}
return result;
}

我的问题是 Android >= Kitkat,您实际上可以将状态栏设置为半透明,并且窗口内容展开以填充状态栏图标下方的位置。

最佳答案

好的,在深入挖掘之后,我找到了这个解决方案:

protected boolean isTranslucentStatusBar()
{
Window w = ((Activity) mainActionView.getContext()).getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
int flags = lp.flags;
// Here I'm comparing the binary value of Translucent Status Bar with flags in the window
if ((flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) == WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) {
return true;
}

return false;
}

关于android - 如何确定状态栏是否在实现您的库的应用程序中是半透明的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454897/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com