Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reverse master back into dev #104

Merged
merged 24 commits into from
Jul 11, 2017
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
ui updates
  • Loading branch information
teddywilson committed Jul 10, 2017
commit 61ddd08262f55c55c2593e43f3832467f0f63d0c
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.GridLayout;
import android.widget.TextView;

import com.willowtreeapps.spurceexampleapp.R;

Expand Down Expand Up @@ -61,9 +63,12 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, @Nullable
final int CHILD_VIEW_COUNT = parent.getColumnCount() * parent.getRowCount();

for (int i = 0; i < CHILD_VIEW_COUNT; i++) {
View childView = new View(getContext());
TextView childView = new TextView(getContext());
childView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.spruceViewColor));
childView.setAlpha(0F);
childView.setTextColor(ContextCompat.getColor(getContext(), R.color.square_background));
childView.setGravity(Gravity.CENTER);
childView.setText(""+i);
parent.addView(childView);
children.add(childView);
}
Expand Down
1 change: 1 addition & 0 deletions lib/src/main/java/com/willowtreeapps/spruce/Spruce.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ private AnimatorSet getAnimatorSetForSort(Animator[] animators, SortFunction sor
children.add(viewGroup.getChildAt(i));
}

sortFunction.sortChildren(viewGroup, children);
childrenWithTime = sortFunction.getViewListWithTimeOffsets(viewGroup, children);
animatorSet = new AnimatorSet();
List<Animator> animatorsList = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,6 @@ public ContinuousSort(long interObjectDelay, boolean reversed, Position position
@Override
public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);

Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftDistance = getDistanceBetweenPoints(Utils.viewToPoint(left), comparisonPoint);
double rightDistance = getDistanceBetweenPoints(Utils.viewToPoint(right), comparisonPoint);
if (leftDistance > rightDistance && leftDistance > maxDistance) {
maxDistance = leftDistance;
}
return Double.compare(leftDistance, rightDistance);
}
});

List<SpruceTimedView> timedViews = new ArrayList<>();
for (View view : children) {
double normalizedDistance;
Expand All @@ -83,4 +70,21 @@ public int compare(View left, View right) {

return timedViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);

Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftDistance = getDistanceBetweenPoints(Utils.viewToPoint(left), comparisonPoint);
double rightDistance = getDistanceBetweenPoints(Utils.viewToPoint(right), comparisonPoint);
if (leftDistance > rightDistance && leftDistance > maxDistance) {
maxDistance = leftDistance;
}
return Double.compare(leftDistance, rightDistance);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,6 @@ public ContinuousWeightedSort(long interObjectDelay, boolean reversed, Position
public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);

// non-sort to calculate max horizontal/vertical values
Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftHorizontalDistance = Utils.horizontalDistance(comparisonPoint, Utils.viewToPoint(left)) * horizontalWeight;
double rightHorizontalDistance = Utils.horizontalDistance(comparisonPoint, Utils.viewToPoint(right)) * horizontalWeight;
double leftVerticalDistance = Utils.verticalDistance(comparisonPoint, Utils.viewToPoint(left)) * verticalWeight;
double rightVerticalDistance = Utils.verticalDistance(comparisonPoint, Utils.viewToPoint(right)) * verticalWeight;

maxHorizontalDistance = calculateMaxDistance(leftHorizontalDistance, rightHorizontalDistance, maxHorizontalDistance);
maxVerticalDistance = calculateMaxDistance(leftVerticalDistance, rightVerticalDistance, maxVerticalDistance);

return 0;
}
});

List<SpruceTimedView> timedViews = new ArrayList<>();
long maxTimeOffset = 1;
for (View view : children) {
Expand All @@ -115,6 +99,27 @@ public int compare(View left, View right) {
return timedViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);

// non-sort to calculate max horizontal/vertical values
Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftHorizontalDistance = Utils.horizontalDistance(comparisonPoint, Utils.viewToPoint(left)) * horizontalWeight;
double rightHorizontalDistance = Utils.horizontalDistance(comparisonPoint, Utils.viewToPoint(right)) * horizontalWeight;
double leftVerticalDistance = Utils.verticalDistance(comparisonPoint, Utils.viewToPoint(left)) * verticalWeight;
double rightVerticalDistance = Utils.verticalDistance(comparisonPoint, Utils.viewToPoint(right)) * verticalWeight;

maxHorizontalDistance = calculateMaxDistance(leftHorizontalDistance, rightHorizontalDistance, maxHorizontalDistance);
maxVerticalDistance = calculateMaxDistance(leftVerticalDistance, rightVerticalDistance, maxVerticalDistance);

return 0;
}
});
}

