Intereting Posts
Android: какой лучший способ хранить данные JSON в автономном режиме для приложения в Android? Сделать полосу прокрутки видимой в ионном контенте при использовании естественного прокрутки SSL-сертификат для веб-служб REST (используется Android)? Z-индекс в относительной компоновке Стирание повернутого изображения в Android не показывает стирание правильного пути Отключить SoftKeyboard внутри WebView NullPointerException в getReseources () Растровый массив Как использовать анимацию для анимации Я пытаюсь показать тост, когда эта кнопка нажата. Но код не работает Как динамически выделять SIDE дороги (или нарисовать линию рядом) с картами google или mapquest на Android Какова цель события «onFling» и «onScroll» в GestureDetector для Android? Как синхронизировать данные между различными устройствами Как получить данные от cordova-plugin-nativestorage в android java Ссылка на XML-строку в массиве XML (Android) Для вызова требуется уровень API 11 (текущий мин равен 1)

Плавающий вид Android через действия

требование

У меня есть приложение с двумя действиями, например A и B , с навигациями типа A->B и B->A (на заднем пульте). Мое требование

  • Я хочу, чтобы на экране отображался вид / макет, независимо от того, какая активность в данный момент видна. Я раздуваю это представление в начале приложения (onCreate of activity A), он остается статическим на экране во время перехода от A-> B и когда B на экране.
  • Поэтому, естественно, этот взгляд следует раздувать только один раз (когда приложение запускается, onCreate of A).

Что я узнал

Я сделал некоторые поиски, и из того, что я мог найти, есть два метода повторного использования макета в android

  • Используя <include>

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

  • Используя ViewStub

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

Еще один намек на мое требование

Для людей, знакомых с разработкой iPhone, вы можете добавить view в UIWindow , который остается там, независимо от того, какой UIViewController в настоящее время активен. Я хочу точное поведение в своем приложении.

Моя первоначальная настройка

Я нацелен на Android 2.1 и выше. Кажется, Fragment доступен с уровня API 11 (Android 3.0) и выше. Один из вариантов – использовать библиотеку совместимости Android, которая позволяет использовать Fragment в более старых версиях. В настоящее время я изучаю это. Но я также хотел бы знать, есть ли какие-либо другие методы для выполнения моих требований, а не изменять весь мой проект и использовать фрагменты.

У меня около 30 нечетных действий в моем приложении, и я хочу, чтобы этот макет плавал над всеми из них. Я только что сделал тестовый пример с двумя действиями, чтобы сделать вопрос простым и легким.

Решение 1: FrameLayout

Я думаю, что вы хотите использовать FrameLayout . FrameLayout предназначен для блокировки области на экране, чтобы отобразить один элемент. Представления для детей рисуются в стеке, причем последний добавленный ребенок сверху.

http://developer.android.com/reference/android/widget/FrameLayout.html

Затем прочитайте здесь о заднем стеке, который вы можете использовать в своей деятельности, чтобы перевернуть между действиями с помощью кнопки «Назад»:

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

Решение 2: Фрагментные транзакции

Вместо того, чтобы кодировать два отдельных действия, введите одно действие с двумя фрагментами. Вот фрагмент из документации Fragments :

«Фрагмент всегда должен быть встроен в действие, а жизненный цикл фрагмента напрямую зависит от жизненного цикла активности хоста. Например, когда действие приостановлено, все фрагменты в нем, а когда действие уничтожено, то есть все фрагменты Однако, пока действие выполняется (оно находится в состоянии возобновленного жизненного цикла), вы можете самостоятельно управлять каждым фрагментом, например, добавлять или удалять их. Когда вы выполняете такую ​​транзакцию фрагмента, вы также можете добавить ее в задний стек , Управляемый активностью – каждая запись заднего стека в активности – это запись произошедшей транзакции фрагмента. Задний стек позволяет пользователю отменить транзакцию фрагмента (перемещаться назад), нажав кнопку «Назад».