当前位置: 首页 > 知识库问答 >
问题:

Android卡片碎片动画

邵崇凛
2023-03-14

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

进入和退出并不难,但是预显示下一张和上一张卡片的屏幕以及无缝切换到下一张卡片超出了我的知识范围。如果有人制作过类似的动画,请给我一些指点。

编辑

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

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

共有2个答案

万俟光临
2023-03-14

对于提出此问题并寻求类似要求的人:

正如Anoop所建议的那样,官方文档很棒。只需实现 viewPager.PagerTransform 并将该类提供给您的 viewPager。此外,transformPage(实现的函数)在动画过渡中非常重要。

下一部分,是显示下一个和前一个片段的角落。这可以通过xml片段来实现。参考:带有突出孩子的Android提示浏览器

希望这有助于某人创建交互式应用程序

更新

Anoop分享的这篇文章使这种转变变得轻而易举。干杯!

阎丰羽
2023-03-14

您可以使用PageTransformer自定义片段之间的转换动画。

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

正式文件。

检查此项和此项以显示近一项的边界。

 类似资料:
  • 我可以使用一个片段作为一个活动吗?我已经创建了一个片段,但我希望它有像活动一样的功能,所以我使用片段扩展碎片活动。然而,我有一个带有碎片的导航抽屉。当我更改为“扩展碎片活动”时,我的代码有问题?请给我指路。

  • 由于不推荐使用TabActivity,我需要找到一种方法来使用片段。在我知道它如何工作之前,我已经使用了碎片,但我需要一个指南来创建我的标签主机与碎片活动。我在互联网上找到了几个例子,它们都是关于将片段放入标签的容器中的。

  • 对不起,我的英语不好。我如何并排显示片段,这样当用户点击片段a中的一个按钮时,片段B就显示出来了(80%)?

  • 我是Android新手。我想建立一个标签格式的应用程序。我找到了许多使用了活动的文档。在许多情况下,还使用了碎片活动。我不确定从哪一个开始更好。请建议我是否应该使用或以选项卡格式开始开发?

  • 本文向大家介绍ANTLR 碎片,包括了ANTLR 碎片的使用技巧和注意事项,需要的朋友参考一下 示例 片段是lexer规则的可重用部分,它们本身无法匹配-需要从lexer规则中引用它们。            

  • 当我在选项卡之间切换并将片段附加到选项卡视图时,我面临着重叠片段的问题,下面是我的代码,请帮助