views:

195

answers:

2

Hello,

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

+2  A: 

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...

WarrenFaith
I just checked and they are both 0. Us there another way to get the height of the home screen bar?
Peter
In a normal application you can get the difference between the device screen size and the view size, so you can calculate the height of each bar. Don't know if that works for wallpapers.
WarrenFaith
+3  A: 

This SO answer seems to provide a way to get the height of the status bar: http://stackoverflow.com/questions/3355367/height-of-statusbar/3356263#3356263. 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.

gary comtois