Zunächst müssen Sie die genaue Position des geklickt Imageview erhalten gibt sie an das Fragment: Position bekommen Sie diese verwenden können:
int[] location = {0,0};
mImageView.getLocationOnScreen(location);
und es zu einem Fragment übergeben Sie diese verwenden können:
Bundle bundle = new Bundle();
bundle.putInt("locationX",location[0]);
bundle.putInt("locationY",location[1]);
und es in Ihrem Fragment durch diese:
locationX = getArguments().getInt("locationX");
locationY = getArguments().getInt("locationY");
Hinweis: Um diese Position zu erhalten, benutzen Sie keine Methoden wie view.getTop(), view.getRight(), etc. Jetzt müssen Sie eine einfache Animation wie dies in Ihrem Fragment OnCreateView:
float factor = ((float) (Utils.getWidth(getActivity()))/((float) (pictureWidth)));
viewPager.getLayoutParams().height = pictureHeight;
viewPager.getLayoutParams().width = pictureWidth;
viewPager.setTranslationY(locationY);
viewPager.setTranslationX(locationX);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
viewPager.animate()
.translationY(Utils.getHeight(getActivity())/2 - pictureHeight/2)
.scaleX(factor)
.scaleY(factor)
.translationX(Utils.getWidth(getActivity())/2 - pictureWidth/2);}
Es unterstützt auch zu Pre-Lollipop.