When exiting an activity, the following error occurs:
The ImageView's ScaleType has been changed since attaching a PhotoViewAttacher. You should call setScaleType on the PhotoViewAttacher instead of on the ImageView
I don't use scaleType in the xml or Java code.
why this happened to me?
Can you please post some code in here so that I can see how and why this is happening?
I'm using PhotoView
with Picasso
picasso.load(imageUrl).noPlaceholder().fit().rxInto(trans_imageview).subscribe({
progressBar.visibility = View.GONE
val photoView = PhotoViewAttacher(trans_imageview)
photoView.update()
}, {toast("Error : ${it.message}")})
<ImageView
android:id="@+id/trans_imageview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:transitionName="image" />
if press back button while touching photoView then ,
java.lang.IllegalStateException: The ImageView's ScaleType has been changed since attaching a PhotoViewAttacher. You should call setScaleType on the PhotoViewAttacher instead of on the ImageView
at uk.co.senab.photoview.PhotoViewAttacher.checkImageViewScaleType(PhotoViewAttacher.java:736)
at uk.co.senab.photoview.PhotoViewAttacher.setImageViewMatrix(PhotoViewAttacher.java:868)
at uk.co.senab.photoview.PhotoViewAttacher.checkAndDisplayMatrix(PhotoViewAttacher.java:723)
at uk.co.senab.photoview.PhotoViewAttacher.onDrag(PhotoViewAttacher.java:385)
at uk.co.senab.photoview.gestures.CupcakeGestureDetector.onTouchEvent(CupcakeGestureDetector.java:96)
at uk.co.senab.photoview.gestures.EclairGestureDetector.onTouchEvent(EclairGestureDetector.java:85)
at uk.co.senab.photoview.gestures.FroyoGestureDetector.onTouchEvent(FroyoGestureDetector.java:66)
at uk.co.senab.photoview.PhotoViewAttacher.onTouch(PhotoViewAttacher.java:523)
at android.view.View.dispatchTouchEvent(View.java:9291)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2445)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent_aroundBody0(PhoneWindow.java:1756)
at com.android.internal.policy.PhoneWindow$AjcClosure1.run(PhoneWindow.java:1)
at android.view.PhoneWindowAO.ajc$around$android_view_PhoneWindowAO$2$99ce526bproceed(PhoneWindowAO.aj:113)
at android.view.PhoneWindowAO.ajc$around$android_view_PhoneWindowAO$2$99ce526b(PhoneWindowAO.aj:117)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1756)
at android.app.Activity.dispatchTouchEvent(Activity.java:2800)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:63)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2406)
at android.view.View.dispatchPointerEvent(View.java:9517)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4309)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4175)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3682)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3735)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3709)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3682)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3735)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3828)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3709)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3885)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3682)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3735)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3701)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3709
shared elements transitions??
I 'm using shared elements transition
Override finishAfterTransition method and call mAttacher.cleanup().
perfect! Thanks @bediy
Most helpful comment
Override finishAfterTransition method and call mAttacher.cleanup().