Меню

Как изменить цвет статусбара



Возможности Root прав: Tinted Status Bar, или как изменить статус бар.

Как вы, наверно, помните в своей колонке я описываю наиболее интересные приложения, для нормального (полного) функционирования которых нужны Root права. Так вот модуль для Xposed «Tinted Status Bar» не стал исключением.

В связи с добавлением в последних версиях Android’a динамического статус бара (верхняя панель меняет свой цвет в зависимости от приложения) приложение Tinted Status Bar снова стало востребованным (сначала это произошло пи добавлении аналогичной функции в iOS 7).

Установка этого модуля осуществляется так же, как и со всеми модулями Xposed Framework (установить, конечно же, Xposed, затем модуль, а потом активировать его в настройках Xposed’a).

Само приложение имеет простой интерфейс (я буду описывать англоязычную версию, т.к. ей и пользуюсь).

Первые несколько пунктов это «благодарности разработчикам», «пожертвования» и т.д. ) 4-м же является раздел «Download plugins», где можно скачать уже готовые решения для отдельных приложений ( у меня там всего три плагина: для Google Chrome, Instagram и Snapchat).

Пролистав ниже вы найдёте пункт «Overlay mode»- там можно настроить градиент, т.е. затемнение в верхней части экрана, делающее статус бар не таким однородным.

В принципе, сразу после установки Tinted Status Bar уже готов выполнять свою основную цель — однако не все так просто. Заменить цвет статус бара программа может, но не всегда верно. Например, приложение выполнено в белых цветах, или при использовании лаунчера вы хотите добиться прозрачности.

Что бы сделать статус бар прозрачным нам нужно:

  • Обязательное наличие Xposed
  • Заходим в пункт «Per app tints»

Вот так, друзья, можно немного приблизить ваше устройство к новому Android Lollipop, если обновления на ваш смартфон нет.

Источник

Как изменить цвет статусбара

Друзья, подскажите. Реализовано ли уже в Seattle установка цвета системного StatusBar с цветом ToolBar на форме? Как это реализовано на платформе iOS.

Поделиться сообщением

Ссылка на сообщение

15 ответов на этот вопрос

Рекомендуемые сообщения

Присоединяйтесь к обсуждению

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

Похожий контент

Здравствуйте. У меня такая проблема.
Пытаюсь скачать файл:

var S : TMemoryStream; begin S := TMemoryStream.Create(); IdHTTP1.Get(‘http://sitename.com/7UlmBU7IXHA.jpg’, S); S.SaveToFile(‘/storage/emulated/0/ImageFile.jpg’); S.Free; end;
Проблема возникает на последней стадии — при сохранении файла. Android пишет, Cannot create file: ‘/storage/emulated/0/ImageFile.jpg’. Permission denied, то есть доступ запрещен. Но как его разрешить? Когда я устанавливаю приложение, система пишет, что никаких разрешений данная программа не требует.

Всем привет, с помощью Java2Op сделал обертку библиотеки получил модуль с интерфейсами.
Теперь сам вопрос в JavaInterfaces.pas есть описание:

JUsbManagerClass = interface(JObjectClass) [‘<1048A6E9-E1B5-4DA5-A168-ED91E8DE5284>‘] function _GetACTION_USB_ACCESSORY_ATTACHED: JString; cdecl; function _GetACTION_USB_ACCESSORY_DETACHED: JString; cdecl; function _GetACTION_USB_DEVICE_ATTACHED: JString; cdecl; function _GetACTION_USB_DEVICE_DETACHED: JString; cdecl; function _GetEXTRA_ACCESSORY: JString; cdecl; function _GetEXTRA_DEVICE: JString; cdecl; function _GetEXTRA_PERMISSION_GRANTED: JString; cdecl; function getAccessoryList: TJavaObjectArray ; cdecl;//Deprecated function openAccessory(accessory: JUsbAccessory): JParcelFileDescriptor; cdecl;//Deprecated function openDevice(device: JUsbDevice): JUsbDeviceConnection; cdecl;//Deprecated procedure requestPermission(device: JUsbDevice; pi: JPendingIntent); cdecl; overload;//Deprecated property ACTION_USB_ACCESSORY_ATTACHED: JString read _GetACTION_USB_ACCESSORY_ATTACHED; property ACTION_USB_ACCESSORY_DETACHED: JString read _GetACTION_USB_ACCESSORY_DETACHED; property ACTION_USB_DEVICE_ATTACHED: JString read _GetACTION_USB_DEVICE_ATTACHED; property ACTION_USB_DEVICE_DETACHED: JString read _GetACTION_USB_DEVICE_DETACHED; property EXTRA_ACCESSORY: JString read _GetEXTRA_ACCESSORY; property EXTRA_DEVICE: JString read _GetEXTRA_DEVICE; property EXTRA_PERMISSION_GRANTED: JString read _GetEXTRA_PERMISSION_GRANTED; end; [JavaSignature(‘android/hardware/usb/UsbManager’)] JUsbManager = interface(JObject) [‘<6F603A25-E816-4012-9B23-054B428A4A75>‘] function getDeviceList: JHashMap; cdecl;//Deprecated function hasPermission(device: JUsbDevice): Boolean; cdecl; overload;//Deprecated function hasPermission(accessory: JUsbAccessory): Boolean; cdecl; overload;//Deprecated procedure requestPermission(accessory: JUsbAccessory; pi: JPendingIntent); cdecl; overload;//Deprecated end; TJUsbManager = class(TJavaGenericImport ) end; Что бы получить доступ к методам интерфейса используется следующая конструкция:
JavaObject := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.USB_SERVICE); FUsbManager := TJUsbManager.Wrap((JavaObject as ILocalObject).GetObjectID); теперь я могу получить доступ к методам JUsbManager, а как получить доступ к методам JUsbManagerClass
Вот пример кода на Java, который хочу реализовать в Delphi:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); List availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager); if (availableDrivers.isEmpty()) < return; >// Open a connection to the first available driver. UsbSerialDriver driver = availableDrivers.get(0); //Вот тут мы видим что из экземпляра класса мы вызываем openDriver, как это сделать в Delphi UsbDeviceConnection connection = manager.openDevice(driver.getDevice()); Как мы можем заметить этого метода в описании интерфейса нет, но есть в классе, как получить доступ к экземпляру класса?

Недавно решил написать небольшое приложение под андроид, которое будет в удобном виде показывать расписание моего ВУЗа (они нам передают 20 летний привет в виде экселя), ну и задно изучить FMX.
Написал за пару дней парсер, все более менее работает. Встал вопрос — какими компонентами все это удобно и красиво отобразить? Перечитал кучу инфы по стандартным компонентам и, кажется, они мне не подойдут
Для того чтобы было понятно, чего именно я хочу — набросал схему. Границы для наглядности.
Каким компонентом это можно реализовать? Если все-таки коробочные тоже годятся, то ткните лицом куда читать 🙂
Заранее спасибо.

поделитесь пожалуйста пустым проектом, готовым к публикации для TV устройств.
что-то никак не получается опубликовать, сейчас отклонили с такими ошибками:
APK:8
No Now Playing notification [card]»
Your App does not contain a “Now Playing” notification [card] for when the user has selected the HOME button within the app. Please refer to our Displaying a Now Playing Card documentation for more details.
APK:8
Play/Pause key event is not respected during playback
Your media apps that play video or music content must respect the play/pause key during playback. Please refer to our Media Play/Pause documentation and Update the Playback State documentation for details.
Missing DPad functionality
Your app requires user interaction for menus or app navigation. Please make sure that all menus and app navigation are fully functional using a DPad. Please refer to our DPAD Control and Hardware Declaration documentation.
ну и баннер не прилепил
No full-size app banner
Your app does not contain a full-size app banner or is it not visible in the launcher. We are targeting 1080P, which we consider xhdpi. Apps should include the banner in the xhdpi (320 dpi) drawables folder with a size of (320px × 180px). Please refer to our Home Screen Banner and UI Patterns documentation.
The title should help users identify apps in the launcher. Please refer to our Visual Design and User Interaction documentation for more information.
был бы очень благодарен за рабочий пустой костяк с манифестом.

В процессе разработки столкнулся с очень странной ситуацией, корни которой до сих пор неясны, но решение нашлось.
Итак. Делфи 10.3.3. Чистое приложение — пустая форма и кнопка. Отлично работает на разных устройствах кроме Samsung Galaxy Tab A (2016). Android 5.1.1
Программа падает, не успев даже загрузиться. Любая. При этом она же, скомпилированная на другом компе, запускается нормально. И даже после изменения SDK/NDK на нем, ничего не падает.
LogCat дает крайне странную картину
java.lang.IllegalArgumentException: Unable to load native library: /data/app-lib/com.embarcadero.Project1-1/libProject1.so
Начинаем экспериментировать с SDK, NDK и т.д. Поставил также хотфиксы для 10.3.3.
Сразу скажу, SDK/NDK ставились отдельно через Android studio, не скачивались вместе с Delphi. Не торопитесь бросать чтение на этом месте!)) На другом компе, где все работает, все ставилось точно так же.
Короче, очень много комбинаций версий SDK/NDK проверено.
Результат такой. При постепенном понижении версии NDK все взлетело при NDK v22.

