Android - живые обои со смещением отсечения - PullRequest
6 голосов
/ 18 августа 2010

Пишу живые обои для android. Чтобы проверить, работает ли мой основной код, я нарисовал прямоугольник в верхней левой части экрана:

canvas.drawRect(0f,0f,50f,50f,paint);

Половина прямоугольника находилась под полоской в ​​верхней части главного экрана. alt text

Я попытался учесть смещения пикселей, используя:

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);

Но прямоугольник все еще рисуется под полосой. Как узнать, где заканчивается бар, чтобы я мог рисовать под ним?

Приветствия

Пит

Ответы [ 2 ]

9 голосов
/ 23 августа 2010

Этот ответ 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); 

Надеюсь, это поможет.

3 голосов
/ 18 августа 2010

Вы проверяли, установлено ли смещение (угадайте, что переменные смещения равны нулю)? Я бы тоже нарисовал под панелью, потому что есть некоторые приложения для домашнего экрана, которые могут смешать планку, и у вас будет пустая область.

Я также предполагаю, что смещение, которое вы используете, используется только при переходе на другие экраны ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...