GithubHelp home page GithubHelp logo

facebook / shimmer-android Goto Github PK

View Code? Open in Web Editor NEW
5.3K 182.0 696.0 4.67 MB

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

Home Page: http://facebook.github.io/shimmer-android/

License: Other

Java 95.40% Starlark 4.60%

shimmer-android's Introduction

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) Meta Platforms, Inc. and 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 Meta 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.

shimmer-android's People

Contributors

ameen-sarsour avatar ankur2136 avatar astreet avatar bryant1410 avatar dulinriley avatar ed-george avatar ianchilds avatar jasleensingh avatar mkano9 avatar paveldudka avatar rratmansky avatar scottcooper92 avatar scottrice avatar sonutiwari avatar syotfs avatar ttsugriy avatar willbailey avatar xiphirx avatar yarolegovich avatar yiding avatar zertosh avatar zpao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shimmer-android's Issues

ListView animation freezes

Every time I use the widget in a ListView with more than 3 or 4 items using the viewholder pattern, the list items after that 3rd or 4th item does not animate.

I've tried to startAnimation programatically and also tried setting the app:auto_start attribute to true in the layout's attributes.

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)

AndroidX support

With the release of Android Studio 3.2.0, is there any plan to update this library to support AndroidX soon?

Shimmering does not stop after calling .stopShimmer()

Hello I would like to ask why is shimmering still exist even after calling .stopShimmer() method in RecyclerView. Here's an example I am using 0.2.0 v.

        //Set the user's profile picture
        this.shimmerSUDP.startShimmer();
        GlideApp.with(context)
                .load(thumbnail)
                .placeholder(R.color.icon_not_selected)
                .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
                .listener(new RequestListener<Drawable>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, 
                            Target<Drawable> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> 
                      target, DataSource dataSource, boolean isFirstResource) {
                        shimmerSUDP.stopShimmer();
                        return false;
                    }
                })
                .into(mSuDP);

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.

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.

RTL support

is there a way to make the shimmer effect from Right To Left?

Out of memory error

I have a bottom navigation bar. There are 4 options A,B,C and D. When i try to swiftly click A and B, after a couple of clicks the app crashes and the log is below. How do i fix it?

 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                         Process: com.rajatcube.sharstory, PID: 11461
                                                                         java.lang.OutOfMemoryError: Failed to allocate a 6234636 byte allocation with 5477368 free bytes and 5MB until OOM
                                                                             at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                             at android.graphics.Bitmap.nativeCreate(Native Method)
                                                                             at android.graphics.Bitmap.createBitmap(Bitmap.java:977)
                                                                             at android.graphics.Bitmap.createBitmap(Bitmap.java:948)
                                                                             at android.graphics.Bitmap.createBitmap(Bitmap.java:915)
                                                                             at com.facebook.shimmer.ShimmerFrameLayout.createBitmapAndGcIfNecessary(ShimmerFrameLayout.java:946)
                                                                             at com.facebook.shimmer.ShimmerFrameLayout.getMaskBitmap(ShimmerFrameLayout.java:822)
                                                                             at com.facebook.shimmer.ShimmerFrameLayout.drawMasked(ShimmerFrameLayout.java:771)
                                                                             at com.facebook.shimmer.ShimmerFrameLayout.dispatchDrawUsingBitmap(ShimmerFrameLayout.java:720)
                                                                             at com.facebook.shimmer.ShimmerFrameLayout.dispatchDraw(ShimmerFrameLayout.java:697)
                                                                             at android.view.View.draw(View.java:18401)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17376)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             at android.view.View.draw(View.java:18160)
                                                                             at android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             at android.view.View.draw(View.java:18401)
                                                                             at com.android.internal.policy.DecorView.draw(DecorView.java:966)
                                                                             at android.view.View.updateDisplayListIfDirty(View.java:17376)
                                                                             at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:722)
                                                                             at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:728)
                                                                             at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:836)
                                                                             at android.view.ViewRootImpl.draw(ViewRootImpl.java:3168)
                                                                             at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2964)
                                                                             at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2552)
                                                                             at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537)
                                                                             at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
                                                                             at android.view.Choreographer$CallbackRecord.run(Choreographer.java:959)
                                                                             at android.view.Choreographer.doCallbacks(Choreographer.java:734)
                                                                             at android.view.Choreographer.doFrame(Choreographer.java:670)
                                                                             at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945)
                                                                             at android.os.Handler.handleCallback(Handler.java:751)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                             at android.os.Looper.loop(Looper.java:154)

