Hi, I’m Cam Jump. I’ve been developing Android apps for about 7 years now. During college, I somehow was trusted to build Android/iOS apps for my school’s career fair when I only had taken two Java courses, but after that experience I knew I wanted to work as an Android app developer. I’ve been at Fundrise for the past 2.5 years and love touching all parts of the app. I especially love working on challenges in navigation and working to simplify complicated parts of our codebase. Learning Jetpack Compose has brought me new joy in building out beautiful and reusable UI. I live in Winter Park, CO and spend most of my time trail running outside of work.
Building graphs in Jetpack Compose with Canvas
15:25 > 40 min
Building graphs can be a frustrating experience for a developer. Often in the interest of time an engineer is forced to introduce a third party library, and you are stuck with yet another dependency in your app. These libraries usually do a good job in allowing you to add a graph to your app. But in most cases, these graphing libraries never quite behave as you would like them to: custom highlighting and interactions if even possible require a great deal of hacking, labels sometimes feel as if they have a mind of their own, and the appearance is limited by the options provided to you by the library. The final 10% truly does take 90% of the time.
Jetpack Compose is a powerful tool. It empowers us to build truly reusable UI and shifts our thinking towards a declarative paradigm. In this talk I will share my experience in building a charting composable backed by canvas to match my team's use cases. The talk will cover inspiration, challenges, and design decisions faced throughout the process. I will show how by approaching graphing with a declarative mindset, developers are empowered to build reusable charts that look however they want them to. I will cover some useful and fun canvas functions. I hope developers will not feel intimidated, but will feel excited about the idea of using canvas in their apps. I will also share details on performance considerations and recomposition optimizations.