@VisibleForTesting
double calculateMaxDistance(double leftHorizontalDistance, double rightHorizontalDistance, double maximum) {
if (leftHorizontalDistance > rightHorizontalDistance && leftHorizontalDistance > maximum) {
Expand Down
28 changes: 16 additions & 12 deletions lib/src/main/java/com/willowtreeapps/spruce/sort/CorneredSort.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,6 @@ public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<V
List<SpruceTimedView> timedViews = new ArrayList<>();
long currentTimeOffset = 0;

Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftDistance = Math.abs(comparisonPoint.x - left.getX()) + Math.abs(comparisonPoint.y - left.getY());
double rightDistance = Math.abs(comparisonPoint.x - right.getX()) + Math.abs(comparisonPoint.y - right.getY());
if (reversed) {
return Double.compare(rightDistance, leftDistance);
}
return Double.compare(leftDistance, rightDistance);
}
});

double lastDistance = 0;
for (View view : children) {
double viewDistance = getDistanceBetweenPoints(Utils.viewToPoint(view), comparisonPoint);
Expand All @@ -92,6 +80,22 @@ public int compare(View left, View right) {
return timedViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);
Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftDistance = Math.abs(comparisonPoint.x - left.getX()) + Math.abs(comparisonPoint.y - left.getY());
double rightDistance = Math.abs(comparisonPoint.x - right.getX()) + Math.abs(comparisonPoint.y - right.getY());
if (reversed) {
return Double.compare(rightDistance, leftDistance);
}
return Double.compare(leftDistance, rightDistance);
}
});
}

@Override
public PointF getDistancePoint(ViewGroup parent, List<View> children) {
PointF distancePoint;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,8 @@ public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<V
return childTimedViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
// Do nothing
}
}
29 changes: 16 additions & 13 deletions lib/src/main/java/com/willowtreeapps/spruce/sort/DistancedSort.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,6 @@ class DistancedSort extends SortFunction {
@Override
public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);

Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftDistance = getDistanceBetweenPoints(Utils.viewToPoint(left), comparisonPoint);
double rightDistance = getDistanceBetweenPoints(Utils.viewToPoint(right), comparisonPoint);
if (reversed) {
return Double.compare(rightDistance, leftDistance);
}
return Double.compare(leftDistance, rightDistance);
}
});

double lastDistance = getDistanceBetweenPoints(Utils.viewToPoint(children.get(0)), comparisonPoint);
long currentTimeOffset = 0L;
List<SpruceTimedView> childViews = new ArrayList<>();
Expand All @@ -81,6 +68,22 @@ public int compare(View left, View right) {
return childViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);
Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
double leftDistance = getDistanceBetweenPoints(Utils.viewToPoint(left), comparisonPoint);
double rightDistance = getDistanceBetweenPoints(Utils.viewToPoint(right), comparisonPoint);
if (reversed) {
return Double.compare(rightDistance, leftDistance);
}
return Double.compare(leftDistance, rightDistance);
}
});
}

/**
* Get the point that's closest to the start point
*
Expand Down
27 changes: 15 additions & 12 deletions lib/src/main/java/com/willowtreeapps/spruce/sort/InlineSort.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,24 @@ public InlineSort(long interObjectDelay, boolean reversed, Corner corner) {

@Override
public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);
List<SpruceTimedView> timedViews = new ArrayList<>();
long currentTimeOffset = 0;

if (reversed) {
Collections.reverse(children);
}

for (View view : children) {
timedViews.add(new SpruceTimedView(view, currentTimeOffset));
currentTimeOffset += interObjectDelay;
}

return timedViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
final PointF comparisonPoint = getDistancePoint(parent, children);
Collections.sort(children, new Comparator<View>() {
@Override
public int compare(View left, View right) {
Expand All @@ -71,17 +85,6 @@ public int compare(View left, View right) {
return 1;
}
});

if (reversed) {
Collections.reverse(children);
}

for (View view : children) {
timedViews.add(new SpruceTimedView(view, currentTimeOffset));
currentTimeOffset += interObjectDelay;
}

return timedViews;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,6 @@ public LinearSort(long interObjectDelay, boolean reversed, Direction direction)
this.direction = direction;
}

@Override
public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children) {
return super.getViewListWithTimeOffsets(parent, children);
}


@Override
public PointF getDistancePoint(ViewGroup parent, List<View> children) {
PointF point = super.getDistancePoint(parent, children);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ public RandomSort(long interObjectDelay) {

@Override
public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<View> children) {
// randomize view list
Collections.shuffle(children);

List<SpruceTimedView> timedViews = new ArrayList<>();
long currentTimeOffset = 0;

Expand All @@ -58,4 +55,8 @@ public List<SpruceTimedView> getViewListWithTimeOffsets(ViewGroup parent, List<V
return timedViews;
}

@Override
public void sortChildren(ViewGroup parent, List<View> children) {
Collections.shuffle(children);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@

public abstract class SortFunction {

/**
* Sorts the children that will be animated in the view.
*
* @param parent ViewGroup parent of the collection of child views.
* @param children The children to be sorted
*/
public abstract void sortChildren(ViewGroup parent, List<View> children);

/**
* Get a list of SpruceTimedView
*
Expand Down