Мне нужно реализовать заставку в моем сотовом приложении. Я использую этот код в onCreate действия, чтобы показать всплеск:
setContentView(R.layout.splash);
getActionBar().hide();
и этот код, чтобы показать основной интерфейс через некоторое время:
setContentView(R.layout.main);
getActionBar().show();
Но перед вызовом onCreate и появлением всплеска появляется небольшая часть времени, когда отображается панель действий.
Как сделать панель действий невидимой?
Я пытался применить тему к активности без панели действий:
<item name="android:windowActionBar">false</item>
но в этом случае getActionBar () всегда возвращает ноль, и я не нашел способа показать это снова.
android
android-3.0-honeycomb
android-actionbar
Илья Ижовкин
источник
источник
Theme.AppCompat.Light
... используйте это Как ответить [1] [1]: stackoverflow.com/a/25365193/1364896Ответы:
Установка
android:windowActionBar="false"
действительно отключает ActionBar, но затем, как вы говорите,getActionBar();
возвращает ноль. Это решается путем:Это создает ActionBar и сразу же скрывает его, прежде чем он успел отобразиться.
Но сейчас есть другая проблема. После помещения
windowActionBar="false"
в тему Activity рисует свой обычный заголовок окна вместо ActionBar.Если мы попытаемся избежать этого, используя некоторые из стандартных
*.NoTitleBar
тем или вставим<item name="android:windowNoTitle">true</item>
собственную тему, это не сработает.Причина в том, что ActionBar зависит от заголовка окна для отображения самого себя, то есть ActionBar является преобразованным заголовком окна.
Таким образом, хитрость, которая может помочь нам, состоит в том, чтобы добавить еще одну вещь в нашу тему Activity xml:
Это сделает заголовок окна с нулевой высотой, таким образом, практически невидимым.
В вашем случае, после того, как вы закончили с отображением заставки, вы можете просто позвонить
и вы сделали. Действие начнется без мерцания ActionBar и отображения заголовка окна.
ADDON: Если вы показываете и скрываете панель действий несколько раз, возможно, вы заметили, что первый показ не анимирован. С тех пор показ и сокрытие анимированы. Если вы хотите использовать анимацию при первом показе, вы можете использовать это:
То же самое может быть достигнуто с помощью:
но может потребоваться дополнительная логика, чтобы проверить, является ли это первым показом Действия.
Идея состоит в том, чтобы немного задержать сокрытие ActionBar. В некотором смысле мы позволяем отображать ActionBar, но затем скрываем его немедленно. Таким образом, мы выходим за пределы первого неанимированного показа, и следующий показ будет считаться вторым, поэтому он будет анимированным.
Как вы уже догадались , есть шанс , что ActionBar мог увидеть , прежде чем она была скрыта от просроченной работы. Это на самом деле так. В большинстве случаев ничего не видно, но время от времени вы можете увидеть мерцание ActionBar на долю секунды.
В любом случае это не очень хорошее решение, поэтому я приветствую любые предложения.
Дополнение для поддержки пользователей панели действий v7, код будет:
источник
setTheme
? Потому что ваш ответ прекрасно работает, если я задаю тему из Манифеста, но если я делаю это вonCreate
(в моем случае тема зависит от предпочтения светлой темной темы), панель голографического действия по умолчанию мигает раньше, чем та, которую я установил в своей теме тем не мение. Но, может быть, это стоит другого полного ТАК вопроса.android:theme="@android:style/Theme.NoTitleBar"
в Манифесте, а затемsetTheme(R.style.MyTheme)
в основной деятельностиonCreate
; Это гарантирует (в Android 4+) предотвращение вспышки голографического изображения по умолчаниюActionBar
до того, которое я определил в своей теме (я прибыл сюда в поисках способа обойти это; мне фактически не нужен экран-заставка).getSupportActionBar().hide();
после,getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
и все взрывается с NPE. Любые идеи? Проблема сTheme.AppCompat
?Используя этот простой код в вашем файле .class, чтобы скрыть панель действий
источник
Если вы используете ActionBarSherlock, то используйте Theme.Sherlock.NoActionBar Theme в своей деятельности
источник
<activity android:theme="@android:style/Theme.NoActionBar">
.Theme.Sherlock.NoActionBar
будет означать, что вызовgetActionBar()
илиgetSupportActionBar()
(чтобы впоследствии отобразить панель действий) возвращает нуль ...error: Error: No resource found that matches the given name (at 'theme' with value '@android:style/ Theme.NoActionBar').
Создайте два стиля:
Установите AppThemeNoBar в качестве темы приложения, а AppThemeBar - на действие, в котором вы хотите отобразить панель действий.Используя два стиля, вы не увидите панель действий во время загрузки представлений.
Проверьте эту ссылку Android: скрыть панель действий при просмотре загрузки
источник
Привет у меня есть простое решение с использованием 2 тем
Тема заставки (добавьте ее в манифест):
<style name="SplashTheme" parent="@android:style/Theme.Holo.NoActionBar"> <item name="android:windowBackground">@color/red</item> </style>
обычная тема (добавьте ее в свою деятельность с помощью setTheme (R.style.Theme)):
<style name="Theme" parent="@style/Theme.Holo"> <item name="android:windowBackground">@color/blue</item> </style>
Для поддержки SDK 10:
источник
Я также пытался скрыть панель действий на Android 2.2, но ни одно из этих решений не помогло. Все заканчивается крахом. Я проверил DDMS бревна, он говорил мне , чтобы использовать «Theme.AppCompat'.At Наконец я решил эту проблему, изменив
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
линиюв
android:theme="@style/Theme.AppCompat.NoActionBar"
и это сработало, но интерфейс был темным.потом я попробовал
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
и наконец получил то, что хотел.После этого, когда я искал «AppCompat» на сайте разработчика, я получил это.
Поэтому я думаю, что решение для Android 2.2
И извините за мой плохой английский, как всегда.
источник
Лучшим результатом для меня было создание деятельности с ThemeNoTitleBar и без содержимого в качестве средства запуска. Тогда это занятие призываем непосредственно к другому.
Конечно, если вы хотите, вы можете добавить контент в Splash Activity, но в моем случае я просто хотел показать приложение напрямую.
Manifest:
Деятельность:
}
источник
Если вы используете один из них,
Activity
включающий заставку, то вы можете сделать это, если вы используетеSherlockActionBar
После заставки вы можете показать его снова с ...
Так же должно быть и с родным
ActionBar
из Android.источник
Решение @Clerics работает. Но, похоже, это также проблема с некоторыми нативными приложениями googles: googles, play store, talk. Также другие большие приложения, такие как Skype.
РЕДАКТИРОВАТЬ : Сильфонное решение дало мне проблему для actionbarsherlock на api <4.0, причина устанавливается, тема не работает до бутерброда с мороженым
Добавьте в свой манифест следующее в тегах приложения или активности:
И тогда в вашей основной деятельности:
источник
лучший и простой
requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
источник
2015, используя библиотеку поддержки v7 с темой AppCompat, установите эту тему для своей деятельности.
источник
Потому что
Splashscreen
вы должны использовать эту строкуmanifest
и не использоватьgetActionBar()
и один раз, когда Splash
Activity
закончен в основномActivity
использовании ниже или ничегоисточник
<item android:name="android:windowActionBar">true</item>
избавляется от этой ошибки, но я не знаю, работает ли она до сих пор.Попробуйте это, это работает для меня:
Ниже избавляется от заголовка активности
Внизу исключена панель уведомлений, чтобы сделать деятельность в полноэкранном режиме.
(Полный пример ниже). Обратите внимание: эти методы были вызваны до того, как мы настроили представление содержимого нашей деятельности.
источник
это может быть удобно
добавить это в свой манифест
ура
источник
Лучший способ, который я найду после прочтения всех доступных опций, - это установить главную тему без ActionBar, а затем настроить MyTheme в коде в родительском элементе всех действий.
Manifest:
BaseActivity:
Этот способ помогает мне избежать ActionBar при запуске приложения!
источник
Уже опубликованные решения имели побочный эффект: первый вызов .show () не оживил ActionBar для меня. Я получил другое хорошее решение, которое исправило это:
Создайте прозрачный чертеж - что-то вроде этого:
Установите фактический фон панели действий в невидимое настраиваемое представление, которое вы устанавливаете на панели действий:
Установите прозрачный фон для панели действий в onCreate:
Важно: не скрывайте панель действий сразу в onCreate, но с небольшой задержкой позже - например, когда макет закончен с созданием:
Перед вашим первым вызовом .show () установите видимый пользовательский вид:
источник
В случае, если у вас есть ноль, потому что вы используете библиотеку поддержки , а не
getActionBar()
вам нужно позвонитьgetSupportActionBar()
.источник
Просто добавьте это к вашей MainActivity в функции onCreate.
источник
supportActionBar?.apply { hide() }
Поместите экран-заставку в отдельное упражнение и используйте
startActivityForResult
егоonCreate
для отображения в методе основного занятия. Это работает, потому что, согласно документам:Вероятно, вам следует делать это только в том случае, если аргументом
onCreate
являетсяnull
(указывает на новый запуск вашей активности, в отличие от перезапуска из-за изменения конфигурации).источник
У меня все еще была ошибка с нулевым указателем, и, наконец, это помогло, когда я вызвал сначала getWindow (). RequestFeature (), а затем super.onCreate ()
источник
Просто добавьте это в вашем styles.xml
источник
На самом деле, вы можете просто установить всплеск
Activity
сNoActionBar
и установить ваш главныйactivity
с панелью действий.источник
Лучший способ сделать это - создать первое действие как пустое действие и контент, который вы хотите поместить, а затем через некоторое время запустить другое действие. Следуя этому пути, вы можете выполнить первое действие в качестве заставки без панели действий или чего-либо еще. Вот мое первое занятие
После этого вы можете поместить любое действие в качестве первого. Если вы не хотите, чтобы на каком-либо экране отсутствовала панель действий, просто добавьте это в свои стили.
источник
Android-студия предоставляет в шаблоне сборки полноэкранный режим, если вы используете Android-студию, вы можете выполнить нижеприведенный шаг для реализации полноэкранного режима.
Готово. Android студия выполнила свою работу, теперь вы можете проверить код на весь экран.
источник
это лучший способ, которым я использовал Go to java file, после
onCreate
:источник
Я понимаю, что размещение ссылок - не лучший способ сделать что-то, но я настоятельно рекомендую вам прочитать следующую документацию от Google. Это официальный документ для Android о том, как управлять интерфейсом вашей системы (такие как панель действий, панель навигации и т. Д.). К сожалению, информация слишком велика для прямой публикации, но после прочтения вы поймете, как именно показывать и скрывать функции независимо от того, для какой версии вы разрабатываете, это так просто!
Если ссылка когда-либо изменится, ее можно найти в официальной документации Android для обучения -> Начало работы -> Лучшие практики для пользовательского интерфейса -> Управление системы.
https://developer.android.com/training/system-ui/index.html
источник
Вы можете использовать это:
getSupportActionBar().hide();
если это не работает, попробуйте это:если выше не работает, попробуйте так:
в вашем каталоге = res / values / style.xml, откройте style.xml -> есть атрибут
parent
изменение наparent="Theme.AppCompat.Light.DarkActionBar"
если все это не работает тоже. я больше не знаю но для меня это работает.
источник