Видимость панели навигации Android для Android P - Обнаружение навигации на основе жестов - PullRequest
0 голосов
/ 01 марта 2019

Как определить, видна ли панель навигации (для устройства без Bazel) или нет?Я пытался использовать разные решения для панели навигации, используя Идентификатор ресурса , Флаг пользовательского интерфейса системы и KeyCharacterMap , но он не работает для меня.В Andorid P доступна навигация по жестам, которая скрывает панель навигации, и функции навигации будут запускаться с использованием этого жеста.Есть ли решение, чтобы обнаружить это?

1 Ответ

0 голосов
/ 27 августа 2019

Я тестировал этот код на устройстве Xiaomi, используя метод двух жестов навигации, и у меня он работает:

Point p = new Point();
        getWindow().getWindowManager().getDefaultDisplay().getRealSize(p);
        ConstraintLayout container = findViewById(your activity main view (e.g linearLayout));

        final TypedArray styledAttributes = getTheme().obtainStyledAttributes(
                new int[]{android.R.attr.actionBarSize});
        int mActionBarSize = (int) styledAttributes.getDimension(0, 0);
        int height = container.getMeasuredHeight();
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        int result = 0;
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId);
        }
if (height + mActionBarSize + result >= p.y) {
     //you have fullscreen gesture navigation
}else{
     //navigation bar or similiar
}

Это работает, потому что приложение теперь может принимать больший размер на экране, поэтому оно работает толькоесли метод навигации жестами не создает фон «панели навигации».

Просто убедитесь, что используете его, когда главное уже загружено и видно, в противном случае он вернет 0.

...