Android 8 - Как узнать, с какой стороны находится панель навигации при переходе от LANDSCAPE к REVERSE_LANDSCAPE? - PullRequest
0 голосов
/ 09 мая 2018

В Android 8, когда телефон переходит на LANDSCAPE, навигация будет на правой стороне экрана, а когда на REVERSE_LANDSCAPE, она будет на левой стороне. Чтобы выяснить, на какой стороне экрана он находится, нужно было получить корень View моей активности и проверить его размер и положение следующим образом:

if (rootView.width == deviceScreenWidth) {
    // device is tablet and the navigation bar is at the bottom, or
    // its a samsung device with no navigation bar
} 
else if (rootView.positionOnScreenX == 0) {
    // the navigation bar is at the LEFT side
} 
else {
    // the navigation bar is at the RIGHT side
}

Но я столкнулся с новой проблемой, связанной с этим подходом, которая заключается в том, что если пользователь перейдет непосредственно с LANDSCAPE на REVERSE_LANDSCAPE, навигационная панель изменит местоположение, но код не запустится снова, что вызовет проблемы.

Есть ли в android sdk какие-либо обратные вызовы для прослушивания этой ротации? Или есть лучший способ узнать, с какой стороны экрана находится панель навигации, не сталкиваясь с этой проблемой?

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете переопределить Activity # onConfigurationChanged (Configuration newConfig), чтобы получить обратный вызов, когда пользователь поворачивает свое устройство.

Вы можете проверить эти ссылки для более подробной информации:

...