Я пишу живые обои для Android. Чтобы проверить, работает ли мой основной код, я нарисовал прямоугольник в верхнем левом углу экрана:
canvas.drawRect(0f,0f,50f,50f,paint);
Половина прямоугольника находилась под полоской в верхней части главного экрана.
Я попытался учесть смещения пикселей, используя:
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);
Но прямоугольник по-прежнему рисуется под полосой. Как узнать, где заканчивается бар, чтобы я мог рисовать под ним?
Приветствия,
Пит
Этот 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);
Надеюсь, это поможет.
Вы проверили, установлено ли смещение (предположите, что ваши переменные смещения равны нулю)? Я бы тоже рисовал под панелью, потому что есть некоторые приложения для домашнего экрана, которые могут растушевывать панель, и тогда у вас будет пустая область.
Я также предполагаю, что используемое смещение используется только при переходе на другие экраны ...