При этом версия SDK видимо такого большого влияния не имеет, потому что этот вариант нормально работает

Повторюсь. На других устройствах все работало и на более новых Ndk. Xiaomi Mi Pad4 , Samsung Galaxy Tab A (2019), Xiaomi Redmi 5 и 5Plus

Спасибо за участие и помощь в разборе завалов @Andrey Efimov

в манифест и свой файл file_paths.xml (или как вам его советуют назвать в интернетах) в деплой.
Теперь все это делается хоть несколько странно и однобоко, но автоматически, путем установки галочки Secure File Sharing

после этого в манифесте автоматически пропишется один из вариантов размещения файлов, которые вы можете найти в интернете. Используется алиас external-path
файл, показанный на рисунке, создается автоматически самой делфи.

теперь остается отгадать, какой путь реально подставится вместо «.»
Как показала практика, все пути выглядят не так, как кажется, если исходить из простого здравого смысла. Целый день использования GetHomeDir и других полезных методов TPath завел меня совсем в тупик.
Оказалось все проще (?)
st:TMemoryStream; OutputDir: JFile; ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; . OutputDir := TAndroidHelper.Context.getExternalCacheDir(); path := JStringToString(OutputDir.getAbsolutePath); filename := path+’/ASDroid2.apk’; ApkFile := TJfile.JavaClass.init( StringToJstring(filename)); FApkUri := TAndroidHelper.JFileToJURI(ApkFile); st.Position := 0; st.SaveToFile(filename); обратите внимание, в provider_paths мы задаем external-paths, а в коде ищем ExternalCacheDir. (For.Unbelievably.Creative.Knowers!)
Потом все просто. FApkUri передаем в интент и запускаем
итоговый код примерно таков. (скачивание в потоке с использованием небольшого собственного API, но там ничего важного, можно не обращать внимания)
procedure TasdSettingsFrame.bDownloadClick(Sender: TObject); begin <$IFDEF ANDROID>bDownload.Enabled := False; DownloadAndRun(); <$ENDIF>end; <$IFDEF ANDROID>procedure TasdSettingsFrame.DownloadAndRun(); begin ttask.Run(procedure var aapi:TasdAPI; st:TMemoryStream; OutputDir: JFile; ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; begin st := TMemoryStream.Create; aapi := TasdAPI.Clone(_API); try aapi.OnReceiveData := OnReceiveData; aapi.getApk(st); if aapi.Err.Code=0 then begin OutputDir := TAndroidHelper.Context.getExternalCacheDir(); path := JStringToString(OutputDir.getAbsolutePath); filename := path+’/ASDroid2.apk’; ApkFile := TJfile.JavaClass.init( StringToJstring(filename)); FApkUri := TAndroidHelper.JFileToJURI(ApkFile); st.Position := 0; st.SaveToFile(filename); TThread.Synchronize(nil,procedure begin bDownload.Enabled := true; StartActivity(FApkUri); end); end; finally st.Free; aapi.Free; end; end); end; procedure StartActivity(ApkUri: Jnet_Uri); var Intent: JIntent; begin Intent := TJIntent.Create(); Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION or TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.setDataAndType(apkuri, StringToJString(‘application/vnd.android.package-archive’)); TAndroidHelper.Activity.startActivity(Intent); end; procedure TasdSettingsFrame.OnReceiveData(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean); begin tthread.Synchronize(nil, procedure begin pb1.Max := AContentLength; pb1.Value := AReadCount; end); end; <$ENDIF>Вопросы остались конечно, почему так странно с каталогами, но выяснять пока нет желания. Работает — не трожь.
Всем удачи.
UPD.
Для того, чтобы системный инсталлер запускался, нужно не забыть отметить еще одну галочку

Последние посетители 0 пользователей онлайн

Ни одного зарегистрированного пользователя не просматривает данную страницу

Источник

Как изменить цвет строки состояния в Android

прежде всего, это не дубликат, как в том, как изменить цвет фона строки состояния android

Как изменить цвет строки состояния, который должен быть таким же, как в панели навигации.

Я хочу, чтобы цвет строки состояния был таким же, как цвет панели навигации

13 ответов:

Android 5.0 Lollipop представил тему Material Design, которая автоматически окрашивает строку состояния на основе colorPrimaryDark значение темы.

