Размер иконки в строке состояния Android - Использование плагинов Cordova / Phonegap

Я разрабатываю приложение для Android с использованием Ionic (Cordova + AngularJS). С его помощью я использую Push Plugin ( https://github.com/phonegap-build/PushPlugin)

В моей папке ресурсов у меня есть 6 различных значков приложений, от ldpi в xxxhdpi

<icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
<icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
<icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/>
<icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/>
<icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/>
<icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>

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

android/res/drawable-ldpi/icon.png
android/res/drawable-mdpi/icon.png

и так далее...

Теперь это прекрасно работает для значка приложения на всех устройствах. Но если я получаю Push-уведомление, значок приложения, отображаемый в строке состояния, слишком велик, поэтому отображается только середина значка (только в течение первых секунд, кажется, после этого происходит перезагрузка уведомления (если я потяну вниз в строке состояния, например) он отображается правильно).

После небольшого исследования я обнаружил, что предоставленные мной значки являются правильными для общих значков приложений, но значки для строки состояния должны быть в другом измерении, как я обнаружил здесь: строка состояния Android ожидает значки размером 25x25dp, в то время как рекомендации рекомендуют 32x32dp, Кто не прав? (2-й ответ)

Например, используя мой Samsung S5, я отключил свой значок xxhdpi 144*144 пикселей для того же значка в размере 72*72 пикселей, и он работает. значок больше не вырезан.


Теперь на мой вопрос: как мне настроить эти "вторичные" значки, которые я использую для уведомлений только в моей папке ресурсов, не перезаписывая исходные?

1 ответ

Вам не нужно быть настолько строгим в отношении размера изображения. Поместите две иконки в папку платформа / Android/ Res/ Drawable. Один для отображения на панели навигации на леденце (например: small_icon.png), он должен быть белым и без фона. И другой для более старых версий Android (например: large_icon.png).

Откройте файл конфигурации PushPlugin, расположенный по адресу:

platforms/android/src/com/plugin/gcm/GCMIntentService.java

Задайте путь к значкам в объекте NotificationCompat.Builder:

.setSmallIcon(com.domain.appName.R.drawable.small_icon)
.setLargeIcon(largeIcon)

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

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), com.domain.appName.R.drawable.large_icon);

Надеюсь, это поможет вам.

Другие вопросы по тегам