Android-useful-skill
Java-связанные
SparseArray — «Карта» с эффективной оптимизацией. Рекомендуется изучить родственные классы SparseBooleanArray, SpparseIntArray и SparseLongArray.
ArrayMap — имеет более высокую эффективность использования памяти по сравнению с HashMap, но работает медленнее и не подходит для работы с большим объёмом данных.
SortedList — можно найти в пакете v7.
Java 8 предлагает новые интерфейсы LocalDate и LocalTime. Интерфейс Date универсален, но неудобен в использовании. С появлением новых интерфейсов стало проще работать с датами и временем.
Классы инструментов
ThumbnailUtils — помогает создавать эскизы изображений. Обычно я использую существующие библиотеки загрузки изображений (например, Picasso или Volley), но этот класс может создавать эскизы видео. Важно отметить, что API стал доступен только с версии V8.
MediaMetadataRetriever — используется для получения информации о медиафайлах, такой как название песни, автор, обложка альбома и название, длительность, битрейт и т. д. Для видеофайлов можно получить информацию о ширине и высоте, а также предварительный просмотр.
Formatter.formatFileSize — автоматически преобразует размер файла в килобайты, мегабайты или гигабайты. Раньше приходилось рассчитывать размер вручную.
Log.getStackTraceString() — удобный инструмент класса Log, методы Log.v(), Log.d(), Log.i(), Log.w() и Log.e() записывают информацию в LogCat. Иногда требуется вставить информацию об ошибке в базу данных или пользовательский файл журнала. В этом случае метод static String getStackTraceString(Throwable tr) возвращает информацию об ошибке в виде строки.
PhoneNumberUtils.convertKeypadLettersToDigits — преобразует буквы в цифры, подобно T9.
DateUtils.formatDateTime() — используется для форматирования и локализации времени и даты.
Pair.create() — удобен для создания пар ключ-значение. Можно использовать для хранения групп данных, но это не ключ-значение в классическом понимании.
UrlQuerySanitizer — позволяет проверять URL.
PhoneNumberUtils.formatNumber() — форматирует числа.
Context.getCacheDir() — получает путь к папке с данными кэша. Папка обычно находится на SD-карте (в широком смысле, включая внешние и внутренние хранилища) в Android/data/имя пакета вашего приложения/cache/. При тестировании можно проверить, успешно ли данные были сохранены в этой папке. Преимущество использования этой папки заключается в том, что не нужно создавать её самостоятельно, и она не будет удалена пользователем. При удалении приложения папка также очищается.
Context.getExternalFilesDir() — после запроса разрешения на запись на SD-карту, можно записывать данные в любое место на карте. Это более вежливо по отношению к пользователю, и данные могут быть легко удалены при необходимости. Кроме того, начиная с Android 4.0 Kitkat, данные записываются в эту папку без необходимости в разрешении, и каждый пользователь имеет свой собственный путь для сохранения данных.
Environment.getExternalStoragePublicDirectory() — ещё раз о важности предоставления единообразного опыта пользователям на SD-картах. Этот метод позволяет получить правильный каталог для размещения файлов определённого типа (музыка, изображения и т.д.) на устройстве пользователя.
AlphabetIndexer — вспомогательный класс для алфавитного индексирования.
Системные инструменты
Genymotion — быстрый эмулятор Android, который я постоянно использую.
LocalBroadcastManager — предназначен для внутреннего использования в приложениях и обеспечивает более эффективную и безопасную передачу данных.
Messenger — инструмент для межпроцессного взаимодействия, основанный на AIDL, но очень удобный в использовании.
ViewConfiguration.getScaledTouchSlop() — использует значения из ViewConfiguration для обеспечения согласованности всех сенсорных взаимодействий. Метод определяет, когда пользователь начинает скользить пальцем, чтобы инициировать действие скольжения. Хотя можно определить значение самостоятельно, рекомендуется использовать стандартные значения для согласованности.
ActivityManager.getMemoryClass() — сообщает, сколько памяти доступно на вашем устройстве, что полезно при расчёте размера кэша.
SystemClock.sleep() — удобно использовать для имитации задержек в сети во время отладки.
BroadcastRecevier.setDebugUnregister() — ещё один удобный инструмент для отладки.
PackageManager.setComponentEnabledSetting() — позволяет включать и отключать компоненты в списке программ. Полезно для отключения ненужных функций, таких как приёмники широковещательных сообщений.
HandlerThread — альтернатива созданию новых потоков с помощью Thread.
IntentService — служба, которая может выполнять задачи и завершать работу без необходимости управления дочерними потоками.
AccessibilityService — мощный сервис, требующий ручной активации. Используется для различных уведомлений и перехвата состояний, например, для автоматической установки приложений без root-доступа.
Инструменты для активности
Activity.recreate — воссоздаёт активность. Может быть полезно после изменения темы приложения, чтобы обновить текущую активность без видимого перезапуска.
Activity.startActivities() — часто используется для запуска других активностей в приложении.
Context.createConfigurationContext() — позволяет настроить конфигурацию среды. Может пригодиться, если нужно отображать определённые функции только в определённых условиях.
ActivityManager.clearApplicationUserData() — очищает пользовательские данные приложения, что может быть полезно для реализации функций выхода и входа.
ActivityOptions — определяет анимацию при переключении между активностями. Использование ActivityOptionsCompat решает проблемы совместимости со старыми версиями.
Фрагменты
Fragment.setUserVisibleHint — фрагмент может переопределить этот метод и выполнить логику в зависимости от параметра, указывающего, виден ли фрагмент пользователю.
DialogFragment.setShowsDialog() — интересный способ использования DialogFragment в качестве обычного фрагмента. Позволяет фрагменту выполнять двойную функцию.
FragmentManager.enableDebugLogging() — полезен для наблюдения за состоянием фрагментов.
View
Часть, посвящённая TextView:
EditText.setImeOptions — при отображении виртуальной клавиатуры (soft keyboard) при использовании EditText можно изменить содержимое клавиши ввода (enter key). Для этого используется атрибут android:imeOptions=""*. Возможные значения:
TextView.setError() — используется для проверки ввода пользователя.
Атрибуты макета:
Цвета:
Используется для создания нового цвета на основе начального значения цвета, конечного значения и смещения, что позволяет имитировать плавное изменение цвета при скольжении по нижней панели приложения, как это реализовано в WeChat.
База данных
CursorJoiner: если вы используете только одну базу данных, то можно использовать join в SQL, но если данные поступают из двух независимых ContentProvider, то CursorJoiner будет очень полезен.
DatabaseUtils: набор инструментов для использования различных операций с базой данных.
SQLiteDatabase.yieldIfContendedSafely(): позволяет временно остановить транзакцию базы данных, чтобы не занимать слишком много системных ресурсов.
Элементы управления
Space: Space — это новый элемент управления, добавленный в Android 4.0, который фактически может использоваться для разделения различных элементов управления и формирования пустой области. Это лёгкий компонент представления, который может пропускать Draw и является отличным выбором для любых сценариев, где требуется заполнитель.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )