获取没有活动的通知栏大小

时间:2015-07-16 00:50:02

标签: android android-imageview android-notification-bar android-windowmanager

我有一个使用WindowManager类在屏幕上实例化ImageView的服务,该服务没有窗口或可见对象。当我尝试使用WindowManager设置此ImageView的位置时,它使用偏移设置Y轴位置,这似乎是由于Windows Manager在定位ImageView时考虑的通知栏引起的,但计算的位置是绝对,不考虑通知栏大小。我可以轻松地从位置减去这个偏移量,但为此我需要知道通知栏的大小。

我已经找到了一些方法,但是大多数都使用了活动绝对位置,或者通知栏大小是硬编码的,因此屏幕分辨率也是如此。

有没有办法发现通知栏大小,我不需要使用硬编码值,也不需要任何可视化对象?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用以下代码?

Rect rectangle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
int statusBarHeight= rectangle.top;

<强>更新
您说应用程序直接启动该服务。我建议你做的是

  1. 启动应用程序时打开的活动。
  2. 获取该活动中的状态栏高度。
  3. 启动服务并传递状态栏高度。
  4. 关闭活动。
  5. 这是一种愚蠢的方式,因为基本上你会在启动服务后立即关闭活动,我不认为用户能够看到它,因为这个过程会非常快。