Giter Site home page Giter Site logo

grav's People

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

grav's Issues

Animation stops if size changes

First: Amazing library and very easy to use THANKS for that.

I was trying it and found that if animation is tied to a view, layout and this changes it's size, animation freezes.

Using the example provided, I tried to reproduce it with less modification as possible.

try replacing the files and you'll see the image get frozzen with some dots around.

Just a button to change the image
MainActivity.zip

The idea is to Tie the grav view size to another object that will change it's size

grav.zip

Hope this helps!
Regards

Change attributes programmatically

Thanks for great library.
I wonder could you support to change all attributes of GravView at run time?
For example:
gravView.setColorGenerator(GravAnimatorGenerator animatorGenerator)
It would be make sense because sometime we need to change animation, color, speed to respect app's settings

How to apply multiple animations ?

Thank you so much for this library. It is just awesome and does what it says wonderfully. I love the way you've designed it. I was trying to create a star like background where I would like to use multiple animations for example, scale & alpha together. Is there a way we can achieve this using existing code ?

NoSuchMethodError: removeOnGlobalLayoutListener

Exception java.lang.NoSuchMethodError: android.view.ViewTreeObserver.removeOnGlobalLayoutListener
com.github.glomadrian.grav.GravView$1.onGlobalLayout ()
android.view.ViewTreeObserver.dispatchOnGlobalLayout (ViewTreeObserver.java:566)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1720)
android.view.ViewRootImpl.handleMessage (ViewRootImpl.java:2628)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loop (Looper.java:137)
android.app.ActivityThread.main (ActivityThread.java:4517)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:993)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:760)
dalvik.system.NativeStart.main (NativeStart.java)

Animation Would Not Restart Properly After "stop" Method Call

Hello,

In the "GravSampleFragment" fragment class of the sample app, I noticed the "onPause" life-cycle method is overridden with an extra call to:

gravView.stop();

I tried to let the animation restart by adding the following code in the "GravSampleFragment" fragment class:

@Override
public void onResume() {
    super.onResume();
    if (!running) {
      running = true;
      gravView.start();
    }
}

and changed the existing two methods to the following:

private boolean running;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ButterKnife.bind(this, view);
    running = true;
}

@Override
public void onPause() {
    super.onPause();
    gravView.stop();
    running = false;
}

But unfortunately the animation would not restart (or continue from the stopped state) despite the fact that gravView.start() is called.
Could you please point out whether it is possible to restart the animation once stopped?
Thank you!

Robot Example ( Question )

How can get robot view?
What is in sample is totally different with image you show in read me.
Is there any chance to get "walla_points_percent_points" that create robot image in read me?
Thanks :)

API 14+ but app module is API 16

When I add this library to my dependencies gradle tells me “minSdkVersion 15 cannot be smaller than version 16 declared in library”. However, the lib is 14+, the API 16 is maybe coming from the (example) app module. Please make that 14 as well so we can use it in an API 15 project.

Library attributes

Library's attributes are not prefixed, which sooner or later can cause conflicts as you are using pretty generic names in your library like rectangle_width. Prefixing all attributes with i.e. grv_ or grav_ would address this problem.

Other issue is lack of consistency in attribute naming. You have animationGenerators but also rectangle_height. Would be handy to stick to one style (preferably snake_style as this is most commonly used attribute naming convention.

Suggestion: About the name grav

First of all i would like to thank you for this project. It is really awesome. This issue is to let you know that there is an another project named Grav, which is an open source CMS. Its code is also hosted on GitHub. I would suggest you to change your projects name if possible, Since your project is gaining much popularity it will avoid confusion to other users that are searching for Grav on GitHub,

Grav website: https://getgrav.org/

PS: You can close this issue if you are not willing to change the name....

Animation restart every time i make a change to other elements of ui

I'm trying to implement this library in my project, but i can't get over this problem.
Every time I make a change to the ui, like showing or hiding a ProgressBar, the animation restarts.

<view android:id="@+id/view2" class="com.github.glomadrian.grav.GravView" id="@+id/view" android:layout_width="match_parent" android:layout_height="match_parent" app:animationGenerators="@array/FalconAnimations" app:array_colors="@array/Spectral" app:ball_size_from_size="3dp" app:ball_size_to_size="5dp" app:colorGenerator="com.github.glomadrian.grav.generator.paint.ArrayColorGenerator" app:gravGenerator="com.github.glomadrian.grav.generator.grav.BallGenerator" app:pointGenerator="com.github.glomadrian.grav.generator.point.RegularPointGenerator" app:regular_cell_size="250" app:regular_variance="200" app:shake_direction="horizontal" app:shake_variance="15dp" app:side_to_side_direction="downToUp" app:side_to_side_max_duration="6000" app:side_to_side_min_duration="3000" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="0dp" />

issue importing

I get this:

Unable to load class 'org.gradle.api.internal.component.Usage'. Possible causes for this unexpected error include:
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem. Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

image

Importing lib is really painfull

Hello,

it is being really difficult to import this lib, I get a lot of "Manifest merger failed : Attribute...is also present at..."
Also the lib dos not include this properties needed in the examples:
app:array_colors="@array/red"
app:animationGenerators="@array/path"
app:path_original_width="@integer/circle_original_width"
app:path_original_height="@integer/circle_original_height"

How come this are not part of it?

I think you should remove following from the lib:
<application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true">

Animation stops with fullscreen Flag

The view doesn't animate if you use the full screen flag in the activity

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

Animation keeps working with all the other flags which hide the navigation and statusbar , but i also need the fullscreen flag to fill the hidden nav and status bars with the activity content. But it causes the Grav View to not animate at all. Below is the code that i use. I call it in onWindowFocusChanged function

View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
        );

