glomadrian / grav Goto Github PK
View Code? Open in Web Editor NEWConfigurable animations based on points
Configurable animations based on points
The ball_wave animation spawns a lot of balls at first, then nothing for a while and then gradually more balls.
I would like it to gradually spawn balls all the time. How can I fix this? I'm using exactly this:
https://github.com/glomadrian/Grav/blob/master/app/src/main/res/layout/ball_wave.xml
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
Hope this helps!
Regards
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
);
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.
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)
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)
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.
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
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 :)
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" />
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">
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!
great, lets upload your library to https://bintray.com/ so the user can make a easy call.
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 ?
if you suddenly put zero value for "regular_cell_size" attribute, then android studio hangs in a not responding state
In Path animator params is M527.023,71.8233 C780.213,but M and C mean what
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 ?
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....
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
Attempt to invoke Vector.iterate() on a null object reference.
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.
If the user lock their phone, GravView i`ts not refreshing , or continuing its state , it is frozen at the last seen position
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.