Description
Kotlin's scope functions (let, also, takeIf and takeUnless) and the safe call operator are now available to Java.
K2J-Compat alternatives and similar packages
Based on the "Kotlin" category.
Alternatively, view K2J-Compat alternatives based on common mentions on social networks and blogs.
-
android-youtube-player
YouTube Player library for Android and Chromecast, stable and customizable. -
DrawableToolbox
๐ ๏ธ The missing DrawableToolbox for Android. Get rid of the boring and always repeated drawable.xml files. -
kotlin-android-template
Android + Kotlin + Github Actions + ktlint + Detekt + Gradle Kotlin DSL + buildSrc = โค๏ธ -
Navigation Toolbar for Android
Navigation toolbar is a slide-modeled UI navigation controller made by @Ramotion -
KAndroid
Lightweight library providing useful extensions to eliminate boilerplate code in Android SDK. -
NotyKT ๐๏ธ
๐ NotyKT is a complete Kotlin-stack (Backend + Android) application ๐ฑ built to demonstrate the use of Modern development tools with best practices implementation. -
MaterialTimelineView
With MaterialTimelineView you can easily create a material looking timeline. -
CrunchyCalendar โ awesome calendar widget for android apps
A beautiful material calendar with endless scroll, range selection and a lot more! -
Android Kotlin Samples
Some basic Android code samples writen in Kotlin. -
Swagger Gradle Codegen
๐ซ A Gradle plugin to generate networking code from a Swagger spec file. -
Awesome Jetpack compose
A collaborative list of awesome jetpack compose resources. -
CameraViewEx
CameraViewEx makes integration of camera implementation and various camera features into any Android project very easy. -
Events Calendar
A user-friendly library that helps you achieve a cool Calendar UI with events mapping. -
Pdf Viewer For Android
A Lightweight PDF Viewer Android library which only occupies around 125kb while most of the Pdf viewer occupies up to 16MB space. -
Aimybox voice assistant
Embeddable voice assistant for Android apps written in Kotlin -
Vanilla Place Picker
Simple(vanilla) yet 'Do it all' place picker for your place picking needs in Android -
Maildroid
๐ Maildroid is a small robust android library for sending emails using SMTP server ๐ -
SSCustomEditTextOutLineBorder
Same as an Outlined text fields presented in Material Design page but with some dynamic changes -
ParallaxScrollingView
Parallax scrolling either by offset or automatically. -
SSCustomBottomNavigation
Animated tabbar with native control -
Kotlin-AgendaCalendarView
CalendarView widget (Outlook) -
Google Places AutoComplete EditText
A simple library that can connect your autocomplete edittext to Google places api -
Kotlin Example
An example for who are all going to start learning Kotlin programming language to develop Android application. -
MVVM-To-Do-App
Android To-Do MVVM Architecture App written in Kotlin.(ViewModel, ROOM, Livedata, Coroutines) -
User Consent SDK for Android
Configurable User Consent SDK For Androir -
EasyPermissions-ktx
๐ Kotlin version of the popular google/easypermissions wrapper library to simplify basic system permissions logic on Android M or higher. -
Viola
With Viola android face detection library, you can detect faces in a bitmap, crop faces using predefined algorithm and get additional information from the detected faces. -
fusion
An Easy-to-use Kotlin based Customizable Modules Collection with Material Layouts by BlackBeared.
Get performance insights in less than 4 minutes
Do you think we are missing an alternative of K2J-Compat or a related project?
README
K2J-Compat
Bringing some of the Kotlin goodness to java
Installation with Android Gradle
// Add K2J-Compat dependency
dependencies {
implementation 'com.github.alexdochioiu:k2j-compat:1.0.1'
}
Usage
1. Kotlin's .let{ }
as .let()
import static com.github.alexdochioiu.k2jcompat.K2JCompat.take;
final String number = take("+44 77 1234 1234")
.let((it) -> "0" + it.substring(4)) // 077 1234 1234
.let((it) -> it.replaceAll(" ", "")) // 07712341234
.unwrap(); // unwraps the result to String
2. Kotlin's ?.let{ }
as ._let()
import static com.github.alexdochioiu.k2jcompat.K2JCompat.take;
final String nullStr = null;
final String number = take(nullStr)
._let((it) -> it.replaceAll(" ", "")) // this code will not run as 'it' is null
.unwrap(); // returns null
3. Kotlin's .also{ }
as .also()
import static com.github.alexdochioiu.k2jcompat.K2JCompat.take;
StringBuilder builder = new StringBuilder();
take(builder).also((it) -> it.append("Hello World!"));
4. Kotlin's ?.also{ }
as ._also()
import static com.github.alexdochioiu.k2jcompat.K2JCompat.take;
StringBuilder builder = null;
take(builder)._also((it) -> it.append("Hello World!"));
// Note: using 'also' instead of '_also' will cause a null pointer exception when trying to append
5. Kotlin's .takeIf{ }
as .takeIf()
import static com.github.alexdochioiu.k2jcompat.K2JCompat.take;
String phoneNumber = "889944";
Integer number = take(phoneNumber)
.takeIf((it) -> it.matches("[0-9]+"))
._let(Integer::parseInt)
.unwrap();
6. Kotlin's ?.takeIf{ }
as ._takeIf()
import static com.github.alexdochioiu.k2jcompat.K2JCompat.take;
String phoneNumber = null;
Integer number = take(phoneNumber)
._takeIf((it) -> it.matches("[0-9]+"))
._let(Integer::parseInt)
.unwrap();
Note: If you use int instead of Integer NPE will be thrown as java will try to unbox a null Integer to int
7. Kotlin's .takeUnless{ }
as .takeUnless()
Similar to takeIf but with inverted logic
8. Kotlin's ?.takeUnless{ }
as ._takeUnless()
Similar to _takeIf but with inverted logic
Known Limitations
- Unlike Kotlin, Java has primitive data types which get boxed/unboxed automatically into objects when needed. However, NPE is thrown when Java tries to unbox a null Object to a primitive data type. This cannot be solved so a custom lint will be created to add a warning when using primitives are used.
*Note that all licence references and agreements mentioned in the K2J-Compat README section above
are relevant to that project's source code only.