Based on Oleg's answer, the code below is used for my application.
My addition is to check the returned beginFakeDrag() result inside _invalidatePageTransformer .
I call sendInvalidatePageTransformer() from the inside
onConfigurationChanged() when changing orientationinside LoaderCallback<Cursor> methods in my fragment
private Handler handler = new Handler() { public void handleMessage(Message msg) { switch(msg.what) { case 0: _invalidatePageTransformer(); break; } } }; private void _invalidatePageTransformer() { //no need to invalidate if we have no adapter or no items if (this.getAdapter() != null && this.getAdapter().getCount() > 0) { //import check here, only fakeDrag if "beginFakeDrag()" returns true if (this.beginFakeDrag()) { this.fakeDragBy(0f); this.endFakeDrag(); } } } public void sendInvalidatePageTransformer() { this.handler.sendEmptyMessage(0); }
EDIT: Note. This code is inside a custom subclass of ViewPager
source share