<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Michal Bialas</title>
    <description>The latest articles on DEV Community by Michal Bialas (@mmbialas).</description>
    <link>https://dev.to/mmbialas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F509559%2Fe92963e3-3baa-4754-acae-020b00470173.png</url>
      <title>DEV Community: Michal Bialas</title>
      <link>https://dev.to/mmbialas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mmbialas"/>
    <language>en</language>
    <item>
      <title>4 Strategies To Boost Reputation On Stack Overflow</title>
      <dc:creator>Michal Bialas</dc:creator>
      <pubDate>Tue, 20 Sep 2022 20:21:00 +0000</pubDate>
      <link>https://dev.to/mmbialas/4-strategies-to-boost-reputation-on-stack-overflow-3a72</link>
      <guid>https://dev.to/mmbialas/4-strategies-to-boost-reputation-on-stack-overflow-3a72</guid>
      <description>&lt;p&gt;Having an active account on Stack Overflow has a lot of advantages. It is a cool addition to your CV, especially when you posted several meaningful answers. You can also appreciate fellow developers by upvoting their contributions. Above all, you can simply help people with their programming problems.&lt;/p&gt;

&lt;p&gt;This is the reason I decided to share my 4 tactics to earn more reputation.&lt;br&gt;&lt;br&gt;
I figured them out answering mostly to the android questions,  &lt;strong&gt;however this applies to all technologies, tags, frameworks, languages etc.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;More reputation, more visibility, so let’s begin.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. The Archeologist
&lt;/h1&gt;

&lt;p&gt;The very first strategy is all about checking old questions and giving the most actual and accurate answer possible (even if there is accepted one). For instance, in 2010 somebody asked a question:  &lt;a href="https://stackoverflow.com/questions/3685790/how-to-switch-between-hide-and-view-password" rel="noopener noreferrer"&gt;How to switch between hide and view password&lt;/a&gt;?&lt;br&gt;&lt;br&gt;
Within 8 minutes, an answer appeared, and it was accepted.&lt;br&gt;&lt;br&gt;
In 2016 Android Support Library Team added this feature to their library (now  &lt;em&gt;AndroidX&lt;/em&gt;) and I added an answer with an explanation how to achieve it the best and easiest way.&lt;/p&gt;

&lt;p&gt;Till this day,  &lt;strong&gt;this answer outperformed the accepted one almost twice and earned for me 3.6k points of reputation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjvh2ds32wmgfsurtf9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjvh2ds32wmgfsurtf9g.png" alt="archeologist" width="485" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Search for the old questions and answer them with the best and most actual approach.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/3685790/how-to-switch-between-hide-and-view-password" rel="noopener noreferrer"&gt;How to switch between hide and view password&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Self-Answering
&lt;/h1&gt;

&lt;p&gt;I saw many questions where OP (original poster) answers to his / her questions at the same time. This is a common strategy when you have a problem with the newest IDE, tooling, API etc. You resolve the problem on your own.&lt;br&gt;&lt;br&gt;
If this is a common problem and many people struggle with it, you can boost your reputation fast.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3thdbpmvuefcyytqimje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3thdbpmvuefcyytqimje.png" alt="self-answering" width="485" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Solve a problem on your own, ask a question and answer it right away.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/55793095/could-not-find-method-leftshift-for-arguments-after-updating-studio-3-4" rel="noopener noreferrer"&gt;Could not find method leftShift() for arguments after updating studio 3.4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This question gained more than 4.1k&lt;/strong&gt;  reputation for its author.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Be Quick or Be Dead
&lt;/h1&gt;

&lt;p&gt;This tactic is the easiest one. It is just a matter of waiting for questions that you can answer quickly. The most important thing is to be first. Then you can polish you answer.&lt;/p&gt;

&lt;p&gt;Occasionally, questions are so obvious and easy that you get practically free points.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65amdoi8odglv4jqwses.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65amdoi8odglv4jqwses.png" alt="be quick" width="486" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Answer quickly to easy and not demanding questions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/73763215/android-white-bar-how-to-make" rel="noopener noreferrer"&gt;Android White bar, how to make&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This answer earned  &lt;strong&gt;20 points, almost for free&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Bounty Hunter
&lt;/h1&gt;

&lt;p&gt;This strategy is the most demanding because in many cases the problems are specific to the OP’s project. Sometimes you need to reproduce it on your own, e.g. by creating a sample project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8h6kye0v67rveh3skve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8h6kye0v67rveh3skve.png" alt="bounty hunter" width="800" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhni4tewmmgpc56ft5im.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuhni4tewmmgpc56ft5im.png" alt="bounty hunter mandalorian" width="487" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nevertheless, if you help the author and he/she approves it, you will receive all the bounty points. There are times when it is  &lt;strong&gt;50 points&lt;/strong&gt;, and there are times when it is  &lt;strong&gt;500 points&lt;/strong&gt;, depending on the situation.&lt;/p&gt;

&lt;p&gt;The rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Check bounty tab often and do your best to help the autor of the question.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/help/privileges/set-bounties" rel="noopener noreferrer"&gt;There are strict regulations for bounties&lt;/a&gt;. Here you can check bountied questions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://stackoverflow.com/questions?tab=Bounties" rel="noopener noreferrer"&gt;Bountied questions&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That’s it, I hope you like it, help the community on Stack Overflow and earn the reputation you deserve! Till the next time ✌️&lt;/p&gt;

</description>
      <category>programming</category>
      <category>tutorial</category>
      <category>stackoverflow</category>
      <category>reputation</category>
    </item>
    <item>
      <title>10 new Android Libraries And Projects To Inspire You In 2022</title>
      <dc:creator>Michal Bialas</dc:creator>
      <pubDate>Mon, 12 Sep 2022 20:58:17 +0000</pubDate>
      <link>https://dev.to/mmbialas/10-new-android-libraries-and-projects-to-inspire-you-in-2022-k6l</link>
      <guid>https://dev.to/mmbialas/10-new-android-libraries-and-projects-to-inspire-you-in-2022-k6l</guid>
      <description>&lt;p&gt;This is my new compilation of really inspirational, worthy to check, promising Android projects and libraries released or heavily refreshed in 2022.&lt;/p&gt;

&lt;p&gt;I have listed projects written in &lt;a href="https://kotlinlang.org/" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt; and &lt;a href="https://developer.android.com/jetpack/compose" rel="noopener noreferrer"&gt;Jetpack Compose&lt;/a&gt; in an unordered list so if you are eager to learn new things, check them all!&lt;/p&gt;




&lt;h3&gt;
  
  
  1. &lt;a href="https://github.com/mobile-dev-inc/maestro" rel="noopener noreferrer"&gt;Maestro&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is huge! &lt;a href="https://github.com/mobile-dev-inc/maestro" rel="noopener noreferrer"&gt;Maestro&lt;/a&gt; presents a fresh approach to UI tests build on experience from Appium, Espresso, UIAutomator, and XCTest.&lt;/p&gt;

