Skip to content

Commit

Permalink
Change amintation behavior to be more similar to "Hangouts" one
Browse files Browse the repository at this point in the history
  • Loading branch information
vgrachev committed Mar 15, 2016
1 parent 08d3e1c commit c7d3cb4
Showing 1 changed file with 29 additions and 12 deletions.
41 changes: 29 additions & 12 deletions app/src/main/java/saulmm/myapplication/AvatarImageBehavior.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public class AvatarImageBehavior extends CoordinatorLayout.Behavior<CircleImageV
private int mFinalYPosition;
private int mStartHeight;
private int mFinalXPosition;
private float mChangeBehaviorPoint;

public AvatarImageBehavior(Context context, AttributeSet attrs) {
mContext = context;
Expand Down Expand Up @@ -74,23 +75,35 @@ public boolean onDependentViewChanged(CoordinatorLayout parent, CircleImageView
final int maxScrollDistance = (int) (mStartToolbarPosition);
float expandedPercentageFactor = dependency.getY() / maxScrollDistance;

float distanceYToSubtract = ((mStartYPosition - mFinalYPosition)
* (1f - expandedPercentageFactor)) + (child.getHeight()/2);
if (expandedPercentageFactor < mChangeBehaviorPoint) {
float heightFactor = (mChangeBehaviorPoint - expandedPercentageFactor) / mChangeBehaviorPoint;

float distanceXToSubtract = ((mStartXPosition - mFinalXPosition)
* (1f - expandedPercentageFactor)) + (child.getWidth()/2);
float distanceXToSubtract = ((mStartXPosition - mFinalXPosition)
* heightFactor) + (child.getHeight()/2);
float distanceYToSubtract = ((mStartYPosition - mFinalYPosition)
* (1f - expandedPercentageFactor)) + (child.getHeight()/2);

float heightToSubtract = ((mStartHeight - mCustomFinalHeight) * (1f - expandedPercentageFactor));
child.setX(mStartXPosition - distanceXToSubtract);
child.setY(mStartYPosition - distanceYToSubtract);

child.setY(mStartYPosition - distanceYToSubtract);
child.setX(mStartXPosition - distanceXToSubtract);
float heightToSubtract = ((mStartHeight - mCustomFinalHeight) * heightFactor);

int proportionalAvatarSize = (int) (mAvatarMaxSize * (expandedPercentageFactor));
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams();
lp.width = (int) (mStartHeight - heightToSubtract);
lp.height = (int) (mStartHeight - heightToSubtract);
child.setLayoutParams(lp);
} else {
float distanceYToSubtract = ((mStartYPosition - mFinalYPosition)
* (1f - expandedPercentageFactor)) + (mStartHeight/2);

CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams();
lp.width = (int) (mStartHeight - heightToSubtract);
lp.height = (int) (mStartHeight - heightToSubtract);
child.setLayoutParams(lp);
child.setX(mStartXPosition - child.getWidth()/2);
child.setY(mStartYPosition - distanceYToSubtract);

CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams();
lp.width = (int) (mStartHeight);
lp.height = (int) (mStartHeight);
child.setLayoutParams(lp);
}
return true;
}

Expand All @@ -112,6 +125,10 @@ private void maybeInitProperties(CircleImageView child, View dependency) {

if (mStartToolbarPosition == 0)
mStartToolbarPosition = dependency.getY();

if (mChangeBehaviorPoint == 0) {
mChangeBehaviorPoint = (child.getHeight() - mCustomFinalHeight) / (2f * (mStartYPosition - mFinalYPosition));
}
}

public int getStatusBarHeight() {
Expand Down

0 comments on commit c7d3cb4

Please sign in to comment.