alexvasilkov / GestureViews

ImageView and FrameLayout with gestures control and position animation
Apache License 2.0
2.37k stars 384 forks source link

Fatal Exception: java.lang.IllegalArgumentException Provided float is NaN #177

Closed baralgin1003 closed 2 years ago

baralgin1003 commented 2 years ago

Fatal Exception: java.lang.IllegalArgumentException: Provided float is NaN at com.alexvasilkov.gestures.State.nonNaN(State.java:230) at com.alexvasilkov.gestures.State.translateBy(State.java:61) at com.alexvasilkov.gestures.GestureController.onScroll(GestureController.java:613) at com.alexvasilkov.gestures.GestureControllerForPager.onScroll(GestureControllerForPager.java:173) at com.alexvasilkov.gestures.GestureController$InternalGesturesListener.onScroll(GestureController.java:1025) at android.view.GestureDetector.onTouchEvent(GestureDetector.java:700) at com.alexvasilkov.gestures.GestureController.onTouchInternal(GestureController.java:456) at com.alexvasilkov.gestures.GestureControllerForPager.onTouchInternal(GestureControllerForPager.java:114) at com.alexvasilkov.gestures.GestureController.onTouch(GestureController.java:444) at com.alexvasilkov.gestures.GestureControllerForPager.onTouch(GestureControllerForPager.java:107) at com.alexvasilkov.gestures.views.GestureFrameLayout.onTouchEvent(GestureFrameLayout.java:143) at android.view.View.dispatchTouchEvent(View.java:13509) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3135) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2789) at com.alexvasilkov.gestures.views.GestureFrameLayout.dispatchTouchEvent(GestureFrameLayout.java:104) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3141) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2803) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:496) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1853) at android.app.Activity.dispatchTouchEvent(Activity.java:4059) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:454) at android.view.View.dispatchPointerEvent(View.java:13775) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5813) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5604) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5101) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5154) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5120) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5260) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5128) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5317) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5101) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5154) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5120) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5128) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5101) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7944) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7913) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7864) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8090) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:260) at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java) at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:222) at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:8030) at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:8114) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1041) at android.view.Choreographer.doCallbacks(Choreographer.java:860) at android.view.Choreographer.doFrame(Choreographer.java:778) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1026) at android.os.Handler.handleCallback(Handler.java:914) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:225) at android.app.ActivityThread.main(ActivityThread.java:7563) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:994)

alexvasilkov commented 2 years ago

This one was caused by the default GestureDetecor sending garbage values to the library. This is fixed in v2.8.3, please try it out. I can still see a very few "float is NaN" reports originating from another part of the library, but they are very rare so I'm considering them as minor. Please let me know if you'll see a noticable amount of such issues with v2.8.3.