Android - Live Offset clipping

Я пишу живые обои для 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);

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

Приветствия,

Пит

6
задан Josh Lee 31 August 2011 в 14:26
поделиться

2 ответа

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

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

9
ответ дан 9 December 2019 в 20:38
поделиться

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

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

3
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: