首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用horizantalScrollView滚动时更改中心项目的大小

使用horizantalScrollView滚动时更改中心项目的大小
EN

Stack Overflow用户
提问于 2017-03-08 19:21:31
回答 1查看 359关注 0票数 0

如何在水平滚动视图中滚动时增加中心项目的大小?从服务器动态获取图像,当用户滚动时,中心项目大小增加

无法实现上述目标。使用其他视图而不是水平滚动视图来实现此功能的任何提示。

EN

回答 1

Stack Overflow用户

发布于 2017-03-08 19:33:57

你可以通过使用这个库来获得类似的结果

https://github.com/Azoft/CarouselLayoutManager

试着根据你的屏幕尺寸给出可见的项目,如下所示

代码语言:javascript
复制
 layoutManager.setMaxVisibleItems(1);

您可以根据需要更改以下监听程序,默认情况下,它们提供的监听程序为com.azoft.carousellayoutmanager.CenterScrollListener.

代码语言:javascript
复制
layoutManager.setPostLayoutListener(new CarouselLayoutManager.PostLayoutListener() {

        @Override
        public ItemTransformation transformChild(@NonNull View child, float itemPositionToCenterDiff, int orientation) {
            final float scale = (float) (1.5f * (1.5f * -StrictMath.atan(Math.abs(itemPositionToCenterDiff) + 1.0) / Math.PI + 1));
            final float translateY;
            final float translateX;
            if (CarouselLayoutManager.VERTICAL == orientation) {
                final float translateYGeneral = child.getMeasuredHeight() * (1 - scale) / 1f;
                translateY = Math.signum(itemPositionToCenterDiff) * translateYGeneral;
                translateX = 0;
            } else {
                final float translateXGeneral = child.getMeasuredWidth() * (0.8f - scale) / 1.5f;
                translateX = Math.signum(itemPositionToCenterDiff) * translateXGeneral;
                translateY = 0;
            }

            return new ItemTransformation(scale, scale, translateX, translateY);
        }
    });

希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42669938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档