Search code examples
androiddrawoffsetlive-wallpaperwallpaper

Android - Live Wallpaper offset clipping


I am writing a live wallpaper for android. To test my basic code was working I drew a rectangle in the top left-hand cornor of the screen:

canvas.drawRect(0f,0f,50f,50f,paint);

Half of the rectangle was underneath the bar at the top of the home screen.alt text

I tried to take into account pixel offsets using:

public void onOffsetsChanged(float xOffset, float yOffset,
            float xOffsetStep, float yOffsetStep, int xPixelOffset,
            int yPixelOffset)

...

  canvas.drawRect(0f+xPixelOffset,0f+yPixelOffset,50f+xPixelOffset,50f+yPixelOffset
  ,paint);

But the rectangle is still drawn underneath the bar. How do find where the bar ends so I can draw below it?

Cheers,

Pete


Solution

  • This SO answer seems to provide a way to get the height of the status bar: Height of statusbar? I copied the code below - originally answered by Jorgesys.

    Rect rectgle= new Rect();
    Window window= getWindow();
    window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
    int StatusBarHeight= rectgle.top;
    int contentViewTop= 
        window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
    int TitleBarHeight= contentViewTop - StatusBarHeight;
    
       Log.i("*** Jorgesys :: ", "StatusBar Height= " + StatusBarHeight + " , TitleBar Height = " + TitleBarHeight); 
    

    Hope it helps.