嘿我有一个回收者视图和回收者视图的每个项目包含ImageView在FrameLayout和图像中拉伸以适合所有项目大小
我想在Recycler View Item图像上创建视差效果
当我向上和向下滚动时,我可以移动图像以显示隐藏的部分
像swift
中的Tutorial一样我在Recycler View滚动中做了什么
events_list.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
final DynamicImageView imageView = (DynamicImageView) recyclerView.findViewById(R.id.item_image);
if (imageView.getVisibility() == View.VISIBLE) {
if (dy > 0) {
Animation a = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) imageView.getLayoutParams();
params.topMargin = (int)(-50 * interpolatedTime);
imageView.setLayoutParams(params);
}
};
a.setDuration(100); // in ms
imageView.startAnimation(a);
} else if (dy < 0) {
Animation a = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) imageView.getLayoutParams();
params.topMargin = (int)(50 * interpolatedTime);
imageView.setLayoutParams(params);
}
};
a.setDuration(100); // in ms
imageView.startAnimation(a);
}
}
}
});
我知道这个代码不是最佳解决方案,它还需要检查所有可见项而不是第一个,但我的问题在于我改变了图像视图的边距我在项目和项目之间获得了一个空闲空间动画并不完美 有什么帮助吗?
答案 0 :(得分:-1)
我发现这个Library实现了我想要的东西
如何使用
<com.fmsirvent.ParallaxEverywhere.PEWImageView
android:id="@+id/grid_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
pew:block_parallax_x="true"
pew:reverse="reverseY"
android:scaleType="centerCrop"
/>