diff --git a/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxImageView.java b/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxImageView.java index 861afab..4ecddf8 100644 --- a/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxImageView.java +++ b/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxImageView.java @@ -23,7 +23,6 @@ public class ParallaxImageView extends ImageView { private boolean needToTranslate = true; private ParallaxImageListener listener; - private int rowHeight = -1; private int rowYPos = -1; private int recyclerViewHeight = -1; private int recyclerViewYPos = -1; @@ -151,24 +150,24 @@ private boolean getValues() { if (values == null) return false; - this.rowHeight = values[0]; - this.rowYPos = values[1]; - this.recyclerViewHeight = values[2]; - this.recyclerViewYPos = values[3]; + this.rowYPos = values[0]; + this.recyclerViewHeight = values[1]; + this.recyclerViewYPos = values[2]; return true; } private void calculateAndMove() { float distanceFromCenter = (recyclerViewYPos + recyclerViewHeight) / 2 - rowYPos; - int imageHeight = getDrawable().getIntrinsicHeight(); + int drawableHeight = getDrawable().getIntrinsicHeight(); + int imageViewHeight = getMeasuredHeight(); float scale = 1; if (shouldCenterCrop) { scale = recomputeImageMatrix(); - imageHeight *= scale; + drawableHeight *= scale; } - float difference = imageHeight - rowHeight; + float difference = drawableHeight - imageViewHeight; float move = (distanceFromCenter / recyclerViewHeight) * difference * parallaxRatio; moveTo((move / 2) - (difference / 2), scale); diff --git a/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxRecyclerView.java b/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxRecyclerView.java index d0984ca..390b887 100644 --- a/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxRecyclerView.java +++ b/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxRecyclerView.java @@ -44,7 +44,10 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); for (int i = 0; i < recyclerView.getChildCount(); i++) { - ((ParallaxViewHolder) recyclerView.getChildViewHolder(recyclerView.getChildAt(i))).animateImage(); + ViewHolder viewHolder = recyclerView.getChildViewHolder(recyclerView.getChildAt(i)); + if (viewHolder instanceof ParallaxViewHolder) { + ((ParallaxViewHolder) viewHolder).animateImage(); + } } if (scrollListener != null) diff --git a/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxViewHolder.java b/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxViewHolder.java index 371fec9..6cd5a4c 100644 --- a/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxViewHolder.java +++ b/library/app/src/main/java/com/yayandroid/parallaxrecyclerview/ParallaxViewHolder.java @@ -31,7 +31,7 @@ public int[] requireValuesForTranslate() { int[] recyclerPosition = new int[2]; ((RecyclerView) itemView.getParent()).getLocationOnScreen(recyclerPosition); - return new int[]{itemView.getMeasuredHeight(), itemPosition[1], ((RecyclerView) itemView.getParent()).getMeasuredHeight(), recyclerPosition[1]}; + return new int[]{itemPosition[1], ((RecyclerView) itemView.getParent()).getMeasuredHeight(), recyclerPosition[1]}; } }