Comments (6)
As it's been a while I've went through the pain and upgrade all dependencies and gradle (including Kotlin 2)
While this does not yet enable multiplatform support, it should at least make it simpler to test.
Still need to find time at some point to completely redo the build set-up for this project 🙃
from android-iconics.
I took a look at the library code, and my findings, in summary, are:
- The core module is extremely android SDK-oriented. Core module does not contain much of an api. Instead, it defines the logic to create the platform SDK drawables that "are" icons.
- The compose module is a simple two-file wrapper around a drawable, exposed as a painter. This means that 80% of the code is delegated to the platform APIs.
- Iconics relies on obscure platform APIs for initialization and a global singleton to manage icon registries. While a valid solution for the XML world, compose offers
LocalComposition
APIs that operate under a different paradigm.
In order to port the library to compose multiplatform, a huge amount of breaking changes is required, with a re-implementation of the API and interfaces, untying the library from the platform code, changing the initialization logic, creating new modules and designing a new API layer that does not rely on any of the android.graphics
APIs. In the process, a significant amount of existing functionality will be lost or would take time to re-implement for little to no benefit, given that the library has not been very actively developed and/or used lately.
Our decision was unfortunately to develop an in-house solution that is specifically tailored to CMP and our needs, as porting iconics would be a far greater ordeal than migrating our whole project to a new composable Icon
function. According to my research, rendering icons as a font at the minimum number of functionality that we require (letting users choose their own icons) should not take a significant amount of code to implement. We may consider opensourcing our solution.
I am going to close this issue for now as judging by the conversation, without additional interest, no CMP support will be planned. Feel free to reopen as needed.
from android-iconics.
That is a great suggestion. I have not looked into the font rendering support of KMP recently. But I would be eager to add and expand support for it if possible.
from android-iconics.
Also happy to take PRs related to this
from android-iconics.
I can't promise a PR, but we're migrating to CMP right now and I may take some time to fiddle with iconics and see whether I am able to run it with CMP.
from android-iconics.
No worries. Eager to hear what you find
from android-iconics.
Related Issues (20)
- Shadows with Compose HOT 1
- Disabling AppStartup silently breaks the library HOT 3
- com.mikepenz.iconics.view.IconicsImageView won't show image HOT 2
- Update Phosphor icon set to latest version HOT 1
- Custom Font library import error: Expecting member declaration HOT 2
- Update Google Material icons HOT 11
- How to make icons take on highlighted color of MaterialDrawerItem in XML? HOT 3
- Upgrade from 3.x to 5.x HOT 2
- java.lang.ClassNotFoundException: Didn't find class "com.mikepenz.iconics.typeface.IconicsInitializer" HOT 4
- Wrong icon name: faw-android HOT 1
- Compose equivalent of IconicsTextView HOT 1
- Can I get source code for the iconpack creator tool? HOT 4
- Interface IIcon is unstable. HOT 12
- faw_bluetooth is missing
- Compose Image is ignoring `size` modifier HOT 1
- Document how to use "aar" artifacts with version catalogs HOT 2
- registerFont does not work without init HOT 4
- TESTE
- icon names don't quite correspond with those in font library HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-iconics.