В прошлой теме было разработано приложение, которое выводит оба фрагмента на экран. Продолжим работу с этим проектом. Всего было создано два фрагмента: ListFragment для отображения списка и DetailFragment для отображения выбранного элемента в списке. И MainActivity выводила оба фрагмента на экран:
Но отображение двух и более фрагментов при портретной ориентации не очень оптимально. Например, в прошлой теме приложение выглядело так:
Но если список большой, то второй фрагмент, который отображает выбранный элемент, соответственно уходит вниз. При альбомной ориентации получится расположение еще более неоптимально. Поэтому сначала изменим файл activity_main.xml , чтобы более удобно располагать фрагменты в альбомной ориентации:
Для более удобного расположения при альбомной ориентации, как правило, решение довольно простое — два фрагмента располагаются горизонтально в ряд.
Как перевернуть экран на Самсунге / включить книжный режим / альбомную ориентацию на Samsung android
Теперь рассмотрим как более удачно расположить фрагменты при портретной ориентации. Нередко в этом случае решение следующее — одномоментно экран отображает только один фрагмент.
Итак, создадим в проекте в папке res , где хранятся все ресурсы, подкаталог layout-port , который будет хранить файлы интерфейса для портретной ориентации. Для этого переключимся к полному виду проекта. Нажмем на папку res правой кнопкой мыши и в контекстном меню выберем New -> Android Resource Directory :
Назовем новую папку layout-port :
Далее добавим в res/layout-port новый файл activity_main.xml и определим в нем следующий код:
Этот файл будет использоваться для портретной ориентации MainActivity. Таким образом, MainActivity в портретном режиме будет отображать только один список.
Теперь добавим новую activity, которую назовем DetailActivity :
В итоге проект будет выглядеть так:
В папке res/layout в файле activity_detail.xml определим для DetailActivity следующий интерфейс:
Таким образом, интерфейс DetailActivity будет определяться загружаемым фрагментом DetailFragment.
Далее в коде DetailActivity определим следующий код:
Как включить альбомный режим на телефоне Samsung | автоповорот экрана Samsung | поворот экрана
Здесь в первую очередь проверяем конфигурацию. Так как эта activity предназначена только для портретного режима, то при альбомной ориентации осуществляем выход:
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
Если устройство находится в портретном режиме, то получаем переданные данные по ключу «SELECTED_ITEM»:
Bundle extras = getIntent().getExtras(); if (extras != null) selectedItem = extras.getString(SELECTED_ITEM);
Предполагается, что по ключу «SELECTED_ITEM» будет передаваться выбранные элемент списка из MainActivity, когда она будет находиться в портретной ориентации.
И очень важный момент — нам надо передать это значение в текстовое поле, определенное во фрагменте. Однако надо учитывать особенности жизненного цикла представления фрагмента. В данном случае переопределяется метод onResume() , потому что при вызове этого метода DetailActivity уже будет видима на экране, и пользователь сможет с ней взаимодействовать. А это также значит, что в этой точке уже будет активен и фрагмент и его представление. К примеру, в методе onCreate() представление фрагмента еще полностью не создано, поэтому мы не можем в нем получить виджеты, которые определены во фрагменте. Зато можем все это сделать в методе onResume() .
protected void onResume()
И в данном случае мы получаем через метод getSupportFragmentManager() фрагмент DetailFragment и вызываем его метод setSelectedItem(). В качестве аргумента в этот метод передается строковое значение, переданное через Intent.
И также изменим главную activity — MainActivity :
С помощью метода fragment.isVisible() мы можем узнать, активен ли определенный фрагмент в разметке интерфейса. Если фрагмента DetailFragment в данный момент не видим, то используется портретный режим, и поэтому запускается DetailActivity. Иначе идет работа с фрагментом внутри MainActivity, котора в альбомном режиме отображает сразу два фрагмента — ListFragment и DetailFragment.
Запустим приложение и перейдем в альбомный режим:
А при портретной ориентации экран будет выглядеть иначе:
Источник: metanit.com
Samsung One UI: 6 полезных советов для Android 9 на Galaxy S9 и S10
Советы
На чтение 4 мин Просмотров 401 Опубликовано 06.07.2019
Если ваш Galaxy S9 был недавно обновлен, или вы планируете купить S10, то вам необходимо ознакомиться с One UI от Samsung. Полностью обновленный Samsung Experience 9.5 теперь предлагает стильность, переработанные приложения и совершенно новую философию, с акцентом на умное и быстрое взаимодействие.
Предлагаем вам ознакомиться с 6 полезными советами, которые наверняка вам пригодятся.
Включение жестовой навигации
Самое важное изменение в One UI – добавление жестовой навигации. Samsung выбрала другой метод, нежели Google или Apple. Корейская компания превратила иконку панели навигации в жесты: проведите пальцем вверх слева, чтобы увидеть последние приложения, проведите пальцем вверх от центра, чтобы вернуться домой, и вверх вправо, чтобы вернуться назад. Это действительно простая и умная схема, но при обновлении она будет отключена по умолчанию. Чтобы включить ее, зайдите в настройки, затем откройте раздел «Дисплей», потом выберите «Панель навигации».
После этого вы увидите две опции для типа навигации: иконки и полноэкранные жесты. Коснитесь круга рядом с жестами, и знакомые иконки навигационной панели превратятся в три тонкие линии в нижней части экрана, указывающие, где можно провести пальцем. Как только вы освоитесь с этим, вы можете полностью отключить индикаторы, задействовав ползунок подсказок для жестов.
Открытие приложения в режиме разделенного экрана
Samsung изменила поведение экрана последних приложений в One UI, теперь приложения прокручиваются по горизонтали, а не по вертикали. Это означает новый способ взаимодействия с вашими приложениями. Вам больше не нужно перетаскивать экраны, чтобы использовать разделенный экран или всплывающее окно.
Просто нажмите и удерживайте иконку приложения, после чего вы получите список из четырех вариантов. Выберите вариант «Открыть в режиме разделенного экрана», и приложение автоматически прикрепится к верхней части экрана. Выберите второе приложение, коснувшись, чтобы открыть его, как обычно, и оба приложения будут сопряжены и готовы к использованию.
Включение ночного режима
Еще одно огромное изменение для One UI – это добавление общесистемной темной темы. Она затемняет панель уведомлений, добавляет черноты приложениям и определенным образом облегчает восприятие изображения глазами. Чтобы активировать данную опцию, кликните по надписи «Ночной режим» в «Быстрых настройках» или задействуйте иконку «Ночной режим» в настройках дисплея.
Переход к адресной строке в Samsung Internet
В браузере Samsung One UI иконки и настройки расположены в нижней панели для облегчения доступа одной рукой. Вам по-прежнему необходимо увеличить верхнюю часть экрана, чтобы добраться до адресной строки, но есть полезная фишка: если вы выполните долгое нажатие на клавишу «Домой», курсор переместится на адресную строку, и вы сможете без труда ввести нужную вам информацию.
Поворот экрана вручную
Функция автоповорота может быть полезна, когда вы хотите посмотреть видео или быстро переключиться на игру, но это может быть неприятно, когда вы находитесь в кровати или в ухабистой машине. В One UI Samsung реализовала возможность Android Pie поворачивать экран вручную. Данный интерфейс имеет ту же иконку автоповорота, что и раньше, но при переключении в портретный режим поведение отличается: при переключении телефона в альбомный режим экран не поворачивается, но в правом нижнем углу появляется небольшой значок. Нажмите на него, и экран повернется и зафиксируется в новом положении. Если вы хотите вернуться назад, переверните телефон и снова коснитесь значка.
Быстрый запуск панели уведомлений
Независимо от того, используете ли вы жесты или навигационную панель, в One UI встроен новый ярлык, который должен понравиться всем пользователям. Чтобы получить доступ к панели уведомлений, все, что вам нужно сделать – провести по центру экрана вниз, чтобы увеличить его, и затем выполнить еще один свайп, чтобы увидеть полный набор быстрых настроек. Чтобы больше не видеть их, просто проведите пальцем вверх. Это проще, чем использовать сканер отпечатков пальцев в качестве миниатюрного трекпада, и такое простое изменение мы бы хотели видеть на всех телефонах Android.
Источник: doitdroid.com
Управляем ориентацией устройства в Android
Вы наверное на раз замечали что некоторые приложения работаю в горизонтальном положении устройства, а некоторый в вертикальном, или же переворачивая устройство приложение само меняет позиционирование Layout и всех компонентов. Именно об этом пойдет речь в этом уроке.
Wiki
Вам стоит знать что существует 3 режима отображения:
3. Квадратный (уже не используется)
Как видите портретный режим более привычный телефонам а альбомный планшетам.
Шаг 1
Давайте теперь разберемся как же позиционировать UI компоненты.
Допустим у вас есть следующий набор компонентов на main.xml:
Выглядеть данный Layout будет в портретном виде так:
Теперь перед нами зада сделать так чтобы, когда устройство переворачивается горизонтальное положение (в альбомный вид), то делать расположение элементов на layout следующим:
Для этого нам достаточно в папке DetectOrientationDeviceres создать папку layout-land и в ней создать точно такой же layout как и первый наш main.xml:
Как видите мы расположили на этом layout компоненты так как бы хотели их видеть в альбомном виде.
После этих изменений мы увидим что при изменении ориентации устройства мы будем видеть разные компоновки layout.
Структура проекта:
Как вы видите есть стандартная папка layout и в ней наш main.xml и есть еще одна папка, которую мы добавили layout-land именно в ней мы создаем второй файл UI который и будет отображать альбомный вид.
Шаг 2
Теперь рассмотрим пример как программно определить текущую ориентацию устройства.
Давайте В классе MainActivity напишем метод, который будет определять положение устройства:
public void detectOrientation(View v) < Context appContext = getApplicationContext(); Configuration configuration = getResources().getConfiguration(); if(configuration.orientation == Configuration.ORIENTATION_PORTRAIT)< Toast.makeText(appContext, «Портретная ориентация», Toast.LENGTH_LONG).show(); >if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) < Toast.makeText(appContext, «Альбомная ориентация», Toast.LENGTH_LONG).show(); >>
В 3-й строке мы получаем конфигурации ресурсов, с которых будем получать ориентацию, и в строке 4 и 7 мы проверяем ориентацию и выполняем соответствующее действие.
android_onClick=»detectOrientation»
и после нажатия на ‘Кнопка №1‘ будет показываться в каком положении устройство:
Вот так у нас должно работать определение ориентации, но устройство можно повернуть в любую сторону, и какже этим управлять? С этим мы разберемся в следующем шаге.
Шаг 3
Давайте в класс MainActivity допишем еще один метод в класс который будет определять куда повернуто устройство:
public void detectRotate(View v) < Context appContext = getApplicationContext(); int rotate = getWindowManager().getDefaultDisplay().getRotation(); if(rotate == Surface.ROTATION_0)< Toast.makeText(appContext, «Повернули на 0 градусов», Toast.LENGTH_LONG).show(); >if(rotate == Surface.ROTATION_90) < Toast.makeText(appContext, «Повернули на 90 градусов в лево», Toast.LENGTH_LONG).show(); >if(rotate == Surface.ROTATION_180) < Toast.makeText(appContext, «Повернули на 180», Toast.LENGTH_LONG).show(); >if(rotate == Surface.ROTATION_270) < Toast.makeText(appContext, «Повернули на 90 в право», Toast.LENGTH_LONG).show(); >>
В 3-й строке мы получаем ориентацию с ресурсов.
android_onClick=»detectRotate»
не забудьте также во втором layout поставить этот обработчик.
Шаг 4
Теперь научимся делать фиксированную ориентацию.
Давайте зайдем в MainActivity и допишем в метод onCreate одну строку:
в 6-й строке мы программно ставим альбомный вид.
Описание всех ориентаций ActivityInfo можно посмотреть тут.
Или же можно задать это ограничение в AndroidManifest.xml:
В строке 3 мы указываем что отображение будет только в альбомном виде.
Для портретного режима стоит использовать:
android_screenOrientation=»portrait»
Источник: devcolibri.com