Pergunta

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

Foi útil?

Solução

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.

Outras dicas

Have you checked if an offset is set (guess your offset variables are zero)? I would draw under the bar, too, because there are some home-screen apps which can blend out the bar and you will than have a blank area.

I also guess that the offset you use is only used if you slide to other screens...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top