I think this part will also be useful -

D/ShimmerFrameLayout: ShimmerFrameLayout failed to create working bitmap (width = 1056, height = 1476)
                                                                             
                                                                             dalvik.system.VMStack.getThreadStackTrace(Native Method)
                                                                             java.lang.Thread.getStackTrace(Thread.java:1567)
                                                                             com.facebook.shimmer.ShimmerFrameLayout.tryCreateRenderBitmap(ShimmerFrameLayout.java:754)
                                                                             com.facebook.shimmer.ShimmerFrameLayout.tryObtainRenderMaskBitmap(ShimmerFrameLayout.java:735)
                                                                             com.facebook.shimmer.ShimmerFrameLayout.dispatchDrawUsingBitmap(ShimmerFrameLayout.java:711)
                                                                             com.facebook.shimmer.ShimmerFrameLayout.dispatchDraw(ShimmerFrameLayout.java:697)
                                                                             android.view.View.draw(View.java:18401)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17376)
                                                                             android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3952)
                                                                             android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3932)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17339)
                                                                             android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3952)
                                                                             android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3932)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17339)
                                                                             android.view.View.draw(View.java:18160)
                                                                             android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             android.view.View.draw(View.java:18160)
                                                                             android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             android.view.View.draw(View.java:18160)
                                                                             android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             android.view.View.draw(View.java:18160)
                                                                             android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             android.view.View.draw(View.java:18160)
                                                                             android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17371)
                                                                             android.view.View.draw(View.java:18160)
                                                                             android.view.ViewGroup.drawChild(ViewGroup.java:3968)
                                                                             android.view.ViewGroup.dispatchDraw(ViewGroup.java:3754)
                                                                             android.view.View.draw(View.java:18401)
                                                                             com.android.internal.policy.DecorView.draw(DecorView.java:966)
                                                                             android.view.View.updateDisplayListIfDirty(View.java:17376)
                                                                             android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:722)
                                                                             android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:728)
                                                                             android.view.ThreadedRenderer.draw(ThreadedRenderer.java:836)
                                                                             android.view.ViewRootImpl.draw(ViewRootImpl.java:3168)
                                                                             android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2964)
                                                                             android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2552)
                                                                             android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1537)
                                                                             android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
                                                                             android.view.Choreographer$CallbackRecord.run(Choreographer.java:959)
                                                                             android.view.Choreographer.doCallbacks(Choreographer.java:734)
                                                                             android.view.Choreographer.doFrame(Choreographer.java:670)
                                                                             android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:945)
                                                                             android.os.Handler.handleCallback(Handler.java:751)
                                                                             android.os.Handler.dispatchMessage(Handler.java:95)
                                                                             android.os.Looper.loop(Looper.java:154)
                                                                             android.app.ActivityThread.main(ActivityThread.java:6776)
                                                                             java.lang.reflect.Method.invoke(Native Method)
                                                                             com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
                                                                             com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

app becomes jerky with shimmer

I have a gridlayout that i use as placeholder while i load some data, and I used shimmer to animate it.

If I surround the gridlayout with a ShimmerFrameLayout, then the phone becomes very jerky and stutters a lot when the anim is happening. If I enable GPU profiling you can see very long blue bars indicating heavy animation work.

Is this expected? How are other apps dealing with this?

This is how im using it:

