Android - изменение порядка диалогов

В моем приложении я использую навигационный ящик. Когда приложение запускается в первый раз, пользователю отображается диалоговое окно, объясняющее использование панели навигации, в то время как активность продолжает загружаться в фоновом режиме. Моя активность использует диалоговое окно прогресса, чтобы показать сообщение о загрузке и счетчик во время загрузки данных.

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


person shantanu    schedule 11.08.2013    source источник


Ответы (1)


Отвечая на исходный вопрос: если вы откроете диалог для объяснения последним (то есть вызовете show() в нем последним), он будет перекрывать диалог прогресса.


Однако, поскольку вы используете современные компоненты пользовательского интерфейса Android, вы можете сделать это немного более «сексуальным»:

Руководство по стилю Android для ящиков приложений гласит:

Познакомьте пользователя с ящиком при первом использовании

При первом запуске приложения познакомьте пользователя с панелью навигации, автоматически открыв ее. Это гарантирует, что пользователи узнают о панели навигации, и предложит им узнать о структуре вашего приложения, изучив его содержимое. . Продолжайте показывать панель при последующих запусках до тех пор, пока пользователь не откроет панель навигации вручную. Как только вы убедитесь, что пользователь понимает, как открыть панель навигации, запустите приложение с закрытой панелью навигации.

[...]

Дайте пользователю быстрый взгляд

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

Кроме того, ProgressDialog следует использовать только для фоновой работы, блокирующей взаимодействие. Это включает, например, вход в службу. Загрузка данных для отображения активности должна быть визуализирована более подсознательно.

Если вы используете ActionBar, вы можете использовать неопределенный ProgressBar в AcionBar, как описано здесь: Отображение неопределенного прогресса на панели действий Sherlock

В противном случае используйте простой неопределенный ProgressBar и текст «загрузка..» в качестве заполнителя в действии.

Таким образом, ваш пользователь видит, что приложение загружает данные в фоновом режиме, но он также может свободно переходить к другому действию (в этом случае загрузка должна продолжаться, завершаться и быть доступной, когда он вернется. Легко реализуется с помощью Загрузчики).

person Lukas Knuth    schedule 11.08.2013
comment
Я согласен со всем, что говорит Лукас. Если у вас нет пользовательского интерфейса для отображения при загрузке данных, поместите текст Spinner и Loading в центр действия. Затем откройте ящик, чтобы показать его им. Я предполагаю, что к тому времени, когда они закроют его, вы закончите загрузку и предоставите пользователю отличный опыт. Я написал здесь, как это сделать, будет сексуальная анимация stackoverflow.com/a/19883622/772428. Хотя я рекомендую попытаться показать вашему пользователю некоторый пользовательский интерфейс, если это вообще возможно. Чем дольше загружается приложение, тем больше вероятность того, что пользователь выйдет из него... - person MinceMan; 10.11.2013