These 15 Android open source libraries, only those who often visit GitHub will know!

Time:2020-10-9

Hello, everyone. I’m brother!

It’s our favorite part again–Open source library recommendationI have recommended some cool open source libraries I have collected, which have been highly praised by everyone. If you haven’t seen them yet, please move to:

[Android collection] recommend 10 cool open source libraries

[open source recommendation] advanced practical combat starts with a music player

[for those excellent Android open source libraries on GitHub in 2020, this is TOP10! ]

What interesting libraries have this issue brought to you? This issue is selected for you15An interesting and useful open source,Rank in no orderLet’s have a look!

1. Coil

These 15 Android open source libraries, only those who often visit GitHub will know!

Coil is a new image loading framework on Android. Its full name is called coroutine image loader, that is, the coprocessor image loading library. Compared with traditional image loading libraries such as glide, Picasso or fresco. It has the advantages of lightweight (only about 1500 methods), fast, easy to use, and more modern API.

It supports GIF and SVG, and can perform four default transformations:vagueCircular cuttingGray scaleandfillet

Examples are as follows:

imageView.load(“https://www.example.com/image.jpg") {
 crossfade(true)
 placeholder(R.drawable.image)
 transformations(CircleCropTransformation())
}

If you are a pure kotlin project, this library should be your first choice.

GitHub address: https://github.com/coil-kt/coil

2. MultiSearchView

These 15 Android open source libraries, only those who often visit GitHub will know!

The library has a very coolSearch View Animation!

It’s very easy to use and can be customized. You can use thestyles.xmlAdd custom style under.

Example code:

<com.iammert.library.ui.multisearchviewlib.MultiSearchView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>     
multiSearchView.setSearchViewListener(object : MultiSearchView.MultiSearchViewListener{
    override fun onItemSelected(index: Int, s: CharSequence) {
    }

    override fun onTextChanged(index: Int, s: CharSequence) {
    }

    override fun onSearchComplete(index: Int, s: CharSequence) {
    }

    override fun onSearchItemRemoved(index: Int) {
    }

})

Custom style:

  <!-- Search Text Style. -->
    <style name="SearchTextStyle">
        <!-- Custom values write to here for SearchEditText. -->
        <item name="android:focusable">true</item>
        <item name="android:focusableInTouchMode">true</item>
        <item name="android:enabled">true</item>
        <item name="android:hint">Search</item>
        <item name="android:imeOptions">actionSearch</item>
        <item name="android:textSize">18sp</item>
        <item name="android:maxLength">15</item>
        <item name="android:inputType">textCapSentences</item>
        <item name="android:textColorHint">#80999999</item>
        <item name="android:textColor">#000</item>
    </style>

Then, you should set the style toMultiSearchViewUnder theapp:searchTextStyle

GitHub address: https://github.com/iammert/Mu…

3. CalendarView

These 15 Android open source libraries, only those who often visit GitHub will know!

CalendarViewIt is a highly customized calendar component library, which is implemented by recycleview.

It has the following characteristics:

  • Single or range selection
  • Weekly or monthly calendar mode
  • Boundary date
  • Custom Calendar view
  • Horizontal or vertical scrolling mode
  • Fully customizable view

The library is also well documented and contains many examples. In addition, there is a sample application that shows all the functions of the library.

It was written in pure kotlin and released under the MIT license. If you need to use the calendar view in your application, this is a good choice.

Note: the library is used through the Java 8 + API java.time Class for backward compatibility because they were added in Java 8.

Therefore, you need to use thebuild.gradleAdd the following configuration:

android {
  defaultConfig {
    // Required ONLY when setting minSdkVersion to 20 or lower
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Sets Java compatibility to Java 8
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:<latest-version>'
}

Github: https://github.com/kizitonwos…

4. Bubble Navigation

FloatingTopBarActivity TopBarActivity
These 15 Android open source libraries, only those who often visit GitHub will know! These 15 Android open source libraries, only those who often visit GitHub will know!
BottomBarActivity EqualBottomBarActivity
These 15 Android open source libraries, only those who often visit GitHub will know! These 15 Android open source libraries, only those who often visit GitHub will know!

Bubble NavigationIs a lightweight library, you can easily create exquisite navigation bar through a large number of custom options.

It has a lot of extraordinary features:

  • Two types ofNavigationViews

    • BubbleNavigationConstraintView(support spreadspreadinside, andpackedMoss)
    • BubbleNavigationLinearView(allow equal distribution, using weight or packed mode)
  • Highly customizable
  • You can add a little red dot, which hasBubbleToggleViewTo create new UI components, not just navigation

Example:

<com.gauravk.bubblenavigation.BubbleNavigationConstraintView
        android:id="@+id/top_navigation_constraint"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="380dp"
        android:background="@color/white"
        android:elevation="4dp"
        android:padding="12dp"
        app:bnc_mode="spread">

        <com.gauravk.bubblenavigation.BubbleToggleView
            android:id="@+id/c_item_rest"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:bt_active="true"
            app:bt_colorActive="@color/search_active"
            app:bt_colorInactive="@color/search_inactive"
            app:bt_icon="@drawable/ic_restaurant"
            app:bt_shape="@drawable/transition_background_drawable_restaurant"
            app:bt_title="@string/restaurant"
            app:bt_padding="@dimen/internal_padding"
            app:bt_titlePadding="@dimen/title_padding" />

         <!-- Add more child items here - max upto 5 -->
    
    </com.gauravk.bubblenavigation.BubbleNavigationConstraintView>

GitHub documentation is very complete, there are many examples, more usage and properties can be found in GitHub.

Github:https://github.com/gauravk95/…

5. FabFilter

These 15 Android open source libraries, only those who often visit GitHub will know!

This is an interesting project that is not a directly available library, but a sample application that showsuseandNot used MotionLayoutTwo ways to achieve advanced UI animation.

Detailed implementation details can be found in the series of articles on medium:

“Complex UI/Animations on Android”

“Complex UI/Animations on Android — featuring MotionLayout”

Github:https://github.com/nikhilpanj…

6.android-showcase

These 15 Android open source libraries, only those who often visit GitHub will know!

android-showcaseIs a very good open source project, it is a showcase application, shows how to use kotlin and the latest jetpack technology stack to develop an app.

The project brings you a range of best practices, tools and solutions:

  • 100% Kotlin
  • Feature modules, clean architecture, model view view model, model view intent
  • Android jetpack component
  • Single activity mode, navigation with navigation

After watching this project, you will be inspired by modularity, clean architecture, testing, setting up CI / CD tools, etc. Thank you for the open source.

Github:https://github.com/igorwojda/…

7. Croppy

These 15 Android open source libraries, only those who often visit GitHub will know!

CroppyIs an Android image clipping library.

It has many powerful features:

  • Double finger zoom
  • Crop any size
  • Cut according to length width ratio
  • Show cropped bitmap
  • Auto Center crop
  • Comprehensive animation experience

See GitHub for more details.

Github: https://github.com/lyrebirdst…

8. RubberPicker

These 15 Android open source libraries, only those who often visit GitHub will know!

A cool and interesting seekbar animation library.

RubberPickerLibrary containsRubberSeekBarandRubberRangePicker, inspired byCubertoOfIOS rubber range selector

Examples of use:

Configuration in layout file

<com.jem.rubberpicker.RubberSeekBar
  ...
  app:minValue="20"
  app:maxValue="80"
  app:elasticBehavior="cubic"
  app:dampingRatio="0.3"
  app:stiffness="300"
  app:stretchRange="24dp"
  app:defaultThumbRadius="16dp"
  app:normalTrackWidth="4dp"
  app:highlightTrackWidth="8dp"
  app:normalTrackColor="#AAAAAA"
  app:highlightTrackColor="#BA1F33"
  app:defaultThumbInsideColor="#FFF"
  app:highlightDefaultThumbOnTouchColor="#CD5D67"/>

<!-- Similar attributes can be applied for RubberRangePicker as well-->
<com.jem.rubberpicker.RubberRangePicker
  ...
  app:minValue="0"
  app:maxValue="100"
  app:elasticBehavior="linear"
  app:dampingRatio="0.4"
  app:stiffness="400"
  app:stretchRange="36dp"
  app:defaultThumbRadius="16dp"
  app:normalTrackWidth="4dp"
  app:highlightTrackWidth="8dp"
  app:normalTrackColor="#AAAAAA"
  app:highlightTrackColor="#BA1F33"
  app:defaultThumbInsideColor="#CFCD5D67"
  app:highlightDefaultThumbOnTouchColor="#CD5D67"/>

Or, dynamically configure in Code:

val rubberSeekBar = RubberSeekBar(this)
rubberSeekBar.setMin(20)
rubberSeekBar.setMax(80)
rubberSeekBar.setElasticBehavior(ElasticBehavior.CUBIC)
rubberSeekBar.setDampingRatio(0.4F)
rubberSeekBar.setStiffness(1000F)
rubberSeekBar.setStretchRange(50f)
rubberSeekBar.setThumbRadius(32f)
rubberSeekBar.setNormalTrackWidth(2f)
rubberSeekBar.setHighlightTrackWidth(4f)
rubberSeekBar.setNormalTrackColor(Color.GRAY)
rubberSeekBar.setHighlightTrackColor(Color.BLUE)
rubberSeekBar.setHighlightThumbOnTouchColor(Color.CYAN)
rubberSeekBar.setDefaultThumbInsideColor(Color.WHITE)

val currentValue = rubberSeekBar.getCurrentValue()
rubberSeekBar.setCurrentValue(currentValue + 10)
rubberSeekBar.setOnRubberSeekBarChangeListener(object : RubberSeekBar.OnRubberSeekBarChangeListener {
    override fun onProgressChanged(seekBar: RubberSeekBar, value: Int, fromUser: Boolean) {}
    override fun onStartTrackingTouch(seekBar: RubberSeekBar) {}
    override fun onStopTrackingTouch(seekBar: RubberSeekBar) {}
})


//Similarly for RubberRangePicker
val rubberRangePicker = RubberRangePicker(this)
rubberRangePicker.setMin(20)
...
rubberRangePicker.setHighlightThumbOnTouchColor(Color.CYAN)

val startThumbValue = rubberRangePicker.getCurrentStartValue()
rubberRangePicker.setCurrentStartValue(startThumbValue + 10)
val endThumbValue = rubberRangePicker.getCurrentEndValue()
rubberRangePicker.setCurrentEndValue(endThumbValue + 10)
rubberRangePicker.setOnRubberRangePickerChangeListener(object: RubberRangePicker.OnRubberRangePickerChangeListener{
    override fun onProgressChanged(rangePicker: RubberRangePicker, startValue: Int, endValue: Int, fromUser: Boolean) {}
    override fun onStartTrackingTouch(rangePicker: RubberRangePicker, isStartThumb: Boolean) {}
    override fun onStopTrackingTouch(rangePicker: RubberRangePicker, isStartThumb: Boolean) {}
})

See GitHub for more details.

Github:https://github.com/Chrisvin/R…

9. Switcher

These 15 Android open source libraries, only those who often visit GitHub will know!

A cool switcher switching animation library is really cute. I also wrote an article before, which specifically introduced:

Cool! I’ve never seen a switcher like this

It was inspired by dribbleOleg Frolov Design.

Github: https://github.com/bitvale/Sw…

10. StfalconImageViewer

These 15 Android open source libraries, only those who often visit GitHub will know!

StfalconImageViewerIt’s a picture viewing library,
The library is simple and customizable. It contains aFull screen image viewerShared image transition supportKneading zoom functionas well asSwipe the gesture to closeGestures.

GitHub documentation explains how to use each feature. It is also worth noting that the library is compatible with all the most popular image processing libraries (such as Picasso, glide, etc.).

All configurable items are as follows:

StfalconImageViewer.Builder<String>(this, images, ::loadImage)
            .withStartPosition(startPosition)
            .withBackgroundColor(color)
            //.withBackgroundColorResource(R.color.color)
            .withOverlayView(view)
            .withImagesMargin(R.dimen.margin)
            //.withImageMarginPixels(margin)
            .withContainerPadding(R.dimen.padding)
            //.withContainerPadding(R.dimen.paddingStart, R.dimen.paddingTop, R.dimen.paddingEnd, R.dimen.paddingBottom)
            //.withContainerPaddingPixels(padding)
            //.withContainerPaddingPixels(paddingStart, paddingTop, paddingEnd, paddingBottom)
            .withHiddenStatusBar(shouldHideStatusBar)
            .allowZooming(isZoomingAllowed)
            .allowSwipeToDismiss(isSwipeToDismissAllowed)
            .withTransitionFrom(targeImageView)
            .withImageChangeListener(::onImageChanged)
            .withDismissListener(::onViewerDismissed)
            .withDismissListener(::onViewerDismissed)

See GitHub for more details.

Github: https://github.com/stfalcon-s…

11. Broccoli

These 15 Android open source libraries, only those who often visit GitHub will know!

BroccoliIt is a show view loading library, which is what I often saySkeleton screenWhen the content is loaded, a placeholder is displayed.

The library has a very smooth animation effect, you can use it with recyclerview, and it’s not boring when you wait for the content to load.

Example:

Broccoli broccoli = new Broccoli();

//add the default style placeholder
broccoli.addPlaceholders('activity', 'view_id', 'view_id'); 

or 
//add the default style placeholder
broccoli.addPlaceholders('view1', 'view2', 'view3'); 

or 

//add the custom style placeholder
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
                        .setView('view')
                        .setAnimation('scaleAnimation');
                        .setDrawable(DrawableUtils.createRectangleDrawable(placeHolderColor, 0))
                        .build()); 

