视差对回收站视图中的每个项目都有影响吗?

红色的_

我正在尝试使用Parallax并遇到一些奇怪的错误,想知道是否有人可以向其中添加一些输入。我见过的唯一可以有效实现视差的应用程序是soundcloud。这非常微妙,但是每个项目都有图像背景,并且在您滚动时具有视差效果。

我创建了一个自定义的RecyclerView来处理此问题,这是到目前为止的内容:

public class ParallaxScrollListener extends RecyclerView.OnScrollListener {

private float scrollSpeed = 0.5f;

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();

    int firstVisible = layoutManager.findFirstVisibleItemPosition();
    int visibleCount = Math.abs(firstVisible - layoutManager.findLastVisibleItemPosition());

    Matrix imageMatrix;
    float tempSpeed = -100;

    if (dy > 0) {
        tempSpeed = scrollSpeed;
    } else if (dy < 0) {
        tempSpeed = -scrollSpeed;
    }

    for (int i = firstVisible; i < (firstVisible + visibleCount); i++) {
        ImageView imageView = ((MyClass.MyAdapter.MyViewHolder) recyclerView.getLayoutManager().findViewByPosition(i).getTag()).image;
        if (imageView != null) {
            imageMatrix = imageView.getImageMatrix();
            imageMatrix.postTranslate(0, tempSpeed);
            imageView.setImageMatrix(imageMatrix);
            imageView.invalidate();
        }
    }
}

在我的RecyclerView适配器中,onBindView我还有以下内容:

 Matrix matrix = viewHolder.image.getImageMatrix();
 matrix.postTranslate(0, 0);
 viewHolder.image.setImageMatrix(matrix);
 viewHolder.itemView.setTag(viewHolder);

最后,在onViewRecycled方法中,我具有以下内容:

@Override
    public void onViewRecycled(MyViewHolder viewHolder) {
        super.onViewRecycled(viewHolder);
        if (viewHolder.image != null) {
            viewHolder.image.setScaleType(ImageView.ScaleType.MATRIX);
            Matrix matrix = viewHolder.image.getImageMatrix();
            // this is set manually to show to the center
            matrix.reset();
            viewHolder.image.setImageMatrix(matrix);
        }
}

我一直在Github上使用此代码来了解这个想法

因此视差有效,但是RecyclerView中的视图也会移动。我在图像下方有一个CardView,它移动了,从而在每个项目之间形成了很大的空隙。滚动是造成这种情况的原因,上下滚动越多,间隙越大,并且随着视差将图像移出边界,图像变得更小。

我试过弄乱了诸如scrollSpeed之类的数字,OnScrollListener但是虽然它减少了错误,但同时也减少了视差。

有谁知道如何在我的每个项目上实现无错误的视差效果RecyclerView我觉得我对此有所了解,但是它仍然非常有问题,我不知道下一步是什么。

附言:我尝试查看第三方库,但是它们似乎都只使用标头视差,例如CoordinatorLayout,我还没有发现仅在列表中的每个项目上都可以做到这一点。

我希望这个问题能得到很好的讨论,即使我没有解决我的问题,因为Parallax似乎在Android中使用不足,而且几乎没有解决之道。

感谢您的时间,感谢您的帮助。

红色的_

我设法使Parallax使用此库:https : //github.com/yayaa/ParallaxRecyclerView

对于任何亲自进行此操作的人来说,玩游戏并查看其工作原理仍然是一件好事。

与我的代码相似的概念,但实际上有效!哈哈。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我从回收站视图中删除项目时,回收站视图没有刷新?

来自分类Dev

我们可以在回收站视图中调整项目高度吗?

来自分类Dev

限制要在回收站视图中显示的项目

来自分类Dev

项目未显示在回收站视图中

来自分类Dev

回收站视图无法选择所有项目

来自分类Dev

通过单击回收站视图中的项目更新活动视图

来自分类Dev

计算回收站视图中项目列表中项目的总价

来自分类Dev

如何在不删除回收站视图中的位置的情况下删除项目?

来自分类Dev

回收站视图中的无线电组

来自分类Dev

如何在回收站视图中更改字体?

来自分类Dev

如何在Android的回收站视图中运行for循环?

来自分类Dev

Android:在回收站视图中设置文本

来自分类Dev

滑动以在动态更新的回收站视图中关闭

来自分类Dev

回收站视图中的单选单选按钮(重复)

来自分类Dev

当回收站视图中的数据项增加时,回收站视图数据将位于文本视图下

来自分类Dev

回收站视图错误

来自分类Dev

如何使用RxJava处理回收站视图的项目单击

来自分类Dev

通过单击另一个回收站视图中的按钮刷新回收站视图

来自分类Dev

globalCompositeOperation 对所有层都有影响吗?

来自分类Dev

ObservableCollection 更新在自定义列表视图中没有影响吗?

来自分类Dev

回收站视图不刷新

来自分类Dev

回收站视图滚动搞砸了

来自分类Dev

无法设置回收站视图

来自分类Dev

回收站视图位置比较

来自分类Dev

回收站视图不刷新

来自分类Dev

回收站视图(Xamarin Android)

来自分类Dev

专注于回收站查看项目

来自分类Dev

在回收站视图中仅选择一个单选按钮

来自分类Dev

第一次在回收站视图中如何查找创建的物料?

Related 相关文章

热门标签

归档