安卓卡片 fragment 动画

标签 android animation android-fragments

这似乎是一个具有挑战性的动画,但我觉得这可以很容易地完成。我正在尝试实现如下 fragment 之间的动画(参见第二和第三象限)

enter image description here

进入和退出并不困难,但预显示下一张和上一张卡片的屏幕以及无缝过渡到下一张卡片超出了我的知识范围。有没有人做过类似的动画,请指点一下。

编辑

点击时 Android 转换的官方文档,即当用户点击页面时缩小以显示上一页和上一页,然后滑动将其移动到下一页。我的要求是将页面保持在缩小级别并在单击按钮时进行转换:

enter image description here

问题: View 将如何默认缩放到 x 缩放级别以显示上一页下一页部分和点击时的过渡。

最佳答案

您可以使用 PageTransformer 自定义 fragment 之间的过渡动​​画.

ZoomOutPageTransformer

import android.support.v4.view.ViewPager;
import android.view.View;

public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
    private static final float MIN_SCALE = 0.85f;
    private static final float MIN_ALPHA = 0.5f;

    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);
        }
    }
}

用法

 viewPager.setPageTransformer(true, new ZoomOutPageTransformer());

官方documentation .

结帐 thisthis用于显示附近的边界。

关于安卓卡片 fragment 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33516646/

相关文章:

java - 在Android中使用Bundle将ArrayList类对象传递给另一个 fragment

android - support-library-v7 上的 ClassCastException,使用版本 21

android - 在不使用 ContentProvider 的情况下通知游标中的数据更改

android - 在 Android App 中集成 Google Drive 时如何获取 gmail id 或帐户名

android - Google 跟踪代码管理器空容器

html - 使用 CSS 在悬停时将圆形加按钮设置为药丸形状

ios - 如何为 UITableViewCell 实现摇动动画

android - SearchView 中的自定义光标颜色

android - 无论布局容器如何,动画 View

android - 几乎填满整个屏幕的 map fragment