это поддерживается на устройстве pre-lollipop благодаря поддержке библиотеки-v7-appcompat начиная с версии 21. блогпост о поддержке appcompat v21 от Chris Banes

добавлено в API level 21

Android Lollipop принес с собой возможность изменить цвет строки состояния в вашем приложении для более захватывающего пользовательского опыта и в гармонии с Google Material Design Guidelines .

вот как вы можете изменить цвет строки состояния с помощью нового window.setStatusBarColor метод, введенный в API level 21 .

изменить цвет строки состояния, также требует настройки два дополнительных флага на окне; вам нужно добавить FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS флаг и очистить FLAG_TRANSLUCENT_STATUS флаг.

официальная ссылка разработчика: setStatusBarColor (int)

The transitionName для просмотра фон будет android:status:background .

поместите это ваши значения-v21 / стили.xml, чтобы включить это на Lollipop:

это очень простой способ сделать это без каких-либо библиотек: если версия ОС не поддерживается-под kitkat-так ничего и не произошло. я делаю это шаги:

  1. в моем xml я добавил в верхней части этого вида:

затем я сделал этот метод:

также вам нужны эти оба метода, чтобы получить панель действий и высоту строки состояния:

тогда единственное, что вам нужно, это эта строка для установки строки состояния цвет:

Ну, Ижар решение было в порядке, но, лично я пытаюсь избежать от кода, который выглядит так:

кроме того, я тоже не люблю дублировать код. В вашем ответе я должен добавить такую строку кода во всех действиях:

Итак, я взял решение Izhar и использовал XML, чтобы получить тот же результат: Создайте макет для строки состояния status_bar.xml

обратите внимание на высоту и атрибуты высоты, они будут установлены в значениях, значения-v19, значения-v21 далее вниз.

добавьте этот макет в свой макет действий с помощью include, main_activity.XML-код:

для панели инструментов добавьте атрибут верхнего поля:

в вашем стиле appTheme-v19.xml и стили-v21.xml, добавьте windowTranslucent attr:

и, наконец, на вашем Инте, Инте-в19, п-в21, добавить значения на панели инструментов topmargin и высота statusBarHeight: дименс.xml для менее чем KitKat:

высота строки состояния всегда 24dp dimens-v19.xml для KitKat и выше:

dimens-v21.xml для Lolipop, просто добавьте высоту, если это необходимо:

это результат для Jellybean KitKat и Lollipop:

просто создайте новую тему в res / значения / стили.xml где вы меняете «colorPrimaryDark», который является цветом строки состояния:

и изменить тему деятельности в AndroidManifest.xml на тот, который вы хотите, на следующем действии вы можете изменить цвет обратно в исходный, выбрав исходную тему:

таким образом res / значения / цвета.xml должен выглядеть так:

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

Я не могу сделать это с помощью API

если вы проверяете здесь в переполнении стека все до этой строки кода установите прозрачность строки состояния в solid с

Я в состоянии управлять цвет и прозрачность статус бар, как это:

Android 4: там не так много вы можете сделать, потому что вы не можете управлять цветом строки состояния из API . единственное, что вы можете сделать, это установить строку состояния как полупрозрачную и переместить цветной элемент вашего пользовательского интерфейса под строку состояния. Для этого вам нужно играть с

в основной макет. Это позволяет нарисовать вам макет под строкой состояния. Тогда вам нужно играть с некоторым дополнением с верхней части вашего основного макет.

Android 5 и выше: вы должны определить стиль с

это позволяет навигационному ящику перекрывать строку состояния.

затем, чтобы изменить цвет, сохраняя прозрачную строку состояния, вы должны установить цвет строки состояния с помощью

где drawerLayout определяется так

как сказал @Niels, вы должны поместить в values-v21/styles.XML-код:

но добавить tools:targetApi=»lollipop» Если вы хотите одного стиля.xml, например:

вы можете изменить цвет строки состояния с помощью этой функции. работает на android L означает API 21 и выше и нуждается в цветной строке, такой как «#ffffff» .

Если вы хотите работать на Android 4.4 и выше, попробуйте это. Я ссылаюсь на ответ Харприта и эту ссылку. Android и прозрачная строка состояния

во-первых, вызовите метод setStatusBarColored в методе onCreate Activity(я помещаю его в класс util). Я использую изображение здесь, вы можете изменить его, чтобы использовать цвет.

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

тогда строка состояния будет выглядеть так.

Это то, что работало для меня в KitKat и с хорошими результатами.

Источник

Читайте также:  Как назвать кота мейн куна серого цвета