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,50开发者_StackOverflow社区f,paint);
Half of the rectangle was underneath the bar at the top of the home screen.
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
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.
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...
精彩评论