gpt4 book ai didi

android - android中的垂直3dCarousel动画?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:53 26 4
gpt4 key购买 nike

我如何在 android 中实现此动画,下面是我尝试修改它但没有如下图所示输出的链接。

enter image description here

http://horribile.blogspot.in/2011/11/android-3d-carousel.html

https://github.com/rameshkec85/Android-VerticalCarousel

我已经修改了下面的垂直动画功能,如下所示。

private void Calculate3DPosition(CarouselItem child, int diameter,
float angleOffset) {

angleOffset = angleOffset * (float) (Math.PI / 180.0f);
float x = 0.0f;
float y = (float) (diameter / 2 * Math.sin(angleOffset)) + diameter / 2 - child.getWidth() / 2;
float z = diameter / 2 * (1.0f - (float) Math.cos(angleOffset));

child.setItemX(x);
child.setItemZ(z);
child.setItemY(y);
}

结果,当我执行此操作时,动画无法正常工作,图像也无法正确显示在中心。

有没有人正确地实现了这个动画,请发给我。

提前致谢。

最佳答案

我已经实现了这个动画。

下面是最受欢迎的水平轮播动画的链接。

Androd 3d carousel animation

现在,这里是从上面的动画实现垂直轮播动画的变化。

轮播.java

  1. onFling :将 velocityX 更改为 velocityY

  2. onScroll : 改变 trackMotionScroll(/* -1 * /(int) distanceX); trackMotionScroll(/ -1 * */(int) distanceY);

  3. scrollIntoSlots : 将“if (angle != 0.0f)”更改为“if (Math.abs(angle) > 4)”

  4. 计算三维位置:

    angleOffset = angleOffset * (float) (Math.PI/180.0f);

        float x = (screenWidth - child.getWidth())/2;       
    float y = (float) (diameter / 2 * Math.sin(angleOffset)) + diameter / 2 - child.getWidth() / 2;
    float z = diameter*2 * (1.0f - (float) Math.cos(angleOffset));

    child.setItemX(x);
    child.setItemZ(z);
    child.setItemY(y-(screenHeight - child.getHeight())/2);

享受轮播动画。

关于android - android中的垂直3dCarousel动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com