&lt;p&gt;It is built for both platforms (operates on emulators / simulators and physical devices, both) and uses &lt;code&gt;yaml&lt;/code&gt; language to create a test flow.&lt;br&gt;&lt;br&gt;
You can find a sample test flow below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyqy4gke2v3etl7zv25j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzyqy4gke2v3etl7zv25j.png" alt="Maestro-yaml" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is really &lt;a href="https://maestro.mobile.dev/getting-started/installing-maestro#android" rel="noopener noreferrer"&gt;well documented&lt;/a&gt; and has low learning curve.&lt;br&gt;&lt;br&gt;
100% recommendation! You can learn more about it from an article &lt;a href="https://blog.mobile.dev/introducing-maestro-painless-mobile-ui-automation-bee4992d13c1" rel="noopener noreferrer"&gt;Introducing: Maestro — Painless Mobile UI Automation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/mobile-dev-inc/maestro/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  2. &lt;a href="https://github.com/oleksandrbalan/pagecurl" rel="noopener noreferrer"&gt;Page Curl&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a Jetpack Compose library for creating turning pages effect. Looks really cool!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61gcs4m8px9gvino1rvm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61gcs4m8px9gvino1rvm.gif" alt="Page Curl" width="320" height="676"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docs are pretty sufficient to quickly include the lib to your project.&lt;br&gt;&lt;br&gt;
Most likely it isn’t for your production code, but for some side project for sure!&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/oleksandrbalan/pagecurl/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  3. &lt;a href="https://github.com/cashapp/redwood" rel="noopener noreferrer"&gt;Redwood&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a library which could be a game changer in building reactive Android, iOS, and web UIs using Kotlin. Delivered by CashApp Development Team. What is Redwood?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Redwood integrates the Compose compiler, a design system, and a set of platform-specific displays. Each Redwood project is implemented in three parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A design system. Redwood includes a sample design system called ‘Sunspot’. Most applications should customize this to match their product needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Displays for UI platforms. The display draws the pixels of the design system on-screen. Displays can be implemented for any UI platform. Redwood includes sample displays for Sunspot for Android, iOS, and web.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Composable Functions. This is client logic that accepts application state and returns elements of the design system. These have similar responsibilities to presenters in an MVP system.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Btw, this is still in heavy development process, so be careful ☠️.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/cashapp/redwood/blob/trunk/LICENSE.txt" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  4. &lt;a href="https://github.com/valentinilk/compose-shimmer" rel="noopener noreferrer"&gt;Compose Shimmer&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a library which enables a shimmer effect for Android Jetpack Compose apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkk9jrcmvlh1p1du4oqvs.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkk9jrcmvlh1p1du4oqvs.gif" alt=" " width="600" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This effect was developed in order to create a shimmering effect that traverses the whole screen, highlighting only a certain subset of child views.&lt;/p&gt;

&lt;p&gt;The library offers also quite advanced theming and usage, which you can check in the comprehensive &lt;a href="https://github.com/valentinilk/compose-shimmer" rel="noopener noreferrer"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/valentinilk/compose-shimmer/blob/master/LICENSE.md" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  5. &lt;a href="https://bumble-tech.github.io/appyx/" rel="noopener noreferrer"&gt;Appyx&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a model-driven navigation for Jetpack Compose from &lt;a href="https://twitter.com/BumbleEng" rel="noopener noreferrer"&gt;Bumble Engineering Team&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy86bgi4i98q93ueu4k7w.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy86bgi4i98q93ueu4k7w.gif" alt=" " width="280" height="607"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using this lib you can:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;- Navigate directly from code&lt;/strong&gt; — In a type-safe way, without boilerplate&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Gain control of navigation state&lt;/strong&gt; — Making your navigation unit-testable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Complete control over operations and behaviour&lt;/strong&gt; — Use and extend the back stack or the view pager from the library, or build your own&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Your own navigation&lt;/strong&gt; — With Appyx, you can define your own navigation models&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Use any animation for transitions&lt;/strong&gt; — Anything you can represent with Compose &lt;code&gt;Modifiers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Using a model-driven approach, navigation states are yours to define — Appyx makes it happen with any animation you can represent using Compose &lt;code&gt;Modifiers&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The best way to learn about this cool approach is to check &lt;a href="https://bumble-tech.github.io/appyx/" rel="noopener noreferrer"&gt;docs&lt;/a&gt; and a demo app in the project.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/bumble-tech/appyx/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  6. &lt;a href="https://github.com/twitter/compose-rules" rel="noopener noreferrer"&gt;Twitter’s Jetpack Compose Rules&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You probably know that Twitter’s engineering team heavily refactors theirs codebase to adopt Jetpack Compose. But when a big team with a large codebase start working on a challenging task like migrating to Compose, not everybody can be on the same page and follow all the rules.&lt;/p&gt;

&lt;p&gt;If you use static analysis tools, &lt;a href="https://github.com/twitter/compose-rules" rel="noopener noreferrer"&gt;these rules&lt;/a&gt; will come to the rescue and help to adopt Jetpack Compose to your project.&lt;/p&gt;