<com.facebook.shimmer.ShimmerFrameLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     app1:angle="cw_0"
     app1:auto_start="true"
     app1:duration="1500"
     app1:tilt="0">

     <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                           xmlns:app="http://schemas.android.com/apk/res-auto"
                                           android:layout_width="match_parent"
                                           android:layout_height="wrap_content"
                                           app:alignmentMode="alignMargins"
                                           app:columnCount="2"
                                           app:useDefaultMargins="true">

         <include
             layout="@layout/view_item_grid_empty"
             app:layout_columnWeight="1"/>

         <include
             layout="@layout/view_item_grid_empty"
             app:layout_columnWeight="1"/>

         <include layout="@layout/view_item_grid_empty"
         app:layout_columnWeight="1" />

         <include layout="@layout/view_item_grid_empty"
         app:layout_columnWeight="1" />

         <include layout="@layout/view_item_grid_empty"
         app:layout_columnWeight="1" />

         <include layout="@layout/view_item_grid_empty"
         app:layout_columnWeight="1" />

     </android.support.v7.widget.GridLayout>
 </com.facebook.shimmer.ShimmerFrameLayout>

ShimmerFrameLayout With Scrollview

Hor to use ShimmerFrameLayout with scrollview properly ?

    <com.facebook.shimmer.ShimmerFrameLayout
        android:id="@+id/shimmer_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:orientation="vertical"
        shimmer:duration="1500">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fillViewport="true">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <include layout="@layout/pholder_campaign" />
                <include layout="@layout/pholder_campaign" />
                <include layout="@layout/pholder_campaign" />

            </LinearLayout>

        </ScrollView>

    </com.facebook.shimmer.ShimmerFrameLayout>

code

But My View looks like this when i scroll :
shimmer

Please add my app to the list

Hey there, I'm using Facebook Shimmer in my Twitter client Spreadsheet!

Might you add it to the list, please?

play.google.com/store/apps/details?id=com.fa.spreadsheet

Thanks!

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?

Add customizable preset to sample app

It would be great if the sample app had the ability to tweak the various properties of the shimmer dynamically and interactively.

There should be an additional preset called "Custom" that will show a bunch of controls for each of the possible options for the shimmer object. Once a value is changed, the shimmer should be updated so you could see the new effect.

Relative width, height and a few other attributes cannot be set because they need floats but setters are typed as Ints

I can't set the relative width:

        app:relative_width="0.3"
java.lang.UnsupportedOperationException: Can't convert value at index 9 to dimension: type=0x4
   at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:720)
  at com.facebook.shimmer.ShimmerFrameLayout.<init>(ShimmerFrameLayout.java:226)
   at com.facebook.shimmer.ShimmerFrameLayout.<init>(ShimmerFrameLayout.java:147)
                                                                                     	... 33 more

Looking at the source, this is because the setter inexplicably takes an int and casts it to float, instead of taking a float in the first place.

 public void setRelativeWidth(int relativeWidth) {
    this.mMask.relativeWidth = (float)relativeWidth;
    this.resetAll();
  }

This should be an easy fix. I'd open a PR myself if I didn't have a deadline to meet.

[Feature Request] support for delayed stopping

There should be an option/feature to stop the animation/visibility that waits a minimum time to be dismissed. It should be visible/animate for a minimum amount of time to avoid "flashes" in the UI.

Gradle Build error: expected enum but got (raw string) rect.

In the style definitions rect line causing error.

Gradle message shows expected enum but got (raw) string rect error.
Same error occures for usages of item name="shape">oval

<style name="AndroidImageSlider_Corner_Oval_Orange">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:gravity">center</item>
    <item name="android:background">@drawable/indicator_corner_bg</item>
    <item name="android:paddingLeft">2dp</item>
    <item name="android:paddingRight">2dp</item>
    <item name="shape">oval</item>
    <item name="padding_left">3dp</item>
    <item name="padding_right">3dp</item>
    <item name="padding_top">4dp</item>
    <item name="padding_bottom">4dp</item>

    <item name="selected_color">#f60</item>
    <item name="unselected_color">#ffffff</item>
    <item name="selected_width">6dp</item>
    <item name="selected_height">6dp</item>
    <item name="unselected_width">6dp</item>
    <item name="unselected_height">6dp</item>
</style>

these are my log data

