## Upgrade Notes ### Library ### core v4.x.x -> 5.x.x - All `with*` methods of the `IconicsDrawable` were replaced with properties - Raw setters are now direct (int color, string, pixel values), all other properties were moved into extension functions to clean up the `IconicsDrawable` - The `IconcisDrawable` now depends on the ressources and theme, and tries to eliminate dependency on the `Context` - All according methods were refactored to take Resources and Theme - Use `IconcisDrawable` via XML for API 24+ - `.apply` is specialized and will not invalidate the drawable until all changes were made ### core v3.x.x -> 4.x.x Now libray is kotlin-first * Font files * Font's store now based on default way to store fonts. (moved from common assets to font-specific resource assets) * `Iconics` * No context from now required. We get the application context via ContentProvider * `Iconics.IconicsBuilder` * Renamed to `Iconics.Builder` * Removed `ctx(Context)` method * `IconicsDrawable` * Replaced all `*Res(int)`, `*Px(int)`, `*Dp(int)` method to use `IconicsSize` and `IconicsColor` classes instead * Constants `TOOLBAR_ICON_SIZE` and `TOOLBAR_ICON_PADDING` moved to `IconicsSize` * All getters now have property-syntax * All producer-provided methods from [Android-Iconics Kt](https://github.com/zTrap/Android-Iconics-Kt) are included in class and can return nullable value (value will be set only when not null) * `enableShadowSupport(View)` moved to `IconicsUtils` * All `utils` classes and typeface libraries now can not be instantiated * `ITypeface` * Method `getTypeface(Context)` replaced with field `rawTypeface` * Automatically retrieves raw font from file by provided `fontRes` (see [GenericFont.kt](/library-core/src/main/java/com/mikepenz/iconics/typeface/GenericFont.kt) if You wont to use old scheme) #### Community Material Icons > v2.7.94 * With the update of the community material icons, the amount of icons exceeded the allowed length of an enum. Thus it was split up in `CommunityMaterial.Icon` and `CommunityMaterial.Icon2` if you use the icons via code, please use the depending enum. * The icons were split apart by the letter `h`. All icons starting from `a` to `g` are in the `CommunityMaterial.Icon` enum, all icons from `h` to `z` are in the `CommunityMaterial.Icon2` enum. #### v3.1.x * Upgraded the library to use `androidX` dependencies. This means your project will need to depend on `androidX` dependencies too. If you still use appcompat please consider using a version older than v3.1.x. * Further details about migrating to androidX and a overview can be found on the official docs. https://developer.android.com/topic/libraries/support-library/refactor #### 2.9.5 * the attributes for the `IconicsMenuInflaterUtil` start now with `ico_` instead of `iiv_` * the `IconicsMenuInflaterUtil` was moved into the `core` module to simplify code #### 2.9.0 * The library-core was split apart into **iconics-core** and **iconics-views** to slim down the **iconics-core** and allow more advanced UI features in the **iconics-views** * the core dep stays the same: `compile "com.mikepenz:iconics-core:2.9.0@aar"` * for all UI widgets add `compile "com.mikepenz:iconics-views:2.9.0@aar"` #### 2.8.0 * Dropping support for API < 14. New `MinSdkVersion` is now 14 #### 2.x.y -> 2.5.0 * there is now a new prefered solution to enable the Iconics features on Android base views like ImageViews, TextViews or all views which extend those. * instead of wrapping the `baseContext` you should now define the `IconicsLayoutInflater` as default `LayoutInflater`. This will also bring [Calligraphy](https://github.com/chrisjenx/Calligraphy) compatiblity (or to other libs which wrap the `baseContext`) * this requires an `Activity` extending the `AppCompatActivity` or implementing the `AppCompatDelegate` ```java @Override protected void onCreate(Bundle savedInstanceState) { LayoutInflaterCompat.setFactory(getLayoutInflater(), new IconicsLayoutInflater(getDelegate())); //... super.onCreate(savedInstanceState); //... } ``` * if you do not wrap the `BaseContext` with a different lib, or do not extend from `AppCompatActivity` or do not implement `AppCompatDelegate` you can still wrap the `baseContext` ```java @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(IconicsContextWrapper.wrap(newBase)); } ``` #### v1.x.y -> v2.0.0 * there is now a core package which comes without included fonts * provide the fonts you need. no additional steps required ### Font Addons #### Google Material font v2.1.0.1.original * **NOTE:** Google's font has a bad baseline so icons are not centered within text. Drawables look fine. Use Material Design Iconic as alternative if this is an issue for you * is now the default Google Material icon set again with the "**gmd**" mapping * package name `com.mikepenz.google_material_typeface_library.GoogleMaterial` #### Material Design Iconic v2.2.0.1 * is now the standalone Material Design Iconic icon pack with the "**gmi**" mapping * package name `com.mikepenz.material_design_iconic_typeface_library.MaterialDesignIconic` #### Google Material font 1.2.0.1 --> 2.1.2.1 * the mapping of some icons changed