Hi,
We discovered an issue with the tooltip on the graphs. If you long press on the graph to display the tooltip then drag the finger out of the graph and stop the focus when you are out of the graph, the app will crash. I could replicated this with the SamplesBrowser/ItemTooltipLayer example as well. Could you please provide with any bug-fix for this issue?
Thanks.
12-12 14:40:58.093: E/InputEventReceiver(22155): Exception dispatching input event.12-12 14:40:58.093: E/MessageQueue-JNI(22155): Exception in MessageQueue callback: handleReceiveCallback12-12 14:40:58.153: E/MessageQueue-JNI(22155): java.lang.IllegalArgumentException: x must be < bitmap.width()12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.graphics.Bitmap.checkPixelAccess(Bitmap.java:1012)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.graphics.Bitmap.getPixel(Bitmap.java:967)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.DroidCanvasRenderer.getPixelAt(DroidCanvasRenderer.java:1203)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.RenderingContext.getPixelAt(RenderingContext.java:165)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.SeriesViewerView.getHitSeries(SeriesViewerView.java:678)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.SeriesViewerView$35.invoke(SeriesViewerView.java:1425)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.SeriesViewerView.onMouseOver(SeriesViewerView.java:1422)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.SeriesViewerView$16.invoke(SeriesViewerView.java:588)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.EventProxy.raiseOnMouseOver(EventProxy.java:299)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.DroidEventProxy.HandleTouch(DroidEventProxy.java:98)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.infragistics.controls.DroidEventProxy$1.onTouch(DroidEventProxy.java:29)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.View.dispatchTouchEvent(View.java:7373)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.app.Activity.dispatchTouchEvent(Activity.java:2458)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.View.dispatchPointerEvent(View.java:7562)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3509)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3441)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4535)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4513)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4617)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.os.MessageQueue.nativePollOnce(Native Method)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.os.MessageQueue.next(MessageQueue.java:125)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.os.Looper.loop(Looper.java:124)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at android.app.ActivityThread.main(ActivityThread.java:4962)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at java.lang.reflect.Method.invokeNative(Native Method)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at java.lang.reflect.Method.invoke(Method.java:511)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)12-12 14:40:58.153: E/MessageQueue-JNI(22155): at dalvik.system.NativeStart.main(Native Method)12-12 14:40:58.153: W/dalvikvm(22155): threadid=1: thread exiting with uncaught exception (group=0x41482438)12-12 14:40:58.163: E/AndroidRuntime(22155): FATAL EXCEPTION: main12-12 14:40:58.163: E/AndroidRuntime(22155): java.lang.IllegalArgumentException: x must be < bitmap.width()12-12 14:40:58.163: E/AndroidRuntime(22155): at android.graphics.Bitmap.checkPixelAccess(Bitmap.java:1012)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.graphics.Bitmap.getPixel(Bitmap.java:967)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.DroidCanvasRenderer.getPixelAt(DroidCanvasRenderer.java:1203)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.RenderingContext.getPixelAt(RenderingContext.java:165)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.SeriesViewerView.getHitSeries(SeriesViewerView.java:678)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.SeriesViewerView$35.invoke(SeriesViewerView.java:1425)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.SeriesViewerView.onMouseOver(SeriesViewerView.java:1422)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.SeriesViewerView$16.invoke(SeriesViewerView.java:588)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.EventProxy.raiseOnMouseOver(EventProxy.java:299)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.DroidEventProxy.HandleTouch(DroidEventProxy.java:98)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.infragistics.controls.DroidEventProxy$1.onTouch(DroidEventProxy.java:29)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.View.dispatchTouchEvent(View.java:7373)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.app.Activity.dispatchTouchEvent(Activity.java:2458)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.View.dispatchPointerEvent(View.java:7562)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3509)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3441)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4535)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4513)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4617)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.os.MessageQueue.nativePollOnce(Native Method)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.os.MessageQueue.next(MessageQueue.java:125)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.os.Looper.loop(Looper.java:124)12-12 14:40:58.163: E/AndroidRuntime(22155): at android.app.ActivityThread.main(ActivityThread.java:4962)12-12 14:40:58.163: E/AndroidRuntime(22155): at java.lang.reflect.Method.invokeNative(Native Method)12-12 14:40:58.163: E/AndroidRuntime(22155): at java.lang.reflect.Method.invoke(Method.java:511)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)12-12 14:40:58.163: E/AndroidRuntime(22155): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)12-12 14:40:58.163: E/AndroidRuntime(22155): at dalvik.system.NativeStart.main(Native Method)
I was able to reproduce the issue so I have logged it as a development issue.
As a workaround, I would suggest manually handling the tooltip. On the DataChartView there is a setOnTouchListener() method that you can use to be notified when the user has touched the screen. In the touch listener, you can get the ItemToolTipLayer and manually set the cursor position. You can get the relative position of the pointer in relation to the chart viewport with the following code:
Rect viewportRect = chart.getViewportRect(); Point touchPoint = new Point(coords.x, coords.y); Point relTouchPoint = new Point(touchPoint.getX() - viewportRect.getX(), touchPoint.getY() - viewportRect.getY());