[
https://issues.apache.org/jira/browse/CB-13685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16505900#comment-16505900
]
ASF GitHub Bot commented on CB-13685:
-------------------------------------
erisu opened a new pull request #448: CB-13685 android: Adaptive Icon Support
URL: https://github.com/apache/cordova-android/pull/448
<!--
Please make sure the checklist boxes are all checked before submitting the
PR. The checklist
is intended as a quick reference, for complete details please see our
Contributor Guidelines:
http://cordova.apache.org/contribute/contribute_guidelines.html
Thanks!
-->
### Platforms affected
Android
### What does this PR do?
This PR adds support for Adaptive Icon.
Changes to Default Template Project
- Updated AndroidManifest to use adaptive icons configuration by default.
- Added adaptive icons and ic_launcher.xml for Android platform 26 and
higher.
Added JavaScript Unit Testing.
**config.xml for Adaptive Icons with Images**
```
<platform name="android">
<icon background="res/icon/android/ldpi-background.png" density="ldpi"
foreground="res/icon/android/ldpi-foreground.png" />
<icon background="res/icon/android/mdpi-background.png" density="mdpi"
foreground="res/icon/android/mdpi-foreground.png" />
<icon background="res/icon/android/hdpi-background.png" density="hdpi"
foreground="res/icon/android/hdpi-foreground.png" />
<icon background="res/icon/android/xhdpi-background.png" density="xhdpi"
foreground="res/icon/android/xhdpi-foreground.png" />
<icon background="res/icon/android/xxhdpi-background.png" density="xxhdpi"
foreground="res/icon/android/xxhdpi-foreground.png" />
<icon background="res/icon/android/xxxhdpi-background.png"
density="xxxhdpi" foreground="res/icon/android/xxxhdpi-foreground.png" />
</platform>
```
In this case, the foreground image will automatically be applied to the src
attribute value. This is to support non-adaptive icon supported Android
devices. If the user supplies their own src value, foreground will not be
copied over.
**config.xml for Adaptive Icons with Vectors**
```
<platform name="android">
<icon background="res/icon/android/ldpi-background.xml” density="ldpi"
foreground="res/icon/android/ldpi-foreground.xml”
src="res/icon/android/ldpi-icon.png" />
<icon background="res/icon/android/mdpi-background.xml” density="mdpi"
foreground="res/icon/android/mdpi-foreground.xml”
src="res/icon/android/mdpi-icon.png" />
<icon background="res/icon/android/hdpi-background.xml” density="hdpi"
foreground="res/icon/android/hdpi-foreground.xml”
src="res/icon/android/hdpi-icon.png" />
<icon background="res/icon/android/xhdpi-background.xml” density="xhdpi"
foreground="res/icon/android/xhdpi-foreground.xml”
src="res/icon/android/xdpi-icon.png" />
<icon background="res/icon/android/xxhdpi-background.xml” density="xxhdpi"
foreground="res/icon/android/xxhdpi-foreground.xml”
src="res/icon/android/xxhdpi-icon.png" />
<icon background="res/icon/android/xxxhdpi-background.xml”
density="xxxhdpi" foreground="res/icon/android/xxxhdpi-foreground.xml”
src="res/icon/android/xxxhdpi-icon.png" />
</platform>
```
In this example, the adaptive icon supports vectors and colors for the
foreground and background. If the foreground is a vector or color, the src
attribute must also be defined with a PNG for Android devices that does not
support adaptive icon.
**config.xml for Adaptive Icons with Colors for Background**
First: create colors.xml file with content
```
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="background">#FF0000</color>
</resources>
```
Second: update config.xml with…
```
<platform name="android">
<resource-file src="/res/values/colors.xml"
target="/app/src/main/res/values/colors.xml" />
<icon background=“@color/background” density="ldpi"
foreground="res/icon/android/ldpi-foreground.png" />
<icon background="@color/background" density="mdpi"
foreground="res/icon/android/mdpi-foreground.png" />
<icon background="@color/background" density="hdpi"
foreground="res/icon/android/hdpi-foreground.png" />
<icon background="@color/background" density="xhdpi"
foreground="res/icon/android/xhdpi-foreground.png" />
<icon background="@color/background" density="xxhdpi"
foreground="res/icon/android/xxhdpi-foreground.png" />
<icon background="@color/background" density="xxxhdpi"
foreground="res/icon/android/xxxhdpi-foreground.png" />
</platform>
```
The naming convention for the two new attributes, `background` and
`foreground`, was decided to match the element names that is used in the
`ic_launcher.xml` for consistency.
https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive#creating_adaptive_icons_in_xml
**
Error Example: Foreground contains vector and missing src attribute.**
```
<platform name="android">
<icon background="res/icon/android/mdpi-background.png"
foreground="res/icon/android/mdpi-foreground.xml” density=“mdpi" />
</platform>
```
### What testing has been done on this change?
- Built default app with no modifications to config.xml
- Built default app with legacy icon set defined
- Built default app with adaptive icon set with images.
- Built default app with adaptive icon set with vectors.
- Built default app with adaptive icon set with colors.
- Converted from adaptive to legacy icon set and rebuilt.
- Converted from legacy to adaptive icon set and rebuild.
### Checklist
- [X] [Reported an issue](http://cordova.apache.org/contribute/issues.html)
in the JIRA database
- [X] Commit message follows the format: "CB-3232: (android) Fix bug with
resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform
affected.
- [X] Added automated test coverage as appropriate for this change.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Android Adaptive Icons
> ----------------------
>
> Key: CB-13685
> URL: https://issues.apache.org/jira/browse/CB-13685
> Project: Apache Cordova
> Issue Type: Improvement
> Components: cordova-android
> Environment: All
> Reporter: Josef Brandl
> Assignee: Joe Bowser
> Priority: Minor
>
> Starting with Android 8 Oreo (API level 26) Android allows developers to
> create app icons using a background and a foreground image file. This feature
> is called "adaptive icons". One major change that goes with this feature is
> that icons get now clipped into a shape by the system. This leads to a very
> uniform and clean design like on iOS where all icons are a rounded rectangle.
> The other advantage is that visual effects can be applied to the icon by the
> system due to the separation between foreground an background.
> Android Studio greatly assists the developer at the creation of the app icon
> resources because it creates backwards compatible icons for older devices
> that don't support the adaptive icons feature.
> https://developer.android.com/studio/write/image-asset-studio.html
> The following resources are created.
> {code}
> res
> ├── drawable
> │ ├── ic_launcher_background.xml
> │ └── ic_launcher_foreground.xml
> ├── mipmap-anydpi-v26
> │ ├── ic_launcher.xml
> │ └── ic_launcher_round.xml
> ├── mipmap-hdpi
> │ ├── ic_launcher.png
> │ └── ic_launcher_round.png
> ├── mipmap-mdpi
> │ ├── ic_launcher.png
> │ └── ic_launcher_round.png
> ├── mipmap-xhdpi
> │ ├── ic_launcher.png
> │ └── ic_launcher_round.png
> ├── mipmap-xxhdpi
> │ ├── ic_launcher.png
> │ └── ic_launcher_round.png
> └── mipmap-xxxhdpi
> ├── ic_launcher.png
> └── ic_launcher_round.png
> {code}
> It is currently not clear how these files can be used inside a cordova
> project.
> - res/mipmap-anydpi-v26/ic_launcher.xml points to other image resources
> (foreground, background)
> - The foreground and background can be vector graphics (-> xml files in
> res/drawable)
> - The documentation needs to be updated
> (I've never reported an issue using JIRA before - I'm only used to github.
> So, please guide me if I'm doing something incorrect)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]