如何实现Facebook应用程序,如图像放大/缩小?

时间:2014-11-17 05:54:56

标签: android facebook android-layout android-viewpager android-animation

我已经尝试了很多来实现这种效果。 this link

我已在list-view中成功实现了view-pager。但现在我想对像Facebook应用程序一样的图像点击应用放大缩小效果。

是否有任何库或技术可以实现这种效果?

2 个答案:

答案 0 :(得分:2)

您会惊讶地看到默认的Android文档提供了完整的指南,并提供了示例,点击hereHere

答案 1 :(得分:0)

您可以使用以下代码。

ViewPager imageGalleryPager = (ViewPager) productImageView.findViewById((R.id.pager));
imageGalleryPager.setPageTransformer(true, new ZoomOutPageTransformer());


public class ZoomOutPageTransformer implements PageTransformer {
private static final float MIN_SCALE = 0.85f;

private static final float MIN_ALPHA = 0.5f;

@Override
public void transformPage(View view,
        float position) {
    int pageWidth = view.getWidth();
    int pageHeight = view.getHeight();

    if (position < -1) { // [-Infinity,-1)
        // This page is way off-screen to the left.
        view.setAlpha(0);

    } else if (position <= 1) { // [-1,1]
        // Modify the default slide transition to shrink the page as well
        float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
        float vertMargin = pageHeight * (1 - scaleFactor) / 2;
        float horzMargin = pageWidth * (1 - scaleFactor) / 2;
        if (position < 0) {
            view.setTranslationX(horzMargin - vertMargin / 2);
        } else {
            view.setTranslationX(-horzMargin + vertMargin / 2);
        }

        // Scale the page down (between MIN_SCALE and 1)
        view.setScaleX(scaleFactor);
        view.setScaleY(scaleFactor);

        // Fade the page relative to its size.
        view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));

    } else { // (1,+Infinity]
        // This page is way off-screen to the right.
        view.setAlpha(0);
    }
}
}

Reference