AGPBI: {"kind":"error","text":"error: expected enum but got (raw string) rect.","sources":[{"file":"/home/aflah/.gradle/caches/transforms-1/files-1.1/library-1.1.5.aar/22ac9c027cf078574334abf979f36c78/res/values/values.xml","position":{"startLine":29,"startColumn":4,"startOffset":3600,"endLine":48,"endColumn":12,"endOffset":4540}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: expected enum but got (raw string) oval.","sources":[{"file":"/home/aflah/.gradle/caches/transforms-1/files-1.1/library-1.1.5.aar/22ac9c027cf078574334abf979f36c78/res/values/values.xml","position":{"startLine":49,"startColumn":4,"startOffset":4545,"endLine":67,"endColumn":12,"endOffset":5415}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: expected enum but got (raw string) oval.","sources":[{"file":"/home/aflah/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.3.1.aar/dcedc0cb134c18ffae0fd1f3717fb6c8/res/values/values.xml","position":{"startLine":350,"startColumn":4,"startOffset":34737,"endColumn":87,"endOffset":34820}}],"original":"","tool":"AAPT"}

Failed to execute aapt
com.android.ide.common.process.ProcessException: Failed to execute aapt
at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
at sun.reflect.GeneratedMethodAccessor306.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)
... 47 more
Caused by: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:179)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
... 1 more
Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:463)
at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:415)
at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332)
at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:processDebugResources'.

Failed to execute aapt

Severe tearing in animations

If the shimmer effect is applied to a view that is taller than it is wide in the travel direction of the shimmer a severe tearing effect can be seen.

To visualize this you can test the following layout in portrait & landscape:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/shimmer_test"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:app="http://schemas.android.com/apk/res-auto"
                  android:layout_width="match_parent"
                  android:layout_height="0dp"
                  android:layout_weight="2"
                  android:orientation="horizontal">

        <com.facebook.shimmer.ShimmerFrameLayout
            android:id="@+id/shimmer1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            app:auto_start="true">

            <View
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#fd9fe1"/>
        </com.facebook.shimmer.ShimmerFrameLayout>

        <com.facebook.shimmer.ShimmerFrameLayout
            android:id="@+id/shimmer2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            app:auto_start="true"
            app:angle="cw_90">

            <View
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#D0B3CC"/>
        </com.facebook.shimmer.ShimmerFrameLayout>
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

basically, it will look like this:
Severe tearing

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>

