作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我如何在 android 中实现此动画,下面是我尝试修改它但没有如下图所示输出的链接。
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);
}
结果,当我执行此操作时,动画无法正常工作,图像也无法正确显示在中心。
有没有人正确地实现了这个动画,请发给我。
提前致谢。
最佳答案
我已经实现了这个动画。
下面是最受欢迎的水平轮播动画的链接。
现在,这里是从上面的动画实现垂直轮播动画的变化。
轮播.java
onFling :将 velocityX 更改为 velocityY
onScroll : 改变 trackMotionScroll(/* -1 * /(int) distanceX); 到trackMotionScroll(/ -1 * */(int) distanceY);
scrollIntoSlots : 将“if (angle != 0.0f)”更改为“if (Math.abs(angle) > 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/
我是一名优秀的程序员,十分优秀!