Android - 动态壁纸偏移剪辑

6 android wallpaper draw offset live-wallpaper

我正在为Android写一个动态壁纸.为了测试我的基本代码是否正常工作,我在屏幕的左上角显示了一个矩形:

canvas.drawRect(0f,0f,50f,50f,paint);
Run Code Online (Sandbox Code Playgroud)

矩形的一半位于主屏幕顶部的栏下方.替代文字

我尝试使用以下方法考虑像素偏移:

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);
Run Code Online (Sandbox Code Playgroud)

但矩形仍然在条形图下方绘制.怎么找到酒吧的哪里结束所以我可以在它下面画?

干杯,

皮特

gar*_*ary 9

这个SO答案似乎提供了一种获取状态栏高度的方法:状态栏的高度? 我复制了下面的代码 - 最初由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); 
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 也许我已经掩饰了某些东西,但我无法从动态壁纸中找到如何调用getWindow().WallpaperService和WallpaperService.Engine没有getWindow()方法.您可以在Activity中轻松使用getWindow(),但动态壁纸基于Service类.谁能解释一下? (4认同)