```

Parse error The current thread must have a looper!

 com.scrat.community.framework.common.BaseNetException: Unknown error
     at com.scrat.community.framework.common.BaseNetCallback.onResponse(BaseNetCallback.java:69)
     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     at java.lang.Thread.run(Thread.java:818)
E/err: The current thread must have a looper!
 java.lang.IllegalStateException: The current thread must have a looper!
     at android.view.Choreographer$1.initialValue(Choreographer.java:96)
     at android.view.Choreographer$1.initialValue(Choreographer.java:91)
     at java.lang.ThreadLocal$Values.getAfterMiss(ThreadLocal.java:460)
     at java.lang.ThreadLocal.get(ThreadLocal.java:65)
     at android.view.Choreographer.getInstance(Choreographer.java:192)
     at android.animation.ValueAnimator$AnimationHandler.<init>(ValueAnimator.java:600)
     at android.animation.ValueAnimator$AnimationHandler.<init>(ValueAnimator.java:575)
     at android.animation.ValueAnimator.getOrCreateAnimationHandler(ValueAnimator.java:1366)
     at android.animation.ValueAnimator.end(ValueAnimator.java:998)
     at com.facebook.shimmer.ShimmerFrameLayout.stopShimmerAnimation(ShimmerFrameLayout.java:616)
     at com.scrat.community.module.home.main.MainFragment.hideLoading(MainFragment.java:180)
     at com.scrat.community.module.home.main.MainFragment.showLoadCirclesFail(MainFragment.java:138)
     at com.scrat.community.module.home.main.MainPresenter$1.onError(MainPresenter.java:94)
     at com.scrat.community.data.callback.DefaultLoadObjCallback.onRequestFailure(DefaultLoadObjCallback.java:32)
     at com.scrat.community.framework.common.BaseNetCallback.onResponse(BaseNetCallback.java:69)
     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     at java.lang.Thread.run(Thread.java:818)
E/err: Parse error The current thread must have a looper!
 java.io.IOException: Parse error The current thread must have a looper!
     at com.scrat.community.framework.common.BaseNetCallback.onResponse(BaseNetCallback.java:72)
     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
     at java.lang.Thread.run(Thread.java:818)

Migration to AndroidX

With Google introducing AndroidX, is migration to AndroidX on the roadmap for this project?

Memory leak

I am seeing the following with LeakCanary - I think it is because I am exiting the activity while there is some animation thread running. What is the possible solution for this?

05-20 17:10:33.377 13526-14611/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ In com.gmspartnersltd.earthmiles.debug:1.6:6.
* com.gmspartnersltd.earthmiles.views.mainthreetabs.rewardsfragment.RewardsSubFragment has leaked:
* GC ROOT android.view.Choreographer$FrameDisplayEventReceiver.this$0
* references android.view.Choreographer.mCallbackQueues
* references array android.view.Choreographer$CallbackQueue[].[1]
* references android.view.Choreographer$CallbackQueue.mHead
* references android.view.Choreographer$CallbackRecord.action
* references android.animation.ValueAnimator$AnimationHandler.mAnimations
* references java.util.ArrayList.array
* references array java.lang.Object[].[0]
* references android.animation.ValueAnimator.mUpdateListeners
* references java.util.ArrayList.array
* references array java.lang.Object[].[0]
* references com.facebook.shimmer.ShimmerFrameLayout$2.this$0 (anonymous class implements android.animation.ValueAnimator$AnimatorUpdateListener)
* references com.facebook.shimmer.ShimmerFrameLayout.mContext
* references android.view.ContextThemeWrapper.mBase
* references com.gmspartnersltd.earthmiles.views.MainActivity.mFragments
* references android.app.FragmentManagerImpl.mAdded
* references java.util.ArrayList.array
* references array java.lang.Object[].[0]
* references com.gmspartnersltd.earthmiles.views.mainthreetabs.rewardsfragment.RewardsFragment.mTabsLinearLayout
* references android.widget.LinearLayout.mParent
* references com.astuetz.PagerSlidingTabStrip.pager
* references android.support.v4.view.ViewPager.mAdapter
* references com.gmspartnersltd.earthmiles.views.mainthreetabs.rewardsfragment.RewardsSubTabAdapter.mCurrentPrimaryItem
* leaks com.gmspartnersltd.earthmiles.views.mainthreetabs.rewardsfragment.RewardsSubFragment instance
* Reference Key: 314744a1-c40a-4b0d-aec1-547d7117ace4
* Device: Genymotion generic Google Nexus 5 - 5.0.0 - API 21 - 1080x1920 vbox86p
* Android Version: 5.0 API: 21
* Durations: watch=5010ms, gc=123ms, heap dump=829ms, analysis=4626ms

Running error

03-12 10:05:31.064: E/AndroidRuntime(15217): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.facebook.shimmer.example/com.facebook.shimmer.example.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class com.facebook.shimmer.ShimmerFrameLayout
03-12 10:05:31.064: E/AndroidRuntime(15217): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2187)

Latest gradle version

Looks like the latest commit reduce the min-sdk requirement. Awesome. When will it get pushed to maven?

Add CONTRIBUTING file

Add contributing file to detail how to work on the project (first time setup, etc).

Out of memory!!!

Is there any configuration to handle out of memory? This issue not belong to size of image that containing by container...

: FATAL EXCEPTION: main
Process: , PID: 16081 java.lang.OutOfMemoryError: Failed to allocate a 9437196 byte allocation with 6740004 free bytes and 6MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:747)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:568)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1014)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3747)
at android.content.res.Resources.loadDrawable(Resources.java:3620)
at android.content.res.TypedArray.getDrawable(TypedArray.java:762)
at android.widget.ImageView.(ImageView.java:151)
at android.widget.ImageView.(ImageView.java:140)
at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:60)
at android.support.v7.widget.AppCompatImageView.(AppCompatImageView.java:56)
at android.support.v7.internal.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:98)
at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:926)
at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:980)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:181)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at.fragments.FirmsInfoFragment.onCreateView(FirmsFragment.java:53)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
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:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

Smart quotes in code example

I'll admit this is a pretty dumb ticket, but it's worth pointing out that the code examples on the webpage can't be copy-pasted due to smart quotes used in the code examples:

https://github.com/facebook/shimmer-android/blob/gh-pages/index.html#L95

Pasting this into Android Studio makes the IDE think the wrong closing tags are used, attributes aren't defined, and other totally non-useful errors ;)

Seems like an easy fixed. I'd send over a PR but I think my contract may prevent me from doing so

Shimmer not working for certain tablets

The Shimmer implementation seems not to work for certain devices (like HUAWEI MediaPad M3 Lite 10). I am using the ShimmerFrameLayout (auto_start = false) and start the shimmer using .startShimmer()

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?

Not working in MIUI

I am using this library: https://github.com/sharish/ShimmerRecyclerView which depends on facebook shimmer library.
The adapter part is working fine but shimmer (by facebook is not woking at all).
Please fix.
BTW, perfectly working on stock android (My Moto E 2nd Gen Android API 21)

Problem on: MIUI Redmi 3S Prime Android API 23 MIUI Version Global 8.1 (8.1.1.0 MALMIDI)

Crashing with NPE in Espresso tests.

App is crashing consistently while running espresso tests.

Stacktrace:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.Bitmap.setHasAlpha(boolean)' on a null object reference
at android.graphics.Bitmap.createBitmap(Bitmap.java:1034)
at android.graphics.Bitmap.createBitmap(Bitmap.java:968)
at android.graphics.Bitmap.createBitmap(Bitmap.java:918)
at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
at com.facebook.shimmer.ShimmerFrameLayout.createBitmapAndGcIfNecessary(ShimmerFrameLayout.java:943)
at com.facebook.shimmer.ShimmerFrameLayout.tryCreateRenderBitmap(ShimmerFrameLayout.java:744)
at com.facebook.shimmer.ShimmerFrameLayout.tryObtainRenderUnmaskBitmap(ShimmerFrameLayout.java:728)
at com.facebook.shimmer.ShimmerFrameLayout.dispatchDrawUsingBitmap(ShimmerFrameLayout.java:710)
at com.facebook.shimmer.ShimmerFrameLayout.dispatchDraw(ShimmerFrameLayout.java:697)
at android.view.View.draw(View.java:19126)
at android.view.View.updateDisplayListIfDirty(View.java:18073)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4198)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4178)
at android.view.View.updateDisplayListIfDirty(View.java:18032)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4198)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4178)
at android.view.View.updateDisplayListIfDirty(View.java:18032)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.draw(View.java:19126)
at android.widget.ScrollView.draw(ScrollView.java:1739)
at android.view.View.updateDisplayListIfDirty(View.java:18073)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4198)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4178)
at android.view.View.updateDisplayListIfDirty(View.java:18032)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.draw(View.java:19126)
at android.widget.HorizontalScrollView.draw(HorizontalScrollView.java:1658)
at android.view.View.updateDisplayListIfDirty(View.java:18073)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1367)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.updateDisplayListIfDirty(View.java:18064)
at android.view.View.draw(View.java:18851)
at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
at android.view.View.draw(View.java:19126)
at com.android.internal.policy.DecorView.draw(DecorView.java:785)
at android.view.View.updateDisplayListIfDirty(View.java:18073)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:643)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:649)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:757)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2980)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2794)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2347)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

java.lang.IllegalArgumentException: bitmap size exceeds 32bits

i am using the shimmer layout in the UI only and managing the visibility on the basis of API result .
i am getting the following Exception

STACK_TRACE=java.lang.IllegalArgumentException: bitmap size exceeds 32bits
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:842)
at android.graphics.Bitmap.createBitmap(Bitmap.java:810)
at android.graphics.Bitmap.createBitmap(Bitmap.java:777)
at com.facebook.shimmer.ShimmerFrameLayout.createBitmapAndGcIfNecessary(ShimmerFrameLayout.java:943)
at com.facebook.shimmer.ShimmerFrameLayout.getMaskBitmap(ShimmerFrameLayout.java:822)
at com.facebook.shimmer.ShimmerFrameLayout.drawMasked(ShimmerFrameLayout.java:771)
at com.facebook.shimmer.ShimmerFrameLayout.dispatchDrawUsingBitmap(ShimmerFrameLayout.java:720)
at com.facebook.shimmer.ShimmerFrameLayout.dispatchDraw(ShimmerFrameLayout.java:697)
at android.view.View.draw(View.java:14536)
at android.widget.FrameLayout.draw(FrameLayout.java:472)
at android.view.View.getDisplayList(View.java:13417)
at android.view.View.getDisplayList(View.java:13459)
at android.view.View.draw(View.java:14250)
at android.view.ViewGroup.drawChild(ViewGroup.java:3119)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2947)
at android.view.View.getDisplayList(View.java:13412)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3091)
at android.view.View.getDisplayList(View.java:13355)
at android.view.View.getDisplayList(View.java:13459)
at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1612)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1483)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2477)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2333)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1953)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1048)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5952)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:787)
at android.view.Choreographer.doCallbacks(Choreographer.java:600)
at android.view.Choreographer.doFrame(Choreographer.java:569)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:773)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5291)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)

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)

Publish a new version

Shimmer animation is not working properly in version 0.1.0. I cloned the repository and the bug was fixed when I tried it.
Could you release version 0.2.0?

How to exclude some views

Hi,

Looking at the documentation I didn't found a way to exclude some views from the animation. Is there a way to achieve this without having multiple shimmers ?

Here is what I'd like to have with Separator and TextView not animated :

<ShimmerL>
<ConstraintL>
<View>
<View>
<Separator>
<TextView>
<View>
<View>
</ConstL>
</Shimmer>

The thing is with a complex layout it's nice to flatten it with constraint layout. Having (multiple) ShimmerLayout inside my constraint layout remove the ability to setup constraint within childs views.

In the new android studio 3.0. I am getting this exception with the shimmerlayout

FATAL EXCEPTION: main
Process: app.geniestation.com.corporate, PID: 24049
java.lang.RuntimeException: Unable to start activity ComponentInfo{app.geniestation.com.corporate/app.geniestation.com.corporate.activities.MainActivity}: android.view.InflateException: Binary XML file line #29: Binary XML file line #43: Error inflating class com.facebook.shimmer.ShimmerFrameLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.view.InflateException: Binary XML file line #29: Binary XML file line #43: Error inflating class com.facebook.shimmer.ShimmerFrameLayout
Caused by: android.view.InflateException: Binary XML file line #43: Error inflating class com.facebook.shimmer.ShimmerFrameLayout
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at android.view.LayoutInflater.createView(LayoutInflater.java:647)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:995)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:859)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at app.geniestation.com.corporate.fragments.MainFragment.onCreateView(MainFragment.java:67)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2261)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3231)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3181)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:572)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
10-26 16:23:34.234 24049-24049/app.geniestation.com.corporate E/AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1333)
at android.app.Activity.performStart(Activity.java:6992)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2780)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NumberFormatException: For input string: ".6"
at java.lang.Integer.parseInt(Integer.java:597)
at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:133)
at android.content.res.TypedArray.getInt(TypedArray.java:375)
at com.facebook.shimmer.ShimmerFrameLayout.(ShimmerFrameLayout.java:175)
at com.facebook.shimmer.ShimmerFrameLayout.(ShimmerFrameLayout.java:147)
... 45 more

Error inflating class com.facebook.shimmer.ShimmerFrameLayout

Binary XML file line #201: Binary XML file line #201: Error inflating class com.facebook.shimmer.ShimmerFrameLayout
Caused by: android.view.InflateException: Binary XML file line #201: Error inflating class com.facebook.shimmer.ShimmerFrameLayout

I have tried the gradle way it gives me "shape is already defined error" . So i tried with jar file and i was able to integrate but when i run the project i get the above error and app crashes .

i did follow the commit of removing the shimmer:animation and trying to take off the constraint layout as well . Stil its same . please help . The error is not resolved for me . i did see the issue #20 closed . But whats the solution to this ?

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.