我有一个使用WindowManager类在屏幕上实例化ImageView的服务,该服务没有窗口或可见对象。当我尝试使用WindowManager设置此ImageView的位置时,它使用偏移设置Y轴位置,这似乎是由于Windows Manager在定位ImageView时考虑的通知栏引起的,但计算的位置是绝对,不考虑通知栏大小。我可以轻松地从位置减去这个偏移量,但为此我需要知道通知栏的大小。
我已经找到了一些方法,但是大多数都使用了活动绝对位置,或者通知栏大小是硬编码的,因此屏幕分辨率也是如此。
有没有办法发现通知栏大小,我不需要使用硬编码值,也不需要任何可视化对象?
答案 0 :(得分:0)
您是否尝试使用以下代码?
Rect rectangle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
int statusBarHeight= rectangle.top;
<强>更新强>
您说应用程序直接启动该服务。我建议你做的是
这是一种愚蠢的方式,因为基本上你会在启动服务后立即关闭活动,我不认为用户能够看到它,因为这个过程会非常快。