GravView froze on device lock.

If the user lock their phone, GravView i`ts not refreshing , or continuing its state , it is frozen at the last seen position

LeakCanary detected leaks

screenshot_20170712-021307

In com.appchamp.wordchunks:1.2.beta:2.

  • com.appchamp.wordchunks.ui.main.MainActivity has leaked:

  • GC ROOT static android.os.Looper.sMainLooper

  • references android.os.Looper.mThread

  • references thread java.lang.Thread.localValues (named 'main')

  • references java.lang.ThreadLocal$Values.table

  • references array java.lang.Object[].[35]

  • 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.github.glomadrian.grav.GravView$2.this$0 (anonymous implementation of android.animation.ValueAnimator$AnimatorUpdateListener)

  • references com.github.glomadrian.grav.GravView.mContext

  • leaks com.appchamp.wordchunks.ui.main.MainActivity instance

  • Retaining: 8,5 KB.

  • Reference Key: e2408d52-4d21-47b8-aad3-4a209187c9b6

  • Device: samsung samsung SAMSUNG-SM-G930A heroqlteuc

  • Android Version: 6.0.1 API: 23 LeakCanary: 1.5.1 1be44b3

  • Durations: watch=5023ms, gc=135ms, heap dump=2954ms, analysis=48650ms

  • Details:

  • Class android.os.Looper
    | static $staticOverhead = byte[24]@1900676609 (0x714a0601)
    | static sThreadLocal = java.lang.ThreadLocal@1898139904 (0x71235100)
    | static sMainLooper = android.os.Looper@315432160 (0x12cd1ce0)
    | static TAG = java.lang.String@1893833160 (0x70e199c8)

  • Instance of android.os.Looper
    | static $staticOverhead = byte[24]@1900676609 (0x714a0601)
    | static sThreadLocal = java.lang.ThreadLocal@1898139904 (0x71235100)
    | static sMainLooper = android.os.Looper@315432160 (0x12cd1ce0)
    | static TAG = java.lang.String@1893833160 (0x70e199c8)
    | mLogging = null
    | mPackageName = java.lang.String@1893566704 (0x70dd88f0)
    | mQueue = android.os.MessageQueue@315644608 (0x12d05ac0)
    | mSlowLapTimeEvent = -1
    | mThread = java.lang.Thread@2006873656 (0x779e7638)
    | shadow$klass = android.os.Looper
    | shadow$monitor = 0

  • Instance of java.lang.Thread
    | static NANOS_PER_MILLI = 1000000
    | static defaultUncaughtHandler = com.android.internal.os.RuntimeInit$UncaughtHandler@315274592 (0x12cab560)
    | static count = 28521
    | static MAX_PRIORITY = 10
    | static $staticOverhead = byte[48]@1900608057 (0x7148fa39)
    | static NORM_PRIORITY = 5
    | static MIN_PRIORITY = 1
    | contextClassLoader = dalvik.system.PathClassLoader@315912320 (0x12d47080)
    | daemon = false
    | group = java.lang.ThreadGroup@1897882016 (0x711f61a0)
    | hasBeenStarted = false
    | id = 1
    | inheritableValues = null
    | interruptActions = java.util.ArrayList@2007801168 (0x77ac9d50)
    | localValues = java.lang.ThreadLocal$Values@2007801192 (0x77ac9d68)
    | lock = java.lang.Object@2007801224 (0x77ac9d88)
    | name = java.lang.String@2007801232 (0x77ac9d90)
    | nativePeer = 547465918976
    | parkBlocker = null
    | parkState = 1
    | priority = 5
    | stackSize = 0
    | target = null
    | uncaughtHandler = null
    | shadow$klass = java.lang.Thread
    | shadow$monitor = 0

  • Instance of java.lang.ThreadLocal$Values
    | static $staticOverhead = byte[16]@1898511153 (0x7128fb31)
    | static INITIAL_SIZE = 16
    | static TOMBSTONE = java.lang.Object@1898097288 (0x7122aa88)
    | clean = 24
    | mask = 63
    | maximumLoad = 21
    | size = 17
    | table = java.lang.Object[64]@314731760 (0x12c26cf0)
    | tombstones = 0
    | shadow$klass = java.lang.ThreadLocal$Values
    | shadow$monitor = 0

  • Array of java.lang.Object[]
    | [0] = java.lang.ref.WeakReference@1898072824 (0x71224af8)
    | [1] = android.os.StrictMode$AndroidBlockGuardPolicy@315276208 (0x12cabbb0)
    | [2] = java.lang.ref.WeakReference@2007171600 (0x77a30210)
    | [3] = android.view.Choreographer@318182720 (0x12f71540)
    | [4] = java.lang.ref.WeakReference@329522368 (0x13a41cc0)
    | [5] = io.realm.Realm@329526688 (0x13a42da0)
    | [6] = null
    | [7] = null
    | [8] = null
    | [9] = null
    | [10] = null
    | [11] = null
    | [12] = java.lang.ref.WeakReference@318156384 (0x12f6ae60)
    | [13] = null
    | [14] = java.lang.ref.WeakReference@1898139920 (0x71235110)
    | [15] = android.os.Looper@315432160 (0x12cd1ce0)
    | [16] = java.lang.ref.WeakReference@2007171392 (0x77a30140)
    | [17] = android.view.ViewRootImpl$RunQueue@318192384 (0x12f73b00)
    | [18] = java.lang.ref.WeakReference@2007183424 (0x77a33040)
    | [19] = null
    | [20] = java.lang.ref.WeakReference@329522400 (0x13a41ce0)
    | [21] = java.lang.Integer@1897868328 (0x711f2c28)
    | [22] = null
    | [23] = null
    | [24] = java.lang.ref.WeakReference@2007184128 (0x77a33300)
    | [25] = android.graphics.Rect@318348992 (0x12f99ec0)
    | [26] = java.lang.ref.WeakReference@318419872 (0x12fab3a0)
    | [27] = android.support.v7.widget.GapWorker@318419968 (0x12fab400)
    | [28] = java.lang.ref.WeakReference@1898096216 (0x7122a658)
    | [29] = char[20]@2007801424 (0x77ac9e50)
    | [30] = null
    | [31] = null
    | [32] = null
    | [33] = null
    | [34] = java.lang.ref.WeakReference@1898131624 (0x712330a8)
    | [35] = android.animation.ValueAnimator$AnimationHandler@318182656 (0x12f71500)
    | [36] = null
    | [37] = null
    | [38] = null
    | [39] = null
    | [40] = java.lang.ref.WeakReference@1898151968 (0x71238020)
    | [41] = android.view.FocusFinder@320570624 (0x131b8500)
    | [42] = java.lang.ref.WeakReference@1898096240 (0x7122a670)
    | [43] = java.lang.RealToString@2007801400 (0x77ac9e38)
    | [44] = java.lang.ref.WeakReference@315287616 (0x12cae840)
    | [45] = null
    | [46] = null
    | [47] = null
    | [48] = null
    | [49] = null
    | [50] = null
    | [51] = null
    | [52] = null
    | [53] = null
    | [54] = null
    | [55] = null
    | [56] = null
    | [57] = null
    | [58] = null
    | [59] = null
    | [60] = java.lang.ref.WeakReference@2007183376 (0x77a33010)
    | [61] = android.os.StrictMode$AndroidBlockGuardPolicy@315276208 (0x12cabbb0)
    | [62] = java.lang.ref.WeakReference@318156352 (0x12f6ae40)
    | [63] = null

  • Instance of android.animation.ValueAnimator$AnimationHandler
    | mAnimate = android.animation.ValueAnimator$AnimationHandler$1@318763216 (0x12fff0d0)
    | mAnimationScheduled = true
    | mAnimations = java.util.ArrayList@318695008 (0x12fee660)
    | mChoreographer = android.view.Choreographer@318182720 (0x12f71540)
    | mCommit = android.animation.ValueAnimator$AnimationHandler$2@318763232 (0x12fff0e0)
    | mDelayedAnims = java.util.ArrayList@318695104 (0x12fee6c0)
    | mEndingAnims = java.util.ArrayList@318695136 (0x12fee6e0)
    | mLastFrameTime = 211822783
    | mPendingAnimations = java.util.ArrayList@318695072 (0x12fee6a0)
    | mReadyAnims = java.util.ArrayList@318695168 (0x12fee700)
    | mTmpAnimations = java.util.ArrayList@318695040 (0x12fee680)
    | shadow$klass = android.animation.ValueAnimator$AnimationHandler
    | shadow$monitor = 0

  • Instance of java.util.ArrayList
    | static $staticOverhead = byte[16]@1898647017 (0x712b0de9)
    | static MIN_CAPACITY_INCREMENT = 12
    | static serialVersionUID = 8683452581122892189
    | array = java.lang.Object[40]@320106768 (0x13147110)
    | size = 38
    | modCount = 76
    | shadow$klass = java.util.ArrayList
    | shadow$monitor = 0

  • Array of java.lang.Object[]
    | [0] = android.animation.ValueAnimator@314850016 (0x12c43ae0)
    | [1] = android.animation.ValueAnimator@316646944 (0x12dfa620)
    | [2] = android.animation.ValueAnimator@316647520 (0x12dfa860)
    | [3] = android.animation.ValueAnimator@316647808 (0x12dfa980)
    | [4] = android.animation.ValueAnimator@316648096 (0x12dfaaa0)
    | [5] = android.animation.ValueAnimator@316648240 (0x12dfab30)
    | [6] = android.animation.ValueAnimator@316648384 (0x12dfabc0)
    | [7] = android.animation.ValueAnimator@316648528 (0x12dfac50)
    | [8] = android.animation.ValueAnimator@316648816 (0x12dfad70)
    | [9] = android.animation.ValueAnimator@316649104 (0x12dfae90)
    | [10] = android.animation.ValueAnimator@316649248 (0x12dfaf20)
    | [11] = android.animation.ValueAnimator@316649392 (0x12dfafb0)
    | [12] = android.animation.ValueAnimator@316649680 (0x12dfb0d0)
    | [13] = android.animation.ValueAnimator@316649824 (0x12dfb160)
    | [14] = android.animation.ValueAnimator@316650112 (0x12dfb280)
    | [15] = android.animation.ValueAnimator@316650256 (0x12dfb310)
    | [16] = android.animation.ValueAnimator@316650400 (0x12dfb3a0)
    | [17] = android.animation.ValueAnimator@316650544 (0x12dfb430)
    | [18] = android.animation.ValueAnimator@316650688 (0x12dfb4c0)
    | [19] = android.animation.ValueAnimator@316389744 (0x12dbb970)
    | [20] = android.animation.ValueAnimator@316852960 (0x12e2cae0)
    | [21] = android.animation.ValueAnimator@316853104 (0x12e2cb70)
    | [22] = android.animation.ValueAnimator@316853392 (0x12e2cc90)
    | [23] = android.animation.ValueAnimator@316853824 (0x12e2ce40)
    | [24] = android.animation.ValueAnimator@316855552 (0x12e2d500)
    | [25] = android.animation.ValueAnimator@316856560 (0x12e2d8f0)
    | [26] = android.animation.ValueAnimator@316856704 (0x12e2d980)
    | [27] = android.animation.ValueAnimator@316856848 (0x12e2da10)
    | [28] = android.animation.ValueAnimator@316857424 (0x12e2dc50)
    | [29] = android.animation.ValueAnimator@316857856 (0x12e2de00)
    | [30] = android.animation.ValueAnimator@316858000 (0x12e2de90)
    | [31] = android.animation.ValueAnimator@316858144 (0x12e2df20)
    | [32] = android.animation.ValueAnimator@316858720 (0x12e2e160)
    | [33] = android.animation.ValueAnimator@316858864 (0x12e2e1f0)
    | [34] = android.animation.ValueAnimator@316859008 (0x12e2e280)
    | [35] = android.animation.ValueAnimator@316859584 (0x12e2e4c0)
    | [36] = android.animation.ValueAnimator@316859728 (0x12e2e550)
    | [37] = android.animation.ValueAnimator@316860016 (0x12e2e670)
    | [38] = null
    | [39] = null

  • Instance of android.animation.ValueAnimator
    | static sAnimationHandler = java.lang.ThreadLocal@1898131672 (0x712330d8)
    | static DEBUG = false
    | static STOPPED = 0
    | static SEEKED = 2
    | static sDurationScale = 1.0
    | static sDefaultInterpolator = android.view.animation.AccelerateDecelerateInterpolator@1898131688 (0x712330e8)
    | static REVERSE = 2
    | static RESTART = 1
    | static INFINITE = -1
    | static $staticOverhead = byte[88]@1900648281 (0x71499759)
    | static TAG = java.lang.String@1894016968 (0x70e467c8)
    | static RUNNING = 1
    | mCurrentFraction = 0.18533978
    | mCurrentIteration = 2137
    | mDelayStartTime = 0
    | mDuration = 300
    | mInitialized = true
    | mInterpolator = android.view.animation.AccelerateDecelerateInterpolator@1898131688 (0x712330e8)
    | mPauseTime = 0
    | mPlayingBackwards = false
    | mPlayingState = 1
    | mRepeatCount = -1
    | mRepeatMode = 1
    | mResumed = false
    | mReversing = false
    | mRunning = true
    | mSeekFraction = -1.0
    | mStartDelay = 0
    | mStartListenersCalled = true
    | mStartTime = 211822698
    | mStartTimeCommitted = true
    | mStarted = true
    | mStartedDelay = false
    | mUnscaledDuration = 300
    | mUnscaledStartDelay = 0
    | mUpdateListeners = java.util.ArrayList@318211072 (0x12f78400)
    | mValues = android.animation.PropertyValuesHolder[1]@316616208 (0x12df2e10)
    | mValuesMap = java.util.HashMap@318383056 (0x12fa23d0)
    | mChangingConfigurations = 0
    | mConstantState = null
    | mListeners = null
    | mPauseListeners = null
    | mPaused = false
    | shadow$klass = android.animation.ValueAnimator
    | shadow$monitor = 0

  • Instance of java.util.ArrayList
    | static $staticOverhead = byte[16]@1898647017 (0x712b0de9)
    | static MIN_CAPACITY_INCREMENT = 12
    | static serialVersionUID = 8683452581122892189
    | array = java.lang.Object[12]@316870144 (0x12e30e00)
    | size = 1
    | modCount = 1
    | shadow$klass = java.util.ArrayList
    | shadow$monitor = 0

  • Array of java.lang.Object[]
    | [0] = com.github.glomadrian.grav.GravView$2@316616256 (0x12df2e40)
    | [1] = null
    | [2] = null
    | [3] = null
    | [4] = null
    | [5] = null
    | [6] = null
    | [7] = null
    | [8] = null
    | [9] = null
    | [10] = null
    | [11] = null

  • Instance of com.github.glomadrian.grav.GravView$2
    | this$0 = com.github.glomadrian.grav.GravView@315831808 (0x12d33600)
    | shadow$klass = com.github.glomadrian.grav.GravView$2
    | shadow$monitor = 0

  • Instance of com.github.glomadrian.grav.GravView
    | gravAnimatorGenerators = java.util.Vector@318212960 (0x12f78b60)
    | gravAnimators = java.util.Vector@319698016 (0x130e3460)
    | gravGenerator = com.github.glomadrian.grav.generator.grav.BallGenerator@318212896 (0x12f78b20)
    | gravVector = java.util.Vector@319697760 (0x130e3360)
    | paintGenerator = com.github.glomadrian.grav.generator.paint.OneColorGenerator@316616400 (0x12df2ed0)
    | pointGenerator = com.github.glomadrian.grav.generator.point.RegularPointGenerator@318212768 (0x12f78aa0)
    | viewRefreshAnimator = android.animation.ValueAnimator@314850016 (0x12c43ae0)
    | DEBUG_ELASTIC = true
    | isElasticEnabled = true
    | isPenSideButton = false
    | mAccessibilityCursorPosition = -1
    | mAccessibilityDelegate = null
    | mAccessibilityTraversalAfterId = -1
    | mAccessibilityTraversalBeforeId = -1
    | mAccessibilityViewId = -1
    | mAirButtonImpl = null
    | mAnimator = null
    | mAttachInfo = null
    | mAttributes = null
    | mBackground = null
    | mBackgroundPath = null
    | mBackgroundRenderNode = null
    | mBackgroundResource = 0
    | mBackgroundSizeChanged = true
    | mBackgroundTint = null
    | mBottom = 1722
    | mCachingFailed = false
    | mClipBounds = null
    | mContentDescription = null
    | mContext = com.appchamp.wordchunks.ui.main.MainActivity@315867472 (0x12d3c150)
    | mCurrentAnimation = null
    | mDisablePenGestureforfactorytest = true
    | mDrawableState = int[2]@1898172016 (0x7123ce70)
    | mDrawingCache = null
    | mDrawingCacheBackgroundColor = 0
    | mEnablePenGesture = false
    | mFloatingTreeObserver = null
    | mForegroundInfo = null
    | mGhostView = null
    | mHasPerformedLongPress = false
    | mHoverPopup = null
    | mHoverPopupToolTypeByApp = 0
    | mHoverPopupType = 0
    | mID = 2131296350
    | mIgnoreNextUpEvent = false
    | mInContextButtonPress = false
    | mInputEventConsistencyVerifier = null
    | mIsDetachedFromWindow = true
    | mIsInDialog = false
    | mIsSetContextMenuZOrderToTop = false
    | mIsSetFingerHovedInAppWidget = true
    | mIsWritingBuddyEnabled = false
    | mKeyedTags = null
    | mLabelForId = -1
    | mLastIsOpaque = false
    | mLayerPaint = null
    | mLayerType = 0
    | mLayoutInsets = null
    | mLayoutParams = android.widget.RelativeLayout$LayoutParams@318129024 (0x12f64380)
    | mLeft = 0
    | mLeftPaddingDefined = false
    | mListenerInfo = null
    | mMatchIdPredicate = null
    | mMatchLabelForPredicate = null
    | mMeasureCache = android.util.LongSparseLongArray@319631776 (0x130d31a0)
    | mMeasuredHeight = 1722
    | mMeasuredWidth = 1080
    | mMinHeight = 0
    | mMinWidth = 0
    | mNeededToChangedScrollBarPosition = false
    | mNestedScrollingParent = null
    | mNextFocusDownId = -1
    | mNextFocusForwardId = -1
    | mNextFocusLeftId = -1
    | mNextFocusRightId = -1
    | mNextFocusUpId = -1
    | mOldHeightMeasureSpec = 1073743546
    | mOldWidthMeasureSpec = 1073742904
    | mOutlineProvider = android.view.ViewOutlineProvider$1@1898152296 (0x71238168)
    | mOverScrollMode = 1
    | mOverlay = null
    | mPaddingBottom = 0
    | mPaddingLeft = 0
    | mPaddingRight = 0
    | mPaddingTop = 0
    | mParent = android.widget.RelativeLayout@315072512 (0x12c7a000)
    | mPendingCheckForLongPress = null
    | mPendingCheckForTap = null
    | mPerformClick = null
    | mPrivateFlags = -2128476144
    | mPrivateFlags2 = 1610819112
    | mPrivateFlags3 = 16
    | mRecreateDisplayList = false
    | mRenderNode = android.view.RenderNode@318210400 (0x12f78160)
    | mRenderNodeImageFilter = null
    | mRenderNodeImageFilterClipRects = java.util.ArrayList@318210432 (0x12f78180)
    | mResources = android.content.res.Resources@314858800 (0x12c45d30)
    | mRight = 1080
    | mRightPaddingDefined = false
    | mRootViewCheckForDialog = null
    | mScrollBarPositionPadding = 0
    | mScrollCache = null
    | mScrollIndicatorDrawable = null
    | mScrollX = 0
    | mScrollY = 0
    | mSendViewScrolledAccessibilityEvent = null
    | mSendViewStateChangedAccessibilityEvent = null
    | mSendingHoverAccessibilityEvents = false
    | mSkipRtlCheck = false
    | mSmartClipDataExtractionListener = null
    | mSmartClipDataTag = null
    | mStartActivityRequestWho = null
    | mStateListAnimator = null
    | mSystemUiVisibility = 0
    | mTag = null
    | mTempNestedScrollConsumed = null
    | mTop = 0
    | mTouchDelegate = null
    | mTouchSlop = 48
    | mTouchwizFlags = 0
    | mTransformationInfo = android.view.View$TransformationInfo@319711488 (0x130e6900)
    | mTransientStateCount = 0
    | mTransitionName = null
    | mTwExtraPaddingBottomForPreference = 0
    | mTwHorizontalScrollbarPosition = 0
    | mTwHorizontalScrollbarRect = android.graphics.Rect@318210368 (0x12f78140)
    | mTwScrollingByScrollbar = false
    | mTwScrollingVertical = true
    | mTwVerticalScrollbarRect = android.graphics.Rect@318210336 (0x12f78120)
    | mUnscaledDrawingCache = null
    | mUnsetPressedState = null
    | mUserPaddingBottom = 0
    | mUserPaddingEnd = -2147483648
    | mUserPaddingLeft = 0
    | mUserPaddingLeftInitial = 0
    | mUserPaddingRight = 0
    | mUserPaddingRightInitial = 0
    | mUserPaddingStart = -2147483648
    | mVerticalScrollFactor = 0.0
    | mVerticalScrollbarPosition = 0
    | mViewFlags = 402653184
    | mWindowAttachCount = 1
    | mWritingBuddy = null
    | mXmlFilePath = null
    | shadow$klass = com.github.glomadrian.grav.GravView
    | shadow$monitor = 0

  • Instance of com.appchamp.wordchunks.ui.main.MainActivity
    | RC_SIGN_IN = 9001
    | TAG = java.lang.String@316975856 (0x12e4aaf0)
    | _$_findViewCache = java.util.HashMap@318679312 (0x12fea910)
    | mAuth = com.google.android.gms.internal.lr@315307776 (0x12cb3700)
    | mDatabase = com.google.firebase.database.DatabaseReference@317474880 (0x12ec4840)
    | mGoogleApiClient = com.google.android.gms.internal.zzbcp@315238768 (0x12ca2970)
    | menu = com.jeremyfeinstein.slidingmenu.lib.SlidingMenu@318534656 (0x12fc7400)
    | viewModelClass = com.appchamp.wordchunks.ui.main.MainViewModel
    | _$_findViewCache = null
    | lifecycleRegistry$delegate = kotlin.SynchronizedLazyImpl@316984800 (0x12e4cde0)
    | viewModel = com.appchamp.wordchunks.ui.main.MainViewModel@317312528 (0x12e9ce10)
    | mDelegate = android.support.v7.app.AppCompatDelegateImplV23@317495184 (0x12ec9790)
    | mResources = null
    | mThemeId = 2131689868
    | mCreated = true
    | mFragments = android.support.v4.app.FragmentController@316843472 (0x12e2a5d0)
    | mHandler = android.support.v4.app.FragmentActivity$1@316984224 (0x12e4cba0)
    | mNextCandidateRequestIndex = 0
    | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@317939680 (0x12f35fe0)
    | mReallyStopped = true
    | mRequestedPermissionsFromFragment = false
    | mResumed = false
    | mRetaining = false
    | mStopped = true
    | mStartedActivityFromFragment = false
    | mStartedIntentSenderFromFragment = false
    | mExtraDataMap = android.support.v4.util.SimpleArrayMap@316984192 (0x12e4cb80)
    | DEBUG_ELASTIC = true
    | isElasticEnabled = true
    | mActionBar = null
    | mActionModeTypeStarting = 0
    | mActivityInfo = android.content.pm.ActivityInfo@315793920 (0x12d2a200)
    | mActivityTransitionState = android.app.ActivityTransitionState@317087872 (0x12e66080)
    | mApplication = com.appchamp.wordchunks.App@315302368 (0x12cb21e0)
    | mCalled = true
    | mChangeCanvasToTranslucent = false
    | mChangingConfigurations = false
    | mComponent = android.content.ComponentName@315658416 (0x12d090b0)
    | mConfigChangeFlags = 0
    | mCurrentConfig = android.content.res.Configuration@317478144 (0x12ec5500)
    | mDecor = null
    | mDefaultKeyMode = 0
    | mDefaultKeySsb = null
    | mDestroyed = true
    | mDoReportFullyDrawn = false
    | mEmbeddedID = null
    | mEnableDefaultActionBarUp = false
    | mEnterTransitionListener = android.app.SharedElementCallback$1@1898132040 (0x71233248)
    | mExitTransitionListener = android.app.SharedElementCallback$1@1898132040 (0x71233248)
    | mExpandRequestListener = null
    | mFeatureContextMenuListener = android.app.Activity$FeatureContextMenuListener@316843344 (0x12e2a550)
    | mFinished = true
    | mFlipfont = 0
    | mFragments = android.app.FragmentController@316843392 (0x12e2a580)
    | mHandler = android.os.Handler@316984064 (0x12e4cb00)
    | mHasCurrentPermissionsRequest = false
    | mIdent = 262469590
    | mInjectionManager = android.app.im.InjectionManager@316974320 (0x12e4a4f0)
    | mInstanceTracker = android.os.StrictMode$InstanceTracker@316843408 (0x12e2a590)
    | mInstrumentation = android.app.Instrumentation@315904096 (0x12d45060)
    | mIntent = android.content.Intent@315656224 (0x12d08820)
    | mLastNonConfigurationInstances = null
    | mLauncherBooster = null
    | mMainThread = android.app.ActivityThread@314797648 (0x12c36e50)
    | mManagedCursors = java.util.ArrayList@316984096 (0x12e4cb20)
    | mManagedDialogs = null
    | mMenuInflater = null
    | mMultiWindowStyle = com.samsung.android.multiwindow.MultiWindowStyle@316975472 (0x12e4a970)
    | mParent = null
    | mPolicyManager = null
    | mPreferredOrientation = 1
    | mPreventEmbeddedTabs = false
    | mReferrer = null
    | mResultCode = 0
    | mResultData = null
    | mResumed = false
    | mScreenChangeListener = null
    | mSearchEvent = null
    | mSearchManager = null
    | mShrinkRequestListener = null
    | mStackedHeight = -1
    | mStartedActivity = false
    | mStopped = true
    | mSubDecor = null
    | mSubWindow = null
    | mSubWindowAdded = false
    | mSubWindowDummpy = null
    | mTemporaryPause = false
    | mTitle = java.lang.String@315419328 (0x12cceac0)
    | mTitleColor = 0
    | mTitleReady = true
    | mToken = android.os.BinderProxy@315651808 (0x12d076e0)
    | mTranslucentCallback = null
    | mUiThread = java.lang.Thread@2006873656 (0x779e7638)
    | mVisibleBehind = false
    | mVisibleFromClient = true
    | mVisibleFromServer = true
    | mVoiceInteractor = null
    | mWindow = com.android.internal.policy.MultiPhoneWindow@317682688 (0x12ef7400)
    | mWindowAdded = true
    | mWindowManager = android.view.WindowManagerImpl@317796448 (0x12f13060)
    | myName = java.lang.String@316837104 (0x12e28cf0)
    | mInflater = com.android.internal.policy.PhoneLayoutInflater@317524432 (0x12ed09d0)
    | mOverrideConfiguration = null
    | mResources = android.content.res.Resources@314858800 (0x12c45d30)
    | mTheme = android.content.res.Resources$Theme@317796864 (0x12f13200)
    | mThemeResource = 2131689868
    | mBase = android.app.ContextImpl@317221040 (0x12e868b0)
    | shadow$klass = com.appchamp.wordchunks.ui.main.MainActivity
    | shadow$monitor = 1073742974

  • Excluded Refs:
    | Field: android.view.inputmethod.InputMethodManager.mNextServedView
    | Field: android.view.inputmethod.InputMethodManager.mServedView
    | Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
    | Field: android.view.inputmethod.InputMethodManager.mCurRootView
    | Field: android.os.UserManager.mContext
    | Field: android.net.ConnectivityManager.sInstance
    | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
    | Thread:FinalizerWatchdogDaemon (always)
    | Thread:main (always)
    | Thread:LeakCanary-Heap-Dump (always)
    | Class:java.lang.ref.WeakReference (always)
    | Class:java.lang.ref.SoftReference (always)
    | Class:java.lang.ref.PhantomReference (always)
    | Class:java.lang.ref.Finalizer (always)
    | Class:java.lang.ref.FinalizerReference (always)

Crash with ProGuard active.

I am using the library and it works fine normally but when I applied the proguard to my project, the app is crashing with this error :

06-15 17:40:09.843 30205-30205/com.myapp W/System.err: java.lang.ClassNotFoundException: com.github.glomadrian.grav.generator.paint.ArrayColorGenerator
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.Class.classForName(Native Method)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.Class.forName(Class.java:400)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.Class.forName(Class.java:326)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.c.a.a(ClassUtil.java:12)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.b.a.a(GeneratorFactory.java:27)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.GravView.a(GravView.java:53)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.GravView.(GravView.java:39)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.reflect.Constructor.newInstance0(Native Method)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:645)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.support.v7.app.k.b(AppCompatDelegateImplV9.java:292)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.support.v7.app.c.setContentView(AppCompatActivity.java:140)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at com.myapp.SplashActivity.onCreate(SplashActivity.java:42)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.Activity.performCreate(Activity.java:6684)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.-wrap12(ActivityThread.java)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.os.Looper.loop(Looper.java:154)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6186)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.github.glomadrian.grav.generator.paint.ArrayColorGenerator" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-1/lib/arm64, /data/app/com.myapp-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: ... 32 more
}

java.lang.RuntimeException: Unable to start activity ComponentInfo

{com.myapp/com.myapp.SplashActivity}: android.view.InflateException: Binary XML file line #48: Binary XML file line #48: Error inflating class com.github.glomadrian.grav.GravView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: android.view.InflateException: Binary XML file line #48: Binary XML file line #48: Error inflating class com.github.glomadrian.grav.GravView
Caused by: android.view.InflateException: Binary XML file line #48: Error inflating class com.github.glomadrian.grav.GravView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at android.support.v7.app.k.b(AppCompatDelegateImplV9.java:292)
at android.support.v7.app.c.setContentView(AppCompatActivity.java:140)
at com.myapp.SplashActivity.onCreate(SplashActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6684)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.github.glomadrian.grav.b.c.a.a(android.util.AttributeSet, android.content.Context)' on a null object reference
at com.github.glomadrian.grav.b.a.a(GeneratorFactory.java:28)
at com.github.glomadrian.grav.GravView.a(GravView.java:53)
at com.github.glomadrian.grav.GravView.<init>(GravView.java:39)
at java.lang.reflect.Constructor.newInstance0(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:377) 
at android.support.v7.app.k.b(AppCompatDelegateImplV9.java:292) 
at android.support.v7.app.c.setContentView(AppCompatActivity.java:140) 
at com.myapp.SplashActivity.onCreate(SplashActivity.java:42) 
at android.app.Activity.performCreate(Activity.java:6684) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6186) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

The xml integration is like this :

<com.github.glomadrian.grav.GravView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_centerInParent="true"
       app:animationGenerators="@array/BallWaveAnimations"
       app:array_colors="@array/bubble"
       app:ball_from_size="@dimen/dim_10"
       app:ball_to_size="@dimen/dim_20"
       app:colorGenerator="com.github.glomadrian.grav.generator.paint.ArrayColorGenerator"
       app:gravGenerator="com.github.glomadrian.grav.generator.grav.BallGenerator"
       app:pointGenerator="com.github.glomadrian.grav.generator.point.RegularPointGenerator"
       app:regular_cell_size="300"
       app:regular_variance="200"
       app:shake_direction="vertical"
       app:shake_max_duration="10000"
       app:shake_min_duration="10000"
       app:shake_variance="@dimen/dim_350"
       app:side_to_side_direction="downToUp"
       app:side_to_side_max_duration="20000"
       app:side_to_side_min_duration="10000" />

No changes are done in code about this xml view. Are there any pro guard rules which should be added ?

Lot of item at the beginning

Thank you for your lib, I just have an issue when the app launch the view a lot of ball appears. Just after I got a white space and after I have the correct behaviour.

Here it's the style I'm using

  \<item name="android:layout_width">match_parent</item>
  \  <item name="android:layout_marginEnd">-100dp</item>
   \ <item name="android:layout_marginStart">-100dp</item>
    \<item name="animationGenerator">com.github.glomadrian.grav.generator.animation.PathAnimator</item>
   \ <item name="animationGenerators">@array/path</item>
    \<item name="array_colors">@array/bubble</item>
   \ <item name="ball_size_from_size">8dp</item>
    \<item name="ball_size_to_size">12dp</item>
    \<item name="colorGenerator">com.github.glomadrian.grav.generator.paint.ArrayColorGenerator</item>
   \ <item name="gravGenerator">com.github.glomadrian.grav.generator.grav.BallGenerator</item>
   \ <item name="path">@string/bubble_path</item>
    \<item name="path_original_height">@integer/bubble_original_height</item>
    \<item name="path_original_width">@integer/bubble_original_width</item>
    \<item name="path_variance_from">-150dp</item>
    \<item name="path_variance_to">200dp</item>
    \<item name="pointGenerator">com.github.glomadrian.grav.generator.point.RegularPointGenerator</item>
    \<item name="regular_cell_size">120</item>
    \<item name="regular_variance">150</item>
    \<item name="path_min_duration">4000</item>
    \<item name="path_max_duration">5000</item>

Thank you

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.