Overlay Status bar on android 4.2.2+

Solata

I want to overlay android status bar. In my case it is on top. I do not want to overlay or hide navigation bar.

Note: Solution must work on android 4.2.2+. I prefer answers for non-rooted device.

I have searched many SO questions and answers, but none works on 4.2.2.

Below is my code, but it does not consume touch events. That's why status bar opens its panel. And I do not want this.

@Override 
public void onCreate() {
    super.onCreate();

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    int statusBarHeight = (int) Math.ceil(25 * getResources().getDisplayMetrics().density);

    overlay = new Button(this);
    overlay.setBackgroundColor(Color.GREEN);
    overlay.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.i("StatusBar", "touched");
            return false;
        }
    });

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.FILL_PARENT,
            statusBarHeight,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH|
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);

    params.gravity = Gravity.TOP | Gravity.RIGHT;

    windowManager.addView(overlay, params);

}

@Override
public void onDestroy() {
    super.onDestroy();
    if (overlay != null) windowManager.removeView(overlay);
}

In main activity I start service:

startService(new Intent(this, StatusBarService.class));

And permission is added in AndroidManifest.xml:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

And now proof it can be done and it works on 4.2.2: Play Google - MobiLock

How?

Screenshots: enter image description here enter image description here

Solata

After try&repeat, this did it for me:

int statusBarHeight = (int) Math.ceil(25 * getResources().getDisplayMetrics().density);

WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT,
            statusBarHeight,
            WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
            PixelFormat.TRANSLUCENT);

It works on 4.2.2 and 4.4.2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Overlay an image on google maps android api v2

분류에서Dev

Android: Detect status bar notification click

분류에서Dev

Tool_Bar with android CardView and Transparent status bar

분류에서Dev

Android Studio refused to show status bar nor Nav Bar

분류에서Dev

git exit status : 2 with capistrano

분류에서Dev

Sencha Touch 2: input placeholder in not centered in Android 4

분류에서Dev

onManagerConnected status returning value 2 [Market error]

분류에서Dev

Window.FEATURE_ACTION_BAR_OVERLAY는 Android 2.3에서 작동하지 않습니다.

분류에서Dev

Window.FEATURE_ACTION_BAR_OVERLAY는 Android 2.3에서 작동하지 않습니다.

분류에서Dev

Move 2 scroll bar at same time

분류에서Dev

Arrange icons on unity 2d bar

분류에서Dev

Angular 2/4 Observables

분류에서Dev

Flutter: How to change the status bar text color on Android and iOS when not using AppBar

분류에서Dev

Notification android 5. Status bar icon is empty and on large icon notification icon is empty

분류에서Dev

Menu in system status bar is disabled

분류에서Dev

NSStatusItem reordering along Status Bar

분류에서Dev

Overlay layout from top Android

분류에서Dev

Docker overlay2 리소스가 사용 중입니다.

분류에서Dev

Why my 2 components in bootstrap overlay each other when I shrink the web page?

분류에서Dev

Android PCM-> AAC = M4A 대 MPEG2-TS

분류에서Dev

OPENCV4Android에서 RGB2HSV 변환

분류에서Dev

OPENCV4Android에서 RGB2HSV 변환

분류에서Dev

Android : 4 가지 버전 중 2 가지 활동

분류에서Dev

Sony smartwatch 2 check and change back light status programatically

분류에서Dev

Use a Custom Status Code with CakePHP 2.x

분류에서Dev

Faceted bar charts from multiple columns in ggplot2

분류에서Dev

ggplot2 geom_bar 관련 문제

분류에서Dev

Yii2 / nav bar / Hiding property of non-object

분류에서Dev

ggplot2 | geom_bar 및 위치 = "identity"

Related 관련 기사

  1. 1

    Overlay an image on google maps android api v2

  2. 2

    Android: Detect status bar notification click

  3. 3

    Tool_Bar with android CardView and Transparent status bar

  4. 4

    Android Studio refused to show status bar nor Nav Bar

  5. 5

    git exit status : 2 with capistrano

  6. 6

    Sencha Touch 2: input placeholder in not centered in Android 4

  7. 7

    onManagerConnected status returning value 2 [Market error]

  8. 8

    Window.FEATURE_ACTION_BAR_OVERLAY는 Android 2.3에서 작동하지 않습니다.

  9. 9

    Window.FEATURE_ACTION_BAR_OVERLAY는 Android 2.3에서 작동하지 않습니다.

  10. 10

    Move 2 scroll bar at same time

  11. 11

    Arrange icons on unity 2d bar

  12. 12

    Angular 2/4 Observables

  13. 13

    Flutter: How to change the status bar text color on Android and iOS when not using AppBar

  14. 14

    Notification android 5. Status bar icon is empty and on large icon notification icon is empty

  15. 15

    Menu in system status bar is disabled

  16. 16

    NSStatusItem reordering along Status Bar

  17. 17

    Overlay layout from top Android

  18. 18

    Docker overlay2 리소스가 사용 중입니다.

  19. 19

    Why my 2 components in bootstrap overlay each other when I shrink the web page?

  20. 20

    Android PCM-> AAC = M4A 대 MPEG2-TS

  21. 21

    OPENCV4Android에서 RGB2HSV 변환

  22. 22

    OPENCV4Android에서 RGB2HSV 변환

  23. 23

    Android : 4 가지 버전 중 2 가지 활동

  24. 24

    Sony smartwatch 2 check and change back light status programatically

  25. 25

    Use a Custom Status Code with CakePHP 2.x

  26. 26

    Faceted bar charts from multiple columns in ggplot2

  27. 27

    ggplot2 geom_bar 관련 문제

  28. 28

    Yii2 / nav bar / Hiding property of non-object

  29. 29

    ggplot2 | geom_bar 및 위치 = "identity"

뜨겁다태그

보관