开发者

Android - Live Wallpaper offset clipping

开发者 https://www.devze.com 2023-01-11 22:02 出处:网络
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:

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.

Android - Live Wallpaper offset clipping

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

0

精彩评论

暂无评论...
验证码 换一张
取 消