Android Best Practices: Как разрешить начинать действие в любой ориентации, но не разрешать изменение ориентации - PullRequest
1 голос
/ 12 августа 2011

Я пишу приложение для Android, которое будет работать на телефонах и планшетах Honeycomb, и в значительной степени выполняет различные действия, основанные на ОС и с самого начала.На не сотовых устройствах все мои действия заблокированы для портрета для простоты пользовательского интерфейса, и то же самое относится и к сотовым, только они все заблокированы для ландшафта, опять же для лучшего пользовательского интерфейса и пользовательского опыта.

У меня есть некоторые действия на тему диалога, такие как файловый браузер, который я написал, который я хотел бы использовать на любом устройстве, и чтобы действия диалога были такими же, как у текущего приложения.Таким образом, если пользователь использует телефон, диалоговое окно будет отображаться в портретной ориентации, они могут выбрать свой файл, и действие исчезнет, ​​и пользователь продолжит.Если они используют сотовое устройство, диалоговое действие будет отображаться в альбомной ориентации и будут применяться те же правила.

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

Я ищу предложения о том, как этого добиться.

Ответы [ 2 ]

5 голосов
/ 12 августа 2011

Вы можете добавить android:configChanges="orientation" к активности в AndroidManifest, чтобы сообщить ОС, что вы обрабатываете изменения ориентации.Обычно мы реализуем какую-то обработку в методе onConfigurationChanged, но в этом случае вы ничего не делаете.

1 голос
/ 12 августа 2011

Просто мысль, может или не может работать:

    WindowManager wm = (WindowManager) activity
        .getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    display.getRotation();
    Surface.setOrientation(display.getDisplayId(), display.getRotation());

Посмотрите, работает ли это:)

...