&lt;p&gt;You can use them with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://github.com/pinterest/ktlint" rel="noopener noreferrer"&gt;ktlint&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/detekt/detekt" rel="noopener noreferrer"&gt;detekt&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/diffplug/spotless" rel="noopener noreferrer"&gt;Spotless&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: &lt;a href="https://github.com/twitter/compose-rules/blob/main/LICENSE.md" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  7. &lt;a href="https://github.com/skydoves/Pokedex" rel="noopener noreferrer"&gt;Pokedex&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Despite the fact I wrote about this project in 2020 on Medium in &lt;a href="https://betterprogramming.pub/25-best-android-libraries-projects-of-2020-summer-edition-dfb030a7fb0a" rel="noopener noreferrer"&gt;The 25 Best Android Libraries and Projects of 2020 — Summer Edition&lt;/a&gt;, it is still up-to-date and worthy to mention &lt;a href="https://github.com/skydoves/Pokedex" rel="noopener noreferrer"&gt;project&lt;/a&gt;. It is developed by &lt;a href="https://medium.com/u/9bb203a4ab2e" rel="noopener noreferrer"&gt;Jaewoong Eum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlq33ddfdetowk0xju3o.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlq33ddfdetowk0xju3o.gif" alt=" " width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pokedex demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material Design based on MVVM architecture.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is really neat documentation too.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/skydoves/Pokedex/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  8. &lt;a href="https://github.com/PatilShreyas/permission-flow-android" rel="noopener noreferrer"&gt;Permission Flow for Android&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This library, developed using &lt;a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/" rel="noopener noreferrer"&gt;Kotlin Flow&lt;/a&gt;, allows to get to know about real-time state of Android app permissions. You can observing permissions with &lt;code&gt;StateFlow&lt;/code&gt; as well as in Jetpack Compose using &lt;code&gt;@Composable&lt;/code&gt; annotation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Composable  
fun ExampleSinglePermission() {  
    val state by rememberPermissionState(Manifest.permission.CAMERA)  
    if (state.isGranted) {  
        // Render something  
    } else {  
        // Render something else  
    }  
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The library is well written and has 87% test coverage. Also, &lt;code&gt;README&lt;/code&gt; is comprehensive and explains a usage of the lib well.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/PatilShreyas/permission-flow-android/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  9. &lt;a href="https://github.com/JunkFood02/Seal" rel="noopener noreferrer"&gt;Seal&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Seal is open-source Video/Audio downloader, designed and themed with &lt;a href="https://material.io/blog/start-building-with-material-you" rel="noopener noreferrer"&gt;Material You&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bl247heff7hruh096fe.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bl247heff7hruh096fe.jpeg" alt=" " width="260" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By studying &lt;a href="https://github.com/JunkFood02/Seal" rel="noopener noreferrer"&gt;this project&lt;/a&gt; you can learn how to download videos and audio files from video platforms supported by &lt;a href="https://github.com/yt-dlp/yt-dlp" rel="noopener noreferrer"&gt;yt-dlp&lt;/a&gt;. You can use it to get to know more about &lt;a href="https://m3.material.io/" rel="noopener noreferrer"&gt;Material Design 3&lt;/a&gt; UI styling, especially with &lt;a href="https://m3.material.io/foundations/customization" rel="noopener noreferrer"&gt;dynamic color&lt;/a&gt; theme.&lt;/p&gt;

&lt;p&gt;The project is written according to &lt;a href="https://developer.android.com/series/mad-skills" rel="noopener noreferrer"&gt;MAD Skills&lt;/a&gt; principles.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/JunkFood02/Seal/blob/main/LICENSE" rel="noopener noreferrer"&gt;GPL-3.0&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  10. &lt;a href="https://github.com/savvasdalkitsis/uhuruphotos-android" rel="noopener noreferrer"&gt;UhuruPhotos. A LibrePhotos client&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;UhuruPhotos is an Android client for &lt;a href="https://github.com/LibrePhotos/librephotos" rel="noopener noreferrer"&gt;LibrePhotos&lt;/a&gt; written using the latest Android technologies (&lt;a href="https://developer.android.com/jetpack/compose" rel="noopener noreferrer"&gt;Jetpack Compose&lt;/a&gt;, &lt;a href="https://github.com/cashapp/sqldelight" rel="noopener noreferrer"&gt;SQLDelight&lt;/a&gt;, &lt;a href="https://kotlinlang.org/docs/coroutines-overview.html" rel="noopener noreferrer"&gt;Coroutines&lt;/a&gt;) based on MVI architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0y4kayovc9xb11wp1uaf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0y4kayovc9xb11wp1uaf.png" alt=" " width="400" height="867"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With features such as offline support, backup, and syncing, it aims to become a Google Photos alternative with a lot of similar features.&lt;/p&gt;

&lt;p&gt;You can follow a development process on Github, or even participate in. You can also join a closed beta on the Google Play store.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/savvasdalkitsis/uhuruphotos-android/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That’s it. I hope you enjoyed the list and that some of the libs or projects inspired you. You can also check my other articles that have been released earlier this year or last year:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://dev.to/mmbialas/10-almost-unknown-tools-which-facilitate-android-development-1e3o"&gt;10 Almost Unknown Tools Which Facilitate Android Apps Development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://dev.to/mmbialas/25-best-android-libraries-projects-and-tools-you-won-t-want-to-miss-out-in-2021-3kik"&gt;25 Best Android Libraries, Projects, and Tools You Won’t Want to Miss Out in 2021&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Till next time!&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>10 Almost Unknown Tools Which Facilitate Android Apps Development</title>
      <dc:creator>Michal Bialas</dc:creator>
      <pubDate>Fri, 02 Sep 2022 18:14:46 +0000</pubDate>
      <link>https://dev.to/mmbialas/10-almost-unknown-tools-which-facilitate-android-development-1e3o</link>
      <guid>https://dev.to/mmbialas/10-almost-unknown-tools-which-facilitate-android-development-1e3o</guid>
      <description>&lt;p&gt;Keeping efficiency at a high level requires using the right tools at the right time. As an Android developer, you will be able to boost your performance by utilizing the tools below, which you have probably never heard of.&lt;br&gt;
All tools are free and open-source. &lt;/p&gt;


&lt;h3&gt;
  
  
  1. &lt;a href="https://github.com/theapache64/stackzy" rel="noopener noreferrer"&gt;stackzy&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a desktop tool to analyse &lt;code&gt;.apk&lt;/code&gt;files. It identifies the libraries stack and permissions of a decompiled application. It was created using Jetpack Compose desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmil7aitfgkc3r4sdr2l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmil7aitfgkc3r4sdr2l.png" alt="stackzy" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see a demo, how the application works, &lt;a href="https://www.youtube.com/watch?v=XtM-sRLxLLc" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Stackzy is available on Linux (.deb), Windows (.msi) and MacOS (.jar) —  You can also compile the app on your own.&lt;/p&gt;

&lt;p&gt;It was build with modern libs and frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://github.com/jetbrains/compose-jb" rel="noopener noreferrer"&gt;Compose Desktop&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel" rel="noopener noreferrer"&gt;MVVM&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://kotlinlang.org/docs/coroutines-overview.html" rel="noopener noreferrer"&gt;Coroutines&lt;/a&gt; &amp;amp; &lt;a href="https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/" rel="noopener noreferrer"&gt;Flow&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/square/retrofit" rel="noopener noreferrer"&gt;Retrofit&lt;/a&gt; + &lt;a href="https://github.com/square/moshi" rel="noopener noreferrer"&gt;Moshi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://github.com/google/dagger" rel="noopener noreferrer"&gt;Dagger2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  and many more used to decompile applications (&lt;a href="https://github.com/skylot/jadx" rel="noopener noreferrer"&gt;jadx&lt;/a&gt;, &lt;a href="https://github.com/iBotPeaches/Apktool" rel="noopener noreferrer"&gt;apktool&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is released under &lt;a href="https://github.com/theapache64/stackzy/blob/master/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0 license&lt;/a&gt; and &lt;a href="https://github.com/tonsky/FiraCode/blob/master/LICENSE" rel="noopener noreferrer"&gt;OFL-1.1 Licence&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. &lt;a href="https://github.com/romainguy/v9" rel="noopener noreferrer"&gt;v9&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Some of you may remember, that long before SVG and vector drawables, Android developers relied on &lt;a href="https://developer.android.com/studio/write/draw9patch" rel="noopener noreferrer"&gt;9-patch files&lt;/a&gt; to dynamically and automatically resize bitmap images to accommodate the contents of the view and the size of the screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwommugki6h1bqzvz1bl.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwommugki6h1bqzvz1bl.gif" alt="v9" width="400" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some time ago &lt;a href="https://twitter.com/romainguy" rel="noopener noreferrer"&gt;Romain Guy&lt;/a&gt; created a library, that gives a possibility to dynamically resize &lt;a href="https://developer.android.com/reference/android/graphics/Path" rel="noopener noreferrer"&gt;Path&lt;/a&gt; objects as you would 9-patch bitmaps.&lt;br&gt;&lt;br&gt;
v9 is compatible with API 21+ and has quite decent documentation with a sample demo app. It is released under &lt;a href="https://github.com/romainguy/v9/blob/main/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0 license&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. &lt;a href="https://github.com/guolindev/Glance" rel="noopener noreferrer"&gt;Glance&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a database toolkit library provides a clean UI for browsing all the database data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kzzl4a7ekrpw8ccrtot.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kzzl4a7ekrpw8ccrtot.gif" alt="glance" width="386" height="692"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library is included into a project as a dependency library (like for example &lt;a href="https://github.com/square/leakcanary" rel="noopener noreferrer"&gt;LeakCanary&lt;/a&gt;, which Glance is inspired by).&lt;/p&gt;

&lt;p&gt;In order to find all database files in a current application, it searches both internal and external storage.&lt;/p&gt;

&lt;p&gt;Glance only supports AndroidX projects and is released under &lt;a href="https://github.com/guolindev/Glance/blob/master/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0 license&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. &lt;a href="https://github.com/LouisCAD/CompleteKotlin" rel="noopener noreferrer"&gt;CompleteKotlin&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is Gradle Plugin which enables auto-completion and symbol resolution for all Kotlin/Native platforms. This is particularly helpful with Kotlin Multiplatform Mobile projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxncudxhnymkl7sheejxt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxncudxhnymkl7sheejxt.jpeg" alt="completeKotlin" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this plugin, you can write and read Kotlin code regardless of your computer’s operating system. You can read and write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  iOS, iPadOS, watchOS, tvOS, and macOS code, without macOS,&lt;/li&gt;
&lt;li&gt;  Linux MIPS code without Linux,&lt;/li&gt;
&lt;li&gt;  Windows code, without Windows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setup is really simple and boils down to adding a dependency to &lt;code&gt;build.gradle&lt;/code&gt; or &lt;code&gt;.kts&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins {  
    id("com.louiscad.complete-kotlin") version "1.1.0"  
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This plugin’s documentation is comprehensive and contains all information needed to start using it.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://opensource.org/licenses/MIT" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;a href="https://github.com/naman14/adb-tools-mac" rel="noopener noreferrer"&gt;adb-tools-mac&lt;/a&gt; / &lt;a href="https://github.com/naman14/gnome-android-tool" rel="noopener noreferrer"&gt;gnome-android-tool&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/naman14/adb-tools-mac" rel="noopener noreferrer"&gt;adb-tools-mac&lt;/a&gt; is a macOS menu bar app written in SwiftUI for common &lt;code&gt;adb&lt;/code&gt; tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qjy9wyfb42io96xerug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qjy9wyfb42io96xerug.png" alt="adb-tools-mac" width="500" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/naman14/gnome-android-tool" rel="noopener noreferrer"&gt;gnome-android-tool&lt;/a&gt; is a Linux substitute.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkk5065zn91jp2vi73aez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkk5065zn91jp2vi73aez.png" alt="gnome-android-tools" width="500" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can use these tools to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Take screenshots,&lt;/li&gt;
&lt;li&gt;  record a screen,&lt;/li&gt;
&lt;li&gt;  connect over the TCP,&lt;/li&gt;
&lt;li&gt;  capture bug reports.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All projects are released under &lt;a href="https://www.gnu.org/licenses/" rel="noopener noreferrer"&gt;GNU General Public License&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;a href="https://github.com/DevSrSouza/svg-to-compose" rel="noopener noreferrer"&gt;SVG to Compose&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is an experimental tool which converts SVG and Android Vector Drawable to Jetpack Compose code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i6ctc68a1no8cgmqyr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i6ctc68a1no8cgmqyr9.png" alt="svg-to-compose" width="800" height="775"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to use this tool from Android Studio / IntelliJ, you can simply use an &lt;a href="https://github.com/overpas/svg-to-compose-intellij" rel="noopener noreferrer"&gt;open source plugin&lt;/a&gt; available on &lt;a href="https://plugins.jetbrains.com/plugin/18619-svg-to-compose" rel="noopener noreferrer"&gt;Jetbrains Marketplace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can utilise this tool by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  manipulating dynamically SVG files in the code (generating and modifying source code),&lt;/li&gt;
&lt;li&gt;  creating an icon pack similar to &lt;a href="https://github.com/DevSrSouza/compose-icons" rel="noopener noreferrer"&gt;Compose Material Icons&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project has sufficient documentation and it is released under &lt;a href="https://opensource.org/licenses/MIT" rel="noopener noreferrer"&gt;MIT&lt;/a&gt; license.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;a href="https://github.com/dipien/bye-bye-jetifier" rel="noopener noreferrer"&gt;Bye Bye Jetifier&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Some of you may be still dealing with legacy code based on Support Library and using &lt;a href="https://developer.android.com/studio/command-line/jetifier" rel="noopener noreferrer"&gt;Jetifier&lt;/a&gt;. By using this tool, you will be able to get rid of Support lib dependencies and ultimately turn off Jetifier.&lt;/p&gt;

&lt;p&gt;This plugin verifies each JAR/AAR dependency (and its transitives) and checks if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  any class uses a support library import&lt;/li&gt;
&lt;li&gt;  any layout references a support library class&lt;/li&gt;
&lt;li&gt;  the Android Manifest references a support library class&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also verifies if any support library dependency is resolved on the project.&lt;/p&gt;

&lt;p&gt;It is a great tool on which I heavily relied.&lt;/p&gt;

&lt;p&gt;By the way, you can also check out the &lt;code&gt;checkJetifier&lt;/code&gt; task provided by Android Gradle Plugin 7.1+ to complement and double check the Bye Bye Jetifier.&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://github.com/dipien/bye-bye-jetifier/blob/master/LICENSE.md" rel="noopener noreferrer"&gt;Apache-2.0 license&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. &lt;a href="https://github.com/theapache64/name-that-color-desktop" rel="noopener noreferrer"&gt;name-that-color-desktop&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;With this Jetpack Compose Desktop app, you can discover the closest matching color.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxcm0vf10d1zvc5mwr4m.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxcm0vf10d1zvc5mwr4m.gif" alt="name-that-color-desktop" width="560" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project was inspired by &lt;a href="https://chir.ag/projects/name-that-color/" rel="noopener noreferrer"&gt;chir.ag/name-that-color&lt;/a&gt; and allows to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  auto copy / paste a color stored in a clipboard,&lt;/li&gt;
&lt;li&gt;  generate Jetpack Compose &lt;code&gt;Color&lt;/code&gt; code,&lt;/li&gt;
&lt;li&gt;  generate random colors,&lt;/li&gt;
&lt;li&gt;  retrieve colors from a history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;License: &lt;a href="https://github.com/theapache64/name-that-color-desktop/blob/master/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0 license&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. &lt;a href="https://github.com/dorongold/gradle-task-tree" rel="noopener noreferrer"&gt;Gradle Task Tree&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a Gradle plugin that adds a task: taskTree that prints a task dependency tree report to the console.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The task dependency tree is printed with a similar format to that of the built-in &lt;code&gt;dependencies&lt;/code&gt; task.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For instance, &lt;code&gt;gradle build taskTree&lt;/code&gt; prints out a tree below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcle1p5o4lr15ejzujphm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcle1p5o4lr15ejzujphm.png" alt="gradle-task-tree" width="800" height="689"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The documentation is comprehensive and the plugin is easy to configure.&lt;br&gt;&lt;br&gt;
License: &lt;a href="https://github.com/dorongold/gradle-task-tree/blob/master/LICENSE" rel="noopener noreferrer"&gt;Apache-2.0 license&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  10. &lt;a href="https://github.com/rom1v/sndcpy" rel="noopener noreferrer"&gt;sndcpy&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a tool that forwards audio from an Android 10 device to the computer. You can name it as &lt;a href="https://github.com/Genymobile/scrcpy" rel="noopener noreferrer"&gt;scrcpy&lt;/a&gt; but for audio.&lt;br&gt;&lt;br&gt;
It does not require any &lt;em&gt;root&lt;/em&gt; access. It works on &lt;em&gt;GNU/Linux&lt;/em&gt;, &lt;em&gt;Windows&lt;/em&gt; and &lt;em&gt;macOS&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The only requirements to run the app are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Android device with Android 10+,&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.videolan.org/" rel="noopener noreferrer"&gt;VLC&lt;/a&gt; installed on the computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project has quite sufficient documentation (you can read more about it in a &lt;a href="https://blog.rom1v.com/2020/06/audio-forwarding-on-android-10/" rel="noopener noreferrer"&gt;dedicated blog post&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;License: &lt;a href="https://opensource.org/licenses/MIT" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Ok, you did it! I hope you enjoyed this list and will use some of these tools. &lt;br&gt;
You can also check my other articles, especially &lt;a href="https://medium.com/@mmbialas/25-best-android-libraries-projects-and-tools-you-dont-want-to-miss-in-2021-681dafe58b1c" rel="noopener noreferrer"&gt;25 Best Android Libraries, Projects, and Tools You Won’t Want to Miss Out in 2021&lt;/a&gt;. Till the next time!&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>jetpackcompose</category>
      <category>mobile</category>
    </item>
    <item>
      <title>25 Best Android Libraries, Projects, and Tools You Won’t Want to Miss Out in 2021</title>
      <dc:creator>Michal Bialas</dc:creator>
      <pubDate>Sat, 09 Oct 2021 20:59:51 +0000</pubDate>
      <link>https://dev.to/mmbialas/25-best-android-libraries-projects-and-tools-you-won-t-want-to-miss-out-in-2021-3kik</link>
      <guid>https://dev.to/mmbialas/25-best-android-libraries-projects-and-tools-you-won-t-want-to-miss-out-in-2021-3kik</guid>
      <description>&lt;p&gt;Hello everyone, this is my first post on dev.to 🚀 &lt;br&gt;
I start to post new content here as well as on other platforms. Actually this is &lt;a href="https://medium.com/@mmbialas/25-best-android-libraries-projects-and-tools-you-dont-want-to-miss-in-2021-681dafe58b1c" rel="noopener noreferrer"&gt;cross-post from Medium&lt;/a&gt;, however you all know that Medium is quite restrictive for non-members.&lt;/p&gt;

&lt;p&gt;Due to this fact, I want to post my articles on dev.to too.&lt;br&gt;
I believe that free and open content is just better for everyone. Enjoy then!&lt;/p&gt;

&lt;p&gt;It has been quite some time when I posted my last pieces about [&lt;code&gt;Medium links alert!&lt;/code&gt;] 🙃 &lt;a href="https://betterprogramming.pub/20-android-dev-tools-youve-probably-never-heard-of-c6cc08b4e543" rel="noopener noreferrer"&gt;20 Android Dev Tools You’ve Probably Never Heard Of&lt;/a&gt; and &lt;a href="https://betterprogramming.pub/25-best-android-libraries-projects-of-2020-summer-edition-dfb030a7fb0a" rel="noopener noreferrer"&gt;The 25 Best Android Libraries and Projects of 2020 — Summer Edition&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now I am back with a brand new compilation of really inspirational, worthy to check, promising Android projects, libraries, and tools released or heavily refreshed in 2021.&lt;/p&gt;

&lt;p&gt;I have listed projects written in Kotlin and Kotlin Multiplatform in an unordered list so if you are eager to learn new things, check them all!&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="https://github.com/Spikeysanju/Expenso" rel="noopener noreferrer"&gt;Expenso&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a simple application for tracking your expenses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswo2e13akat14bt1374z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswo2e13akat14bt1374z.png" alt="Alt Text" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project was built to showcase the usage of Android modern development components based on MVVM architecture, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://kotlinlang.org/docs/reference/coroutines-overview.html" rel="noopener noreferrer"&gt;Coroutines&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developer.android.com/topic/libraries/architecture" rel="noopener noreferrer"&gt;Android Architecture Components&lt;/a&gt;, especially: &lt;a href="https://developer.android.com/kotlin/flow/stateflow-and-sharedflow" rel="noopener noreferrer"&gt;Stateflow&lt;/a&gt;, &lt;a href="https://kotlinlang.org/docs/reference/coroutines/flow.html" rel="noopener noreferrer"&gt;Flow&lt;/a&gt;, &lt;a href="https://developer.android.com/topic/libraries/architecture/viewmodel" rel="noopener noreferrer"&gt;ViewModel&lt;/a&gt; , &lt;a href="https://developer.android.com/topic/libraries/architecture/room" rel="noopener noreferrer"&gt;Room&lt;/a&gt;, &lt;a href="https://developer.android.com/guide/navigation" rel="noopener noreferrer"&gt;Jetpack Navigation&lt;/a&gt;, &lt;a href="https://developer.android.com/topic/libraries/architecture/datastore" rel="noopener noreferrer"&gt;DataStore&lt;/a&gt;, and &lt;a href="https://github.com/material-components/material-components-android" rel="noopener noreferrer"&gt;Material Components for Android&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The documentation is really good and presents the overall project structure and architecture.&lt;/p&gt;

&lt;p&gt;The project supports dark and light mode and it is released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;a href="https://github.com/Droppers/TimeRangePicker" rel="noopener noreferrer"&gt;TimeRangePicker&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Here is a customisable, easy-to-use, and functional circular time range picker library.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0b45bx8egl9ehc74mifz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0b45bx8egl9ehc74mifz.png" alt="Alt Text" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is 100% written in Kotlin and was created to mimic Apple’s iOS or Samsung’s bedtime picker. It has good documentation, which also helps with the first &lt;a href="https://github.com/Droppers/TimeRangePicker#configuration" rel="noopener noreferrer"&gt;configuration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The library is copyrighted under an MIT license.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;a href="https://github.com/SimformSolutionsPvtLtd/SSCustomBottomNavigation" rel="noopener noreferrer"&gt;SSCustomBottomNavigation&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is another customizable bottom bar library with curved animations and Jetpack Navigation support.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x7v3vixp2whb1ou2f76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x7v3vixp2whb1ou2f76.png" alt="Alt Text" width="649" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This library is quite inspirational and has a fresh approach to the bottom bar’s animations and UI. It offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Customization of text, color, background, and icon&lt;/li&gt;
&lt;li&gt;  Animated wave with customizable height&lt;/li&gt;
&lt;li&gt;  Native control and Jetpack Navigation support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is well documented and released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;a href="https://github.com/square/curtains" rel="noopener noreferrer"&gt;Curtains&lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Curtains provides centralized APIs for dealing with Android windows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0s6ryplpeod85nz1dk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0s6ryplpeod85nz1dk6.png" alt="Alt Text" width="512" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This library is developed by &lt;a href="https://twitter.com/piwai" rel="noopener noreferrer"&gt;Py ⚔&lt;/a&gt; from Square Engineering.&lt;/p&gt;

&lt;p&gt;It can be used for:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Intercepting touch events on all activities and dialogs: for logging, detecting frozen frames on touch, fixing known &lt;a href="https://issuetracker.google.com/issues/156666934" rel="noopener noreferrer"&gt;bugs&lt;/a&gt; or ignoring touch events during transitions.&lt;/p&gt;

&lt;p&gt;Knowing when root views are detached, e.g. to detect if they might be leaking (&lt;a href="https://github.com/square/leakcanary" rel="noopener noreferrer"&gt;LeakCanary&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Listing all attached root views for debugging (&lt;a href="https://github.com/square/radiography" rel="noopener noreferrer"&gt;Radiography&lt;/a&gt;) or test purposes (&lt;a href="https://github.com/android/android-test/blob/master/espresso/core/java/androidx/test/espresso/base/RootsOracle.java" rel="noopener noreferrer"&gt;Espresso&lt;/a&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Real-life scenario: currently many popular apps, like TeamViewer, can take control or record screen on the phones. Sometimes, as developers, we need to prevent these actions. Using Curtains we can detect some users’ touch events (e.g. entering a PIN).&lt;/p&gt;

&lt;p&gt;The library has &lt;a href="https://github.com/square/curtains" rel="noopener noreferrer"&gt;great documentation&lt;/a&gt;, examples, samples, and FAQ. It is developed under Apache License, Version 2.0, and currently has a 1.2.1 version, so it is ready for production projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;a href="https://github.com/MackHartley/RoundedProgressBar" rel="noopener noreferrer"&gt;RoundedProgressBar&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Here’s another interesting library for creating elegantly rounded &lt;code&gt;ProgressBars&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4n9kvh5rlust8oxgywyx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4n9kvh5rlust8oxgywyx.png" alt="Alt Text" width="432" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It allows us to create progress bars with animations and text customizations. The documentation is quite comprehensive, there is even a &lt;a href="https://play.google.com/store/apps/details?id=com.mackhartley.roundedprogressbarexample" rel="noopener noreferrer"&gt;sample in Google Play&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The project has version 2.1.0 and is released under the Apache License, Version 2.0.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;a href="https://github.com/quickbirdstudios/SurveyKit" rel="noopener noreferrer"&gt;SurveyKit&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a library for creating beautiful surveys on Android.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm9k5cpz5tgg8w5u076c6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm9k5cpz5tgg8w5u076c6.png" alt="Alt Text" width="380" height="718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was inspired by &lt;a href="https://github.com/ResearchKit/ResearchKit" rel="noopener noreferrer"&gt;ResearchKit Surveys&lt;/a&gt; on iOS and allows you to create many types of surveys. You can check them in the really good comprehensive &lt;a href="https://github.com/quickbirdstudios/SurveyKit#-usage" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; with examples.&lt;/p&gt;

&lt;p&gt;The project is covered with tests (which is not so common) and released under an MIT license.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;a href="https://github.com/mars885/gamedge" rel="noopener noreferrer"&gt;Gamedge&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Another application that demonstrates the latest trends in Android development by utilizing the best practices, libraries, and tools to develop a fully-fledged Android application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9umji7lw5ogwfys59wxl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9umji7lw5ogwfys59wxl.png" alt="Alt Text" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application is modularized, written 100% in Kotlin, uses Dagger Hilt, Coroutines, Navigation Component, and many more. Also, it is covered with tests. Big recommendation from my side!&lt;/p&gt;

&lt;p&gt;All are released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. &lt;a href="https://github.com/TOrnelas/SegmentedProgressBar" rel="noopener noreferrer"&gt;SegmentedProgressBar&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;SegmentedProgressBar is an Instagram-like segmented progress bar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipkzc9pt9fo5n2uc5ocb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipkzc9pt9fo5n2uc5ocb.png" alt="Alt Text" width="426" height="755"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library has quite good documentation, sample app and it is easy to use.&lt;/p&gt;

&lt;p&gt;Released under MIT license and has version 0.0.4, which indicates that is in quite an early stage of development and I would recommend it more to play than to include in a production project. Still, it is quite interesting.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. &lt;a href="https://github.com/cashapp/licensee" rel="noopener noreferrer"&gt;Licensee&lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;This is Gradle plugin which validates the licenses of your dependency graph match what you expect, or it fails your build.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Long story short, thanks to that plugin, you will not be bothered by 3rd party libs which licenses have been changed e.g. from Apache 2.0 to MIT or to different ones. &lt;br&gt;&lt;br&gt;
You can decide on your own, which licenses you accept or the project accepts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t4j9o9p0ehaqhtver24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1t4j9o9p0ehaqhtver24.png" alt="Alt Text" width="677" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the picture above there is a configuration that makes the project fail during a build time if the author of a 3rd party library changes the license to different than Apache 2.0 or MIT.&lt;/p&gt;

&lt;p&gt;This plugin is developed and supported by Square Engineering, offers lots of customizations, and is released under Apache 2.0 license. Big recommendation!&lt;/p&gt;

&lt;h3&gt;
  
  
  10. &lt;a href="https://github.com/ParkSangGwon/TedImagePicker" rel="noopener noreferrer"&gt;TedImagePicker&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is an implementation of a simple yet beautiful image picker.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3zm83jsc6iwtyiqd0m3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3zm83jsc6iwtyiqd0m3.png" alt="Alt Text" width="320" height="676"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  image and video picking&lt;/li&gt;
&lt;li&gt;  single and multi-select&lt;/li&gt;
&lt;li&gt;  lots of configuration options like animations, showing camera tile background, image, back button, etc. All the configuration options you can find in quite comprehensive &lt;a href="https://github.com/ParkSangGwon/TedImagePicker" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All is released under Apache 2.0 license, written 100% in Kotlin.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. &lt;a href="https://github.com/square/radiography" rel="noopener noreferrer"&gt;Radiography&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is another great library from Square Engineering team. It can print a subset of the view hierarchies by specifying a &lt;code&gt;ScanScope&lt;/code&gt;. By default, Radiography will scan all the windows owned by your app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foktf842oxzezi1p5guz6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foktf842oxzezi1p5guz6.png" alt="Alt Text" width="779" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd88z5711zy8s41bzit6f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd88z5711zy8s41bzit6f.png" alt="Alt Text" width="300" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, this lib can be utilized as a Hierarchy Viewer tool which returns the view hierarchy as a pretty string that you can print in the &lt;code&gt;logcat&lt;/code&gt; or in a &lt;code&gt;TextView&lt;/code&gt;. Square Engineering team describes it as “Text-ray goggles for your Android UI.”.&lt;/p&gt;

&lt;p&gt;The library has great documentation, Jetpack Compose support, is often maintained and released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  12. &lt;a href="https://github.com/wayfair-incubator/panel-layout" rel="noopener noreferrer"&gt;PanelLayout&lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Panel Layout is a UI library for Android that allows you to display a floating and resizable panel that can also snap to the edges.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60mbhb3grvocehhpqnce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F60mbhb3grvocehhpqnce.png" alt="Alt Text" width="748" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library was inspired by the iOS UI framework &lt;a href="https://github.com/louisdh/panelkit" rel="noopener noreferrer"&gt;PanelKit&lt;/a&gt; and uses &lt;a href="https://developer.android.com/training/constraint-layout" rel="noopener noreferrer"&gt;&lt;code&gt;ConstraintLayout&lt;/code&gt;&lt;/a&gt; to lay out the panel with rest of the content.&lt;/p&gt;

&lt;p&gt;It is quite interesting but I would use it only for testing purposes, as it was removed from &lt;code&gt;jfrog()&lt;/code&gt; repositories. It was released under 2-clause BSD License. The documentation is useful and worthy to check.&lt;/p&gt;

&lt;h3&gt;
  
  
  13. &lt;a href="https://github.com/Kotlin/kmm-production-sample" rel="noopener noreferrer"&gt;KMM Production Sample&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The project was created to showcase &lt;a href="https://kotlinlang.org/lp/mobile/" rel="noopener noreferrer"&gt;Kotlin Multiplatform Mobile&lt;/a&gt;. It is a simple RSS reader which is also available in the &lt;a href="https://apps.apple.com/ru/app/kmm-rss-reader/id1563922264" rel="noopener noreferrer"&gt;App Store&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=com.github.jetbrains.rssreader.androidApp" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyw4o3k4l2pdmsizq0us.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyw4o3k4l2pdmsizq0us.png" alt="Alt Text" width="800" height="757"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project was designed to demonstrate how KMM can be used in real production projects.​​&lt;/p&gt;

&lt;p&gt;What is quite uncommon, the project defines an architecture, which not only shares the data and domain layer but also application state:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22bwp4c3nknmnwdo9m9i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22bwp4c3nknmnwdo9m9i.jpeg" alt="Alt Text" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a great project to learn about Kotlin Multiplatform Mobile and boost your know-how. 100% recommendation.&lt;/p&gt;

&lt;p&gt;The project is under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  14. &lt;a href="https://github.com/manneohlund/smart-recycler-adapter" rel="noopener noreferrer"&gt;Smart Recycler Adapter&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Here’s a small and generic adapter for RecyclerView with advanced data to ViewHolder binding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63omhjeymhppcvci2cn8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63omhjeymhppcvci2cn8.png" alt="Alt Text" width="255" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library has lots of features and supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;OnViewEventListener&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;ItemTouchHelper&lt;/code&gt; Swipe, Drag &amp;amp; Drop extensions&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;ViewTypeResolver&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;  Sticky header&lt;/li&gt;
&lt;li&gt;  Nested adapter&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;Pagination&lt;/code&gt;, &lt;code&gt;DiffUtil&lt;/code&gt;, &lt;code&gt;Filters&lt;/code&gt; and many more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project has really good documentation as well as a simple project. All are released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  15. &lt;a href="https://github.com/Foso/Cabret-Log" rel="noopener noreferrer"&gt;Cabaret Log&lt;/a&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;This is an Kotlin Library that enables Annotation-triggered method call logging for Kotlin Multiplatform&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can use an annotation like &lt;code&gt;DebugLog&lt;/code&gt; to e.g. automatically log all arguments that are passed to some function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mvzin4jvitm5aimkpo8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mvzin4jvitm5aimkpo8.png" alt="Alt Text" width="700" height="237"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This code will log:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eogun555b0mjk8wo9eb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eogun555b0mjk8wo9eb.png" alt="Alt Text" width="700" height="61"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quite useful, isn’t it? The library has comprehensive documentation with all setup and usage features. It is released under Apache 2.0 license and currently, it has a 1.0.4 version.&lt;/p&gt;

&lt;h3&gt;
  
  
  16. &lt;a href="https://github.com/ertugrulkaragoz/SuperBottomBar" rel="noopener noreferrer"&gt;SuperBottomBar&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is Spotify-like Android Material Bottom Navigation bar library.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn992g2rszyk0t7zjnd9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn992g2rszyk0t7zjnd9t.png" alt="Alt Text" width="586" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library is quite simple and we can use it to see how to implement a custom bottom bar or even use it in our playground project.&lt;/p&gt;

&lt;p&gt;The documentation is sufficient but remember that the project is released under an MIT license.&lt;/p&gt;

&lt;h3&gt;
  
  
  17. &lt;a href="https://github.com/JakeWharton/mosaic" rel="noopener noreferrer"&gt;Mosaic&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Mosaic is an experimental tool for building console UI in Kotlin using the Jetpack Compose compiler/runtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffq0rig8i3ycw0dopc9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffq0rig8i3ycw0dopc9p.png" alt="Alt Text" width="697" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library was developed by Jake Wharton who was inspired by &lt;a href="https://github.com/vadimdemedes/ink" rel="noopener noreferrer"&gt;Ink&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ink provides the same component-based UI building experience that React offers in the browser, but for command-line apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Despite the fact the project is experimental and released as version 0.0.1, the documentation is very comprehensive and includes the purpose of this lib, FAQ, and many samples. All are released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  18. &lt;a href="https://github.com/edgar-zigis/LabeledSeekSlider" rel="noopener noreferrer"&gt;LabeledSeekSlider&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a custom and highly configurable seek slider with sliding intervals, disabled state, and every possible setting to tackle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qefh3babytpoisssgpl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qefh3babytpoisssgpl.png" alt="Alt Text" width="654" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library is in version 1.1.0, but the documentation is quite poor. Still, you can deduce all the usage from the code and from the sample app. All are released under an MIT license.&lt;/p&gt;

&lt;h3&gt;
  
  
  19. &lt;a href="https://github.com/slackhq/EitherNet" rel="noopener noreferrer"&gt;EitherNet&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a library from Slack Engineering and gives us a pluggable sealed API result type for modeling &lt;a href="https://github.com/square/retrofit" rel="noopener noreferrer"&gt;Retrofit&lt;/a&gt; responses.&lt;/p&gt;

&lt;p&gt;By default, Retrofit uses exceptions to propagate any errors. This library leverages Kotlin sealed types to better model these responses with a type-safe single point of return and no exception handling needed&lt;/p&gt;

&lt;p&gt;So after using this lib, you can achieve something similar:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffprmsgekpposqm7vw0ki.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffprmsgekpposqm7vw0ki.png" alt="Alt Text" width="797" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is released in version 1.0.0 under Apache 2.0 license. It is well documented too.&lt;/p&gt;

&lt;h3&gt;
  
  
  20. &lt;a href="https://github.com/aculix/Channelify" rel="noopener noreferrer"&gt;Channelify&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Channelify is an application that showcases the usage of &lt;a href="https://developers.google.com/youtube/v3" rel="noopener noreferrer"&gt;YouTube Data API v3&lt;/a&gt;. If you do not like to read docs but check most of the features from the API in the code, this project is for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53qy4pmbth5qe3nlfgjx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53qy4pmbth5qe3nlfgjx.jpeg" alt="Alt Text" width="400" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Latest Videos&lt;/li&gt;
&lt;li&gt;  Channel Playlists&lt;/li&gt;
&lt;li&gt;  Add videos to favorites&lt;/li&gt;
&lt;li&gt;  Channel info and statistics&lt;/li&gt;
&lt;li&gt;  Search&lt;/li&gt;
&lt;li&gt;  Comments and replies&lt;/li&gt;
&lt;li&gt;  Light &amp;amp; dark theme options&lt;/li&gt;
&lt;li&gt;  Push Notifications using Firebase&lt;/li&gt;
&lt;li&gt;  Browse Merchandise Store&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project has really good &lt;a href="https://channelify.aculix.com/docs/articles/documentation/requirements.html" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; and it is released under MIT license.&lt;/p&gt;

&lt;h3&gt;
  
  
  21. &lt;a href="https://github.com/robertlevonyan/custom-floating-action-button" rel="noopener noreferrer"&gt;Custom Floating Action Button&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This library was refreshed in 2021. It delivers a replacement for the standard Floating Action Button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nj3bw8fo56tabef8hce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2nj3bw8fo56tabef8hce.png" alt="Alt Text" width="800" height="794"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It offers a possibility to customize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  type of FAB&lt;/li&gt;
&lt;li&gt;  size, colors, icon, ripple effect&lt;/li&gt;
&lt;li&gt;  positions of FAB&lt;/li&gt;
&lt;li&gt;  animations and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The documentation is well written. The project is released in 3.1.4 version under Apache 2 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  22. &lt;a href="https://github.com/Shopify/android-testify" rel="noopener noreferrer"&gt;Testify — Android Screenshot Testing&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Testify is a library from &lt;a href="https://medium.com/u/b9a2816f90a0" rel="noopener noreferrer"&gt;Shopify App Devs&lt;/a&gt; which helps with expanding test coverage by including screenshots tests in your application.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Capturing a screenshot of your view gives you a new tool for monitoring the quality of your UI experience. It’s also an easy way to review changes to your UI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqs6q532h0mwjx9mjauly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqs6q532h0mwjx9mjauly.png" alt="Alt Text" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Testify screenshot tests are built on top of Android Instrumentation tests and so already integrate seamlessly with existing test suites. Screenshots can be captured directly from within Android Studio or using the Gradle command-line tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The library is released under MIT license and currently is in version 0.1.2.&lt;/p&gt;

&lt;h3&gt;
  
  
  23. &lt;a href="https://github.com/rodrigomartind/MixAnimationsMotionLayout" rel="noopener noreferrer"&gt;MixAnimationsMotionLayout&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a project where you can find many examples how to use &lt;a href="https://developer.android.com/training/constraint-layout/motionlayout" rel="noopener noreferrer"&gt;MotionLayout&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vhrg5wt0kkf89flxxmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9vhrg5wt0kkf89flxxmb.png" alt="Alt Text" width="350" height="717"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Github repo, there are examples like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  circular carousel picker and carousel helper&lt;/li&gt;
&lt;li&gt;  multi snake cards&lt;/li&gt;
&lt;li&gt;  cards stack&lt;/li&gt;
&lt;li&gt;  instagram stories&lt;/li&gt;
&lt;li&gt;  emoji dance&lt;/li&gt;
&lt;li&gt;  Telegram view&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to get to know &lt;code&gt;MotionLayout&lt;/code&gt;, this repo is for you. Everything is released under Apache 2.0 license.&lt;/p&gt;

&lt;h3&gt;
  
  
  24. &lt;a href="https://github.com/Shabinder/SpotiFlyer" rel="noopener noreferrer"&gt;SpotiFlyer&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is an open-source Kotlin Multiplatform Music Downloader, which supports Spotify, Youtube, Gaana, Jio-Saavn.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr87ajpencr8q3i2wn36f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr87ajpencr8q3i2wn36f.png" alt="Alt Text" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application features Playlist, Albums, Tracks, and many more. Works on Android, desktop (macOS, Linux, Windows), and web (with iOS support soon).&lt;/p&gt;

&lt;p&gt;If you are interested in how to write this kind of app (music player and music downloader) for multiple platforms, this project is for you. It is released under GPL-3.0 License.&lt;/p&gt;

&lt;h3&gt;
  
  
  25. &lt;a href="https://github.com/kojofosu/Quantitizer" rel="noopener noreferrer"&gt;Quantitizer&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is a highly customizable quantity stepper for Android projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu60p8yad17tgz7bld1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu60p8yad17tgz7bld1v.png" alt="Alt Text" width="665" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library gives you several configuration options, like changing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  animation type (&lt;code&gt;FALL_IN&lt;/code&gt;, &lt;code&gt;SLIDE_IN&lt;/code&gt;, &lt;code&gt;SLIDE_IN_REVERSE&lt;/code&gt;, &lt;code&gt;SWING&lt;/code&gt;) and disabling / enabling it,&lt;/li&gt;
&lt;li&gt;  animation duration,&lt;/li&gt;
&lt;li&gt;  icon background,&lt;/li&gt;
&lt;li&gt;  text and background color etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is released under MIT license and it has version 1.6.1. The documentation is quite comprehensive and contains also sample app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;That’s it. I hope you enjoyed the list and that some of the libs or projects inspired you. If you would like to read more, please follow me here on dev.to, on &lt;a href="https://twitter.com/mmbialas" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; and on &lt;a href="https://github.com/mmBs" rel="noopener noreferrer"&gt;Github&lt;/a&gt;. Thanks for reading ✌️&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
