-
-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IllegalArgumentException (pointerIndex out of range) while using many fingers to zoom in and out #31
Comments
Me too facing this issue...Any update on it..like how to fix this..? |
Same crash. It happened when i try to scroll to the edge of image when image are zoomed in |
same for me... |
This happens even when you zoom out a lot. |
+1 |
LGE Nexus 4 showed the same issue. Solved with this until a better solution comes up. |
I got crash like you too..... |
I have found solution for this problem, |
It's the android ViewPager's bug My simple's method to fix this bug: Examples:
|
azibug's solution is working for me. Thx! |
@azibug your solution is can work,thanks! |
Great, azibug!!!! it work for me, many thanks! |
@chrisbanes Isn't this bug already fixed with the HackyViewPager in the sample? |
I have the similar problem, using the HackyViewPager, in a Android 2.3.6 device... the problem persists... |
@felipepx Are you sure you use right XML definition? Can you paste a stacktrace in this thread? What version of Support v4 library? |
@smarek, I saved the log yesterday but accidentally I have deleted it from my desktop. The log was similar to the first post. I'm using the newest version of the library and also using the HackyPagerView. I have tested in my cousin's device, my devices have Android 4.2.2+ :( private ViewPager mViewPager;
in the onCreate Method:
mViewPager = (HackyViewPager) this.findViewById(R.id.hackyViewPager1);
ReaderAdapter rAdapter = new ReaderAdapter(imagesPaths);
mViewPager.setAdapter(rAdapter);
mViewPager.setOnPageChangeListener(this); My ReaderAdapter: static class ReaderAdapter extends PagerAdapter {
String[] images;
public ReaderAdapter(String[] images){
this.images = images;
}
@Override
public int getCount() {
return images.length;
}
@Override
public View instantiateItem(ViewGroup container, int position) {
PhotoView photoView = new PhotoView(container.getContext());
photoView.setImageBitmap(returnBitmap(images[position]));
container.setFocusableInTouchMode(true);
container.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
container.setBackgroundColor(Color.BLACK);
return photoView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public Bitmap returnBitmap(String filepath){
File imagefile = new File(filepath);
FileInputStream fis = null;
try {
fis = new FileInputStream(imagefile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bm = BitmapFactory.decodeStream(fis);
return bm;
}
} My HackyViewPager: public class HackyViewPager extends ViewPager {
public HackyViewPager(Context context) {
super(context);
}
public HackyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
} And my layout XML file: <?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 Jake Wharton
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<uk.co.senab.photoview.HackyViewPager
android:id="@+id/hackyViewPager1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000" >
</uk.co.senab.photoview.HackyViewPager>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:background="#aaffffff"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:gravity="center" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="center"
android:text="@string/reader_page"
android:textSize="12dp"
android:textStyle="bold" />
<EditText
android:id="@+id/currentPageText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="2dp"
android:layout_toRightOf="@+id/textView1"
android:ems="3"
android:gravity="center"
android:inputType="number"
android:textColor="#1c8fdc"
android:textSize="12dp"
android:textStyle="bold" >
</EditText>
<TextView
android:id="@+id/pageText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/currentPageText"
android:gravity="center"
android:text="TextView"
android:textSize="12dp"
android:textStyle="bold" />
</RelativeLayout>
</RelativeLayout> This are working perfectly on my Android 4.2.2+ devices.... the crash only occurs if I'm testing on the Android 2.3.6 device... |
@felipepx please obtain the stacktrace, as it is important to me to know, whether your issue is this one or not. |
I'm using the latest release 1.2.1. I'm using only the Dev Version of HackyViewPager |
@felipepx Try please dev version of PhotoView with HackyViewPager from sample in dev and give me know. Thanks |
@smarek So far no error occurred using the dev version.... Thanks 👍 |
My problem is also resolved with azibug's method, 3ku~~~~ |
Thanks Azibug, it works fine! |
is Dev version = 1.3-SNAPSHOT? |
@azibug nice solution. Works perfect. Thx |
an easier solution than @azibug that worked for me is to override dispatchTouchEvent(MotionEvent ev) like this in your activity class that contains the view pager. But I am not sure if its the correct way.
|
@UkTheScientist solution doesn't work for me with com.android.support:support-v4:26.1.0 and API 26. |
@azibug Thanks, it is working perfectly. |
非常感谢,完美的解决了这个问题 Thanks a lot, the perfect solved the problem |
Summary: Catch `IllegalArgumentException: ReactViewPager.onTouchEvent` and ignore it (but log something) to work around this known bug in the Android SDK per Baseflow/PhotoView#31 (comment). Note that `onInterceptTouchEvent()` is already doing the same thing. Reviewed By: yungsters Differential Revision: D13550425 fbshipit-source-id: 9fa3a7a0ca0cd95aafa3bcae6a59e0d1e690b564
Summary: Catch `IllegalArgumentException: ReactViewPager.onTouchEvent` and ignore it (but log something) to work around this known bug in the Android SDK per Baseflow/PhotoView#31 (comment). Note that `onInterceptTouchEvent()` is already doing the same thing. Reviewed By: yungsters Differential Revision: D13550425 fbshipit-source-id: 9fa3a7a0ca0cd95aafa3bcae6a59e0d1e690b564
@azibug how do i fix it for PhotoView, i can extend ViewPager and ignore the exception but that won't change the implementation of PhotoView. Photoview makes use of default ViewPager, how am i going to change that to get it working ? |
…nd out This is a fix to a android framework bug, which occurs when zooming on an image inside a ViewPager. Related to this bug: alexrainman#563 (comment) Known bugs: Baseflow/PhotoView#31 https://stackoverflow.com/questions/26315781/illegalargumentexception-pointerindex-out-of-range-when-i-pinchzoom-the-image
Summary: Catch `IllegalArgumentException: ReactViewPager.onTouchEvent` and ignore it (but log something) to work around this known bug in the Android SDK per Baseflow/PhotoView#31 (comment). Note that `onInterceptTouchEvent()` is already doing the same thing. Reviewed By: yungsters Differential Revision: D13550425 fbshipit-source-id: 9fa3a7a0ca0cd95aafa3bcae6a59e0d1e690b564
(Android 4.2.1 - Samsung Galaxy Nexus)
java.lang.IllegalArgumentException: pointerIndex out of range
at android.view.MotionEvent.nativeGetAxisValue(Native Method)
at android.view.MotionEvent.getX(MotionEvent.java:1981)
at android.support.v4.view.MotionEventCompatEclair.getX(MotionEventCompatEclair.java:32)
at android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl.getX(MotionEventCompat.java:86)
at android.support.v4.view.MotionEventCompat.getX(MotionEventCompat.java:184)
at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:1339)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1817)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
at android.view.View.dispatchPointerEvent(View.java:7419)
at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:171)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4342)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4382)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:530)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5191)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
at dalvik.system.NativeStart.main(Native Method)
The text was updated successfully, but these errors were encountered: