An easy, flexible way to add a shimmering effect to any view in an Android app.

Overview

Shimmer
Shimmer for Android

Shimmer is an Android library that provides an easy way to add a shimmer effect to any view in your Android app.

It is useful as an unobtrusive loading indicator, and was originally developed for Facebook Home.

Find more examples and usage instructions over at:

facebook.github.io/shimmer-android

License

BSD License

For shimmer-android software

Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Comments
  • Clear Shimmer

    Clear Shimmer

    I have an image view inside a shimmer frame layout, when load an image into the image view I want to clear the shimmer entirely but there is no way to do this. If I stop the shimmer there is still an overlay over my image view.

    opened by zsweigart 19
  • startShimmer() and stopShimmer() are not starting or stopping the animation view

    startShimmer() and stopShimmer() are not starting or stopping the animation view

    I have implemented the library, but this two scenarios are happening; First, when the view comes up the shimmer animation starts automatically, but when I call mShimmerFrameLayout.stopShimmer() it does not stop it. Secondly, when autoStart is disabled in the layout attribute and the view comes up, if I call mShimmerFrameLayout.startShimmer(), it does not start the animation.

    Please a solution is needed.

    opened by ugokoli 12
  • Error inflating class com.facebook.shimmer.ShimmerFrameLayout

    Error inflating class com.facebook.shimmer.ShimmerFrameLayout

    used jar instead of adding it as compile statement in dependencies. worked fine in demo. but not working in project. Bcause adding dependency was giving me Error:(593) Attribute “shape” already defined with incompatible format this error.

    java.lang.RuntimeException: Unable to start activity ComponentInfo android.view.InflateException: Binary XML file line #41: Binary XML file line #41: Error inflating class com.facebook.shimmer.ShimmerFrameLayout.

    opened by bb1690 10
  • how can i change the colour of the shimmer light

    how can i change the colour of the shimmer light

    i want to create a view which has a bright-white light over the whole view , but when i used this library , the color of the shimmer light always depends on the color of the view's background ,for example , when a view'background is yellow ,the shimmer light is yellow too , but what i want is that the colour of the shimmer light is brght white. how can i make this?

    opened by kency2015 10
  • Out of Memory issue

    Out of Memory issue

    I'm getting Out of memory when using shimmer layout. Following is the log:

    Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 7970412 byte allocation with 7192266 free bytes and 6MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java) at android.graphics.Bitmap.nativeCreate(Bitmap.java) at android.graphics.Bitmap.createBitmap(Bitmap.java:939) at android.graphics.Bitmap.createBitmap(Bitmap.java:912) at android.graphics.Bitmap.createBitmap(Bitmap.java:879) at com.facebook.shimmer.ShimmerFrameLayout.createBitmapAndGcIfNecessary(ShimmerFrameLayout.java:949) at com.facebook.shimmer.ShimmerFrameLayout.getMaskBitmap(ShimmerFrameLayout.java:825) at com.facebook.shimmer.ShimmerFrameLayout.drawMasked(ShimmerFrameLayout.java:773) at com.facebook.shimmer.ShimmerFrameLayout.dispatchDrawUsingBitmap(ShimmerFrameLayout.java:721) at com.facebook.shimmer.ShimmerFrameLayout.dispatchDraw(ShimmerFrameLayout.java:698) at android.view.View.draw(View.java:16205) at android.widget.FrameLayout.draw(FrameLayout.java:592) at android.view.View.updateDisplayListIfDirty(View.java:15122) at android.view.View.getDisplayList(View.java:15145) at android.view.View.draw(View.java:15923) at android.view.ViewGroup.drawChild(ViewGroup.java:3703) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3497) at android.view.View.draw(View.java:16205) at android.view.View.updateDisplayListIfDirty(View.java:15122) at android.view.View.getDisplayList(View.java:15145) at android.view.View.draw(View.java:15923) at android.view.ViewGroup.drawChild(ViewGroup.java:3703) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3497) at android.view.View.updateDisplayListIfDirty(View.java:15117) at android.view.View.getDisplayList(View.java:15145) at android.view.View.draw(View.java:15923) at android.view.ViewGroup.drawChild(ViewGroup.java:3703) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3497) at android.view.View.updateDisplayListIfDirty(View.java:15117) at android.view.View.getDisplayList(View.java:15145) at android.view.View.draw(View.java:15923) at android.view.ViewGroup.drawChild(ViewGroup.java:3703) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3497) at android.view.View.draw(View.java:16205) at android.widget.FrameLayout.draw(FrameLayout.java:592) at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2923) at android.view.View.updateDisplayListIfDirty(View.java:15122) at android.view.View.getDisplayList(View.java:15145) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:275) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:281) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:320) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2753) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2586) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2178) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1191) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6641) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777) at android.view.Choreographer.doCallbacks(Choreographer.java:590) at android.view.Choreographer.doFrame(Choreographer.java:560) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5942) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

    opened by varunrramani 10
  • Shimmer Getting Stopped Inside RecyclerView When Scrolling

    Shimmer Getting Stopped Inside RecyclerView When Scrolling

    Hello, Shimmer works like a charm in my project but there's a little problem. as i am using shimmer inside my recyclerview its getting stopped animating when i scrolled :(

    A simple video of that problem -> Video_Of_Stopping Shimmer [20 Sec]

    Note: I applied shimmer in nested recyclerview. Here's my snippet(for simplicity i just added meaningful code).

    Inside MyAdapter

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    ......................................
     switch (holder.getItemViewType()) {
     case ViewType.LATEST_MOVIE:
                    final LatestMovieViewHolder latestMovieViewHolder = (LatestMovieViewHolder) holder;
                    latestMovieViewHolder.titleMovie.setText("Latest Movie");
                    latestMovieViewHolder.shimmerFrameLayout.setVisibility(View.VISIBLE);
                    latestMovieViewHolder.shimmerFrameLayout.startShimmerAnimation();
                    latestMovieViewHolder.sectionRecylerView.setLayoutManager(new LinearLayoutManager(context, OrientationHelper.HORIZONTAL, false));
                    latestMovieViewHolder.sectionRecylerView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    RetrofitRequestAPI retrofitRequestAPI = MyRetrofit.getRetrofitInstance().create(RetrofitRequestAPI.class);
                    Call<List<Movie>> requestObject = retrofitRequestAPI.getMoviesInTheater();
                    requestObject.enqueue(new Callback<List<Movie>>() {
                        @Override
                        public void onResponse(Call<List<Movie>> call, Response<List<Movie>> response) {
                            if (response.body() != null) {
                                latestMovieViewHolder.shimmerFrameLayout.stopShimmerAnimation();
                                latestMovieViewHolder.sectionRecylerView.setVisibility(View.VISIBLE);
                                latestMovieViewHolder.shimmerFrameLayout.setVisibility(View.GONE);
                                latestMovieViewHolder.sectionRecylerView.setAdapter(new SectionAdapter(context, response.body()));
                            }
                        }
    
                        @Override
                        public void onFailure(Call<List<Movie>> call, Throwable t) {
                            Toast.makeText(context, t.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    });
                    break;
    ............................`
    
    
    **And here XML** 
    
    `
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        <!--------------------other staff>
    
        <com.facebook.shimmer.ShimmerFrameLayout
            android:id="@+id/shimmerView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <include layout="@layout/recyler_view_shimmer" />
                <include layout="@layout/recyler_view_shimmer" />
                <include layout="@layout/recyler_view_shimmer" />
            </LinearLayout>
        </com.facebook.shimmer.ShimmerFrameLayout>
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/singleSectionRecylerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
    
    ```
    opened by thatsenam 8
  • Please ShimmerFrameLayout needs to update version, cannot find class on android 3.3.2 build gradle

    Please ShimmerFrameLayout needs to update version, cannot find class on android 3.3.2 build gradle

    Build gradle: classpath 'com.android.tools.build:gradle:3.3.2'

    Shimmer version: 0.4.0

    EDITED: On build gradle version 3.3.2, the ShimmerFrameLayout v0.4.0 show error cannot find class.

    opened by mochadwi 6
  • White shimmer above children

    White shimmer above children

    i have imageview insdie shimmer Frame i want to just white shimmer over it i have tried so many ways but can't achieve anything i just want white shimmer over my image view currently i am doing this but nothing happening i started it pragmatically

                <com.facebook.shimmer.ShimmerFrameLayout
                    android:id="@+id/shimmer_view_img"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    ads:shimmer_highlight_color="@color/m_color_sky_blue"
                    ads:shimmer_base_alpha="1"
                    app:shimmer_auto_start="false">
    
                    <ImageView
                        android:id="@+id/iv_app_icon"
                        android:layout_width="70dp"
                        android:layout_height="70dp"
                        android:layout_gravity="center"
                        ads:srcCompat="@mipmap/white_lock" />
    
                </com.facebook.shimmer.ShimmerFrameLayout>
    
    opened by mianaliasjad 6
  • Update Gradle to 4.1.0

    Update Gradle to 4.1.0

    At the same time as the Gradle update, the following items have also been changed.

    • Update Gradle Wrapper to 6.5-all
    • Update Kotlin to 1.4.10
    • Remove unnecessary buildscript and allprojects from the module-level build.gradle
    CLA Signed Merged 
    opened by Kiaorra 5
  • ShimmerFrameLayout inside ShimmerFrameLayout issue

    ShimmerFrameLayout inside ShimmerFrameLayout issue

    In case you have ShimmerFrameLayout (outer) inside ShimmerFrameLayout (inner), and you start shimmer for inner view - it also starts shimmer for outer view (at least animate it). Could you please check this?

    opened by ArthurMytsko 5
  • java.lang.OutOfMemoryError · Failed to allocate a....

    java.lang.OutOfMemoryError · Failed to allocate a....

    java.lang.OutOfMemoryError: Failed to allocate a 1843212 byte allocation with 686904 free bytes and 670KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java:-2) at android.graphics.Bitmap.nativeCreate(Bitmap.java:-2) at android.graphics.Bitmap.createBitmap(Bitmap.java:975) at android.graphics.Bitmap.createBitmap(Bitmap.java:946) at android.graphics.Bitmap.createBitmap(Bitmap.java:913)

    opened by gastoncesarf 5
  • Asynchronous animation for items in a RecyclerView

    Asynchronous animation for items in a RecyclerView

    Hi. There is such a problem. I have a RecyclerView list which contains, let's say 100 elements, each element is a viewHolder-> textViewwrapped in a shimmer.

    When the RecyclerView calls the bindmethod I start the shimmer animation and my text starts to flicker(shimmer effect), it is ok, good.

    BUT as soon as I scroll down the list below, the next elements also start the shimmer (because bind is called for new item). And it turns out that the start time of the shimmer is different for elements.

    Is there a way to make the shimmer animation for all elements in list synchronous?

    opened by PavelLida 0
  • Enable change of repeat count value and support animator listeners

    Enable change of repeat count value and support animator listeners

    This change allows users of ShimmerFrameLayout to query/change a value of repetitions count and add/remove animator listeners.

    With these changes users will be able to change a shimmer effect when the current animation (or repetition cycle) is finished.

    CLA Signed 
    opened by volo-droid 2
  • Release 0.6.0 version

    Release 0.6.0 version

    Current library version 0.5.0 was released more than 3 years ago. As of today the main branch is ahead of 0.5.0 release by 25 commits (including important crash and OOM fixes). It'd be good to have a new version with those fixes released.

    opened by volo-droid 2
  • ShimmerDrawable not working with View.LAYER_TYPE_HARDWARE

    ShimmerDrawable not working with View.LAYER_TYPE_HARDWARE

    ShimmerDrawable not working with View.LAYER_TYPE_HARDWARE and View.LAYER_TYPE_SOFTWARE.

    Environment: Android emulator, Pixel 4 api 31

        Shimmer shimmer = new Shimmer.ColorHighlightBuilder()
            .setBaseAlpha(0.7f)
            .setHighlightAlpha(0.9f)
            .setDuration(10000)
            .setDirection(Shimmer.Direction.TOP_TO_BOTTOM)
            .setAutoStart(true)
            .build();
    
        ShimmerDrawable shimmerDrawable = new ShimmerDrawable();
        shimmerDrawable.setShimmer(shimmer);
    
        ShimmerDrawable shimmerDrawable2 = new ShimmerDrawable();
        shimmerDrawable2.setShimmer(shimmer);
    
        ShimmerDrawable shimmerDrawable3 = new ShimmerDrawable();
        shimmerDrawable3.setShimmer(shimmer);
    
        appCompatImageView.setLayerType(View.LAYER_TYPE_NONE, null);
        appCompatImageView.setImageDrawable(shimmerDrawable);
    
        appCompatImageView2.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        appCompatImageView2.setImageDrawable(shimmerDrawable2);
    
        appCompatImageView3.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        appCompatImageView3.setImageDrawable(shimmerDrawable3);
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical">
    
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="LAYER_TYPE_NONE" />
    
      <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/appCompatImageView"
        android:layout_width="100dp"
        android:layout_height="100dp" />
    
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="LAYER_TYPE_HARDWARE" />
    
      <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/appCompatImageView2"
        android:layout_width="100dp"
        android:layout_height="100dp" />
    
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="LAYER_TYPE_SOFTWARE" />
    
      <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/appCompatImageView3"
        android:layout_width="100dp"
        android:layout_height="100dp" />
        
    </LinearLayout>
    

    Screenshot

    opened by fsgjlp 1
  • Support for passing default style by theme attribute

    Support for passing default style by theme attribute

    Please add support for using theme attribute to pass default style.

    It could be done in Shimmer builder by accepting third parameter

       AlphaHighlightBuilder().consumeAttributes(context, null, R.attr.shimmerStyle).build()
    

    Or for extending Layout class, like

        class MyLayout constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = R.attr.shimmerStyle) : ShimmerFrameLayout(context, attrs, defStyleAttr)
    
    opened by v-mas 0
  • use recycled bitmap error

    use recycled bitmap error

    i've got a lot of events in Crashlytics with this description:

    Fatal Exception: java.lang.RuntimeException
    Canvas: trying to use a recycled bitmap android.graphics.Bitmap@918d560
    android.graphics.BaseCanvas.throwIfCannotDraw (BaseCanvas.java:77)
    android.view.ViewGroup.dispatchDraw (ViewGroup.java:5093)
    com.facebook.shimmer.ShimmerFrameLayout.dispatchDraw (ShimmerFrameLayout.java:157)
    
    opened by Firsto 0
Releases(0.5.0)
  • 0.5.0(Jul 17, 2019)

    97ca4d1 Add show + hide functionality (#86) cd1148d Migrate to AndroidX (and relevant updates) (#72) b055bbc Add copyFrom method to builder

    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Jan 5, 2019)

  • 0.3.0(Aug 1, 2018)

    473ed75 Ensure the shader exists before attempting to draw 58af197 Use matrix transformations to draw the shimmer instead of rotating a drawn rect b6b9026 Draw ShimmerDrawable mDrawRect at correct position (#60) 1e98a6b Properly null check shimmer instance in drawable 93f0a71 Abstract draw code into ShimmerDrawable 24565dd Reuse isShimmerStarted instead of duplicating logic 511031c Removing hardcoded strings

    Source code(tar.gz)
    Source code(zip)
  • 0.2.0(Apr 17, 2018)

    544c568 Rewrite ShimmerFrameLayout to be much more performant (uses at most 1/3 of the previous memory usage) f27a5ad Don't leak target SDK to consumers a360eb1 Prefix attributes with shimmer_

    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Mar 5, 2015)

Owner
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
Facebook
Android Library to make it easy to create CodeEditor or IDE that support any languages and themes

CodeView Android Library to make it easy to create your CodeEditor or IDE for any programming language even for your programming language, just config

Amr Hesham 294 Jan 6, 2023
A TextView that simulates the effect from the app Secret where the characters fade in/out at different speeds.

SecretTextView A TextView that simulates the effect from the app Secret where the characters fade in/out at different speeds. How To Use Use it just l

Matt Kula 611 Nov 7, 2022
A simpler way to style your TextViews

BabushkaText BabushkaText is a custom TextView which lets you customize the styling of parts of your text via Spannables, but without the hassle of ha

Henrique Boregio 752 Dec 29, 2022
A little animation framework which could help you to show message in a nice looking way

TextSurface A little animation framework which could help you to show message in a nice looking way. Usage Create TextSurface instance or add it in yo

Eugene Levenetc 2.3k Dec 25, 2022
RoundedLetterView like the one in Android 5.0 Contacts app

RoundedLetterView RoundedLetterView like the one in Android 5.0 Contacts app Attributes to choose from: rlv_titleText - The text in the first row. rlv

Pavlos-Petros Tournaris 653 Nov 11, 2022
Android's TextView that can expand/collapse like the Google Play's app description

ExpandableTextView ExpandableTextView is an Android library that allows developers to easily create an TextView which can expand/collapse just like th

Manabu S. 4k Jan 8, 2023
() Android experiment showing a sinking TextView

Titanic for Android This library is DEPRECATED, as I don't have time to mainatin it anymore. But feel free to go through the code and copy that into y

Romain Piel 1.8k Dec 15, 2022
:page_facing_up: Android Text Full Jusiftication / Wrapping / Justify / Hyphenate - V2.0

LIBRARY IS NO LONGER MAINTAINED If you want to adopt + maintain this library, please drop me a message - [email protected] Android Full Justific

Mathew Kurian 1.9k Dec 29, 2022
This is based on an open source autosizing textview for Android.

SizeAdjustingTextView This is based on an open source autosizing textview for Android I found a few weeks ago. The initial approach didn't resize mult

Elliott Chenger 255 Dec 29, 2022
A editable text with a constant text/placeholder for Android.

ParkedTextView A EditText with a constant text in the end. How to use <com.goka.parkedtextview.ParkedTextView xmlns:app="http://schemas.android.co

goka 270 Nov 11, 2022
An easy, flexible way to add a shimmering effect to any view in an Android app.

Shimmer for Android Shimmer is an Android library that provides an easy way to add a shimmer effect to any view in your Android app. It is useful as a

Facebook 5.1k Dec 26, 2022
:performing_arts: An easy, flexible way to implement veil skeletons and shimmering effect for Android.

AndroidVeil An easy, flexible way to implement veil skeletons and shimmering effect for Android. Download Gradle Add below codes to your root build.gr

Jaewoong Eum 1.2k Dec 28, 2022
() An Android TextView with a shimmering effect

Shimmer for Android This library is DEPRECATED, as I don't have time to mainatin it anymore. But feel free to go through the code and copy that into y

Romain Piel 2k Jan 9, 2023
Memory efficient shimmering effect for Android applications by Supercharge.

DEPRECATED - ShimmerLayout Attention: This tool is now deprecated. Please switch to Shimmer for Android or any other shimmer effect solution. ShimmerL

Supercharge 2.5k Jan 4, 2023
() An Android TextView with a shimmering effect

Shimmer for Android This library is DEPRECATED, as I don't have time to mainatin it anymore. But feel free to go through the code and copy that into y

Romain Piel 2k Jan 7, 2023
Library provides an easy way to a add shimmer effect in Android Compose project.

Add a shimmer effect to the layout in Android Compose

Valery 66 Dec 14, 2022
:ribbon: The simple way to implement a beautiful ribbon with the shimmering on Android.

AndroidRibbon ?? The simple way to implement a beautiful ribbon with the shimmering on Android. 中文語 Download Gradle Add below codes to your root build

Jaewoong Eum 653 Jan 7, 2023
Android library. Flexible components for chat UI implementation with flexible possibilities for styling, customizing and data management. Made by Stfalcon

ChatKit for Android ChatKit is a library designed to simplify the development of UI for such a trivial task as chat. It has flexible possibilities for

Stfalcon LLC 3.6k Jan 5, 2023
An easy, flexible way to have the toast message displayed.

IToaster Library An easy, flexible way to have the toast message displayed. Download Gradle Add below codes to your root build.gradle file (not your m

Evans Kiptarus Kibet 1 Mar 19, 2022