or
//add the custom style placeholder with gradient animation
broccoli.addPlaceholder(new PlaceholderParameter.Builder()
                        .setView('view')
                        .setDrawable(new BroccoliGradientDrawable(Color.parseColor("#DDDDDD"),
                            Color.parseColor("#CCCCCC"), 0, 1000, new LinearInterpolator())
                        .build()); 
broccoli.show();

For more use, see GitHub.

Github: https://github.com/samlss/Bro…

12. Orbit MVI

These 15 Android open source libraries, only those who often visit GitHub will know!

This is a model view intent (MVI) framework for kotlin and Android. It was inspired by Jake Wharton, rxfeedback and Mosby’s “managing state with rxjava.”.

According to readme:

Orbit provides the smallest possible structure around your Redux implementation to make it easy to use, but you can still use the power of rxjava.

The Redux system may be as follows:

data class State(val total: Int = 0)

data class AddAction(val number: Int)

sealed class SideEffect {
    data class Toast(val text: String) : SideEffect()
}

class CalculatorViewModel : OrbitViewModel<State, SideEffect> (State(), {

    perform("addition")
        .on<AddAction>()
        .sideEffect { post(SideEffect.Toast("Adding ${event.number}")) }
        .reduce {
            currentState.copy(currentState.total + event.number)
        }

    ...
})

In activity / fragment:

// Example of injection using koin, your DI system might differ
private val viewModel by viewModel<CalculatorViewModel>()

override fun onCreate() {
    ...
    addButton.setOnClickListener { viewModel.sendAction(AddAction) }
}

override fun onStart() {
    viewModel.connect(this, ::handleState, ::handleSideEffect)
}

private fun handleState(state: State) {
    ...
}

private fun handleSideEffect(sideEffect: SideEffect) {
    when (sideEffect) {
        is SideEffect.Toast -> toast(sideEffect.text)
    }
}

See GitHub for details.

Github: https://github.com/babylonhea…

13. IndicatorScrollView

IndicatorScrollView IndicatorScrollView
These 15 Android open source libraries, only those who often visit GitHub will know! These 15 Android open source libraries, only those who often visit GitHub will know!

The library isNestedScrollViewAdded logic to enable it to dynamically respond to the indicator as it scrolls.

The readme file contains all the information needed to start the project, such as how to use itIndicatorScrollViewIndicatorViewandIndicatorItem。 Currently, its version is1.0.2Is released under the Apache 2.0 license. It supports API 16 and later.

The document example is very detailed. For more details, please refer to GitHub.

Github: https://github.com/skydoves/I…

14. Cyanea

These 15 Android open source libraries, only those who often visit GitHub will know!

CyaneaIs an Android theme engine library.

It allows you to change the theme dynamically. It has many built-in themes, such as:

  • Theme.Cyanea.Dark
  • Theme.Cyanea.Dark.LightActionBar
  • Theme.Cyanea.Dark.NoActionBar
  • Theme.Cyanea.Light
  • Theme.Cyanea.Light.DarkActionBar
  • Theme.Cyanea.Light.NoActionBar

See GitHub for more details.

Github: https://github.com/jaredrumml…

15. Android MotionLayout Carousel

These 15 Android open source libraries, only those who often visit GitHub will know!

This is a sample project that shows how to use itMotionLayoutTo achieve a cool rotation chart.

There’s almost no explanation in the documentation, but if you’ve been exploring motionlayout recently, this will be a good example.

Github: https://github.com/faob-dev/M…

summary

The above is the recommendation of open source projects in this issue. If you have interesting, interesting and powerful open source projects, you can also recommend them to Togo. Please leave a message in the comments area for discussion.