springs = mSpringChain.getAllSprings();
- for (int i = 0; i < springs.size(); i++) {
- springs.get(i).setCurrentValue(-mViews.get(i).getWidth());
- }
- postDelayed(new Runnable() {
- @Override
- public void run() {
- mSpringChain
- .setControlSpringIndex(0)
- .getControlSpring()
- .setEndValue(0);
- }
- }, 500);
- }
- });
}
private boolean handleRowTouch(View view, MotionEvent event) {
@@ -114,13 +101,12 @@ private boolean handleRowTouch(View view, MotionEvent event) {
mActivePointerId = event.getPointerId(0);
mLastDownXlat = view.getTranslationX();
- mLastDraggingView = view;
mLastDownX = event.getRawX();
mVelocityTracker = VelocityTracker.obtain();
mVelocityTracker.addMovement(event);
- int idx = mViews.indexOf(mLastDraggingView);
+ int idx = mViews.indexOf(view);
mSpringChain
.setControlSpringIndex(idx)
.getControlSpring()
@@ -155,4 +141,11 @@ private boolean handleRowTouch(View view, MotionEvent event) {
}
return true;
}
+
+ private View.OnTouchListener onTouchListener = new OnTouchListener() {
+ @Override public boolean onTouch(View v, MotionEvent event) {
+ return handleRowTouch(v, event);
+ }
+ };
+
}
diff --git a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/SpringScrollViewExample.java b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/SpringScrollViewExample.java
index 71f51ac..43d7a55 100644
--- a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/SpringScrollViewExample.java
+++ b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/SpringScrollViewExample.java
@@ -24,25 +24,25 @@
public class SpringScrollViewExample extends FrameLayout {
- private final int ROW_COUNT = 50;
+ private static final String TEXT = "Row ";
+ private static final int ROW_COUNT = 50;
public SpringScrollViewExample(Context context) {
super(context);
-
LayoutInflater inflater = LayoutInflater.from(context);
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.spring_scroll_view_example, this, false);
ViewGroup content = (ViewGroup) root.findViewById(R.id.content_view);
addView(root);
setBackgroundColor(Color.argb(255, 50, 50, 50));
-
int startColor = Color.argb(255, 255, 64, 230);
int endColor = Color.argb(255, 0, 174, 255);
ArgbEvaluator evaluator = new ArgbEvaluator();
+ LayoutInflater layoutInflater = LayoutInflater.from(getContext());
for (int i = 0; i < ROW_COUNT; i++) {
- ExampleRowView exampleRowView = new ExampleRowView(context);
- Integer color = (Integer) evaluator.evaluate((float) i / (float) ROW_COUNT, startColor, endColor);
- exampleRowView.setText("Row " + i);
- exampleRowView.setBackgroundColor(color);
+ ExampleRowView exampleRowView = new ExampleRowView(context, layoutInflater);
+ exampleRowView.setText(TEXT + i);
+ exampleRowView.setBackgroundColor((Integer) evaluator.evaluate(
+ (float) i / (float) ROW_COUNT, startColor, endColor));
content.addView(exampleRowView);
}
}
diff --git a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/ExampleRowView.java b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/ExampleRowView.java
index 42d77d5..1b9311f 100644
--- a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/ExampleRowView.java
+++ b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/ExampleRowView.java
@@ -21,12 +21,12 @@
import com.facebook.rebound.playground.R;
public class ExampleRowView extends FrameLayout {
+
private final TextView mTextView;
- public ExampleRowView(Context context) {
+ public ExampleRowView(Context context, LayoutInflater layoutInflater) {
super(context);
- LayoutInflater inflater = LayoutInflater.from(context);
- ViewGroup view = (ViewGroup) inflater.inflate(R.layout.example_row_view, this, false);
+ ViewGroup view = (ViewGroup) layoutInflater.inflate(R.layout.example_row_view, this, false);
mTextView = (TextView) view.findViewById(R.id.text_view);
addView(view);
}
diff --git a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringOverScroller.java b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringOverScroller.java
index f12b3d3..9b93d51 100644
--- a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringOverScroller.java
+++ b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringOverScroller.java
@@ -42,12 +42,12 @@ public SpringOverScroller(Context context, Interpolator interpolator) {
}
public SpringOverScroller(Context context, Interpolator interpolator,
- float bounceCoefficientX, float bounceCoefficientY) {
+ float bounceCoefficientX, float bounceCoefficientY) {
this(context, interpolator, true);
}
public SpringOverScroller(Context context, Interpolator interpolator,
- float bounceCoefficientX, float bounceCoefficientY, boolean flywheel) {
+ float bounceCoefficientX, float bounceCoefficientY, boolean flywheel) {
this(context, interpolator, flywheel);
}
@@ -67,8 +67,7 @@ public SpringOverScroller(Context context, Interpolator interpolator, boolean fl
.addSpringConfig(COASTING_CONFIG, "coasting");
}
- public final void setFriction(float friction) {
- }
+ public final void setFriction(float friction) { }
public final boolean isFinished() {
return mSpringX.isAtRest() && mSpringY.isAtRest();
@@ -149,34 +148,24 @@ public void fling(int startX, int startY, int velocityX, int velocityY,
.setVelocity(velocityY);
}
- public void notifyHorizontalEdgeReached(int startX, int finalX, int overX) {
- }
+ public void notifyHorizontalEdgeReached(int startX, int finalX, int overX) { }
- public void notifyVerticalEdgeReached(int startY, int finalY, int overY) {
- }
+ public void notifyVerticalEdgeReached(int startY, int finalY, int overY) { }
public void abortAnimation() {
mSpringX.setAtRest();
mSpringY.setAtRest();
}
- @Override
- public void onSpringUpdate(Spring spring) {
+ @Override public void onSpringUpdate(Spring spring) {
Log.d("WSB", "cv:" + spring.getCurrentValue());
}
@Override
- public void onSpringAtRest(Spring spring) {
+ public void onSpringAtRest(Spring spring) { }
- }
+ @Override public void onSpringActivate(Spring spring) { }
- @Override
- public void onSpringActivate(Spring spring) {
+ @Override public void onSpringEndStateChange(Spring spring) { }
- }
-
- @Override
- public void onSpringEndStateChange(Spring spring) {
-
- }
}
diff --git a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringScrollView.java b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringScrollView.java
index e2a6f0f..fafa6fe 100644
--- a/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringScrollView.java
+++ b/rebound-android-playground/src/main/java/com/facebook/rebound/playground/examples/scrollview/SpringScrollView.java
@@ -19,6 +19,9 @@
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.accessibility.AccessibilityEventCompat;
+import android.support.v4.view.accessibility.AccessibilityRecordCompat;
import android.util.AttributeSet;
import android.util.Log;
import android.view.FocusFinder;
@@ -38,10 +41,9 @@
import java.util.List;
public class SpringScrollView extends FrameLayout {
- static final int ANIMATED_SCROLL_GAP = 250;
-
- static final float MAX_SCROLL_FACTOR = 0.5f;
+ public static final int ANIMATED_SCROLL_GAP = 250;
+ public static final float MAX_SCROLL_FACTOR = 0.5f;
private static final String TAG = "ScrollView";
private long mLastScroll;
@@ -131,23 +133,19 @@ public SpringScrollView(Context context, AttributeSet attrs, int defStyle) {
// a.recycle();
}
- @Override
- public int getOverScrollMode() {
+ @Override public int getOverScrollMode() {
return OVER_SCROLL_ALWAYS;
}
- @Override
- public boolean shouldDelayChildPressedState() {
+ @Override public boolean shouldDelayChildPressedState() {
return true;
}
- @Override
- protected float getTopFadingEdgeStrength() {
+ @Override protected float getTopFadingEdgeStrength() {
return 0;
}
- @Override
- protected float getBottomFadingEdgeStrength() {
+ @Override protected float getBottomFadingEdgeStrength() {
return 0;
}
@@ -173,8 +171,7 @@ private void initScrollView() {
mOverflingDistance = configuration.getScaledOverflingDistance();
}
- @Override
- public void addView(View child) {
+ @Override public void addView(View child) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
@@ -182,8 +179,7 @@ public void addView(View child) {
super.addView(child);
}
- @Override
- public void addView(View child, int index) {
+ @Override public void addView(View child, int index) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
@@ -191,8 +187,7 @@ public void addView(View child, int index) {
super.addView(child, index);
}
- @Override
- public void addView(View child, ViewGroup.LayoutParams params) {
+ @Override public void addView(View child, ViewGroup.LayoutParams params) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
@@ -200,8 +195,7 @@ public void addView(View child, ViewGroup.LayoutParams params) {
super.addView(child, params);
}
- @Override
- public void addView(View child, int index, ViewGroup.LayoutParams params) {
+ @Override public void addView(View child, int index, ViewGroup.LayoutParams params) {
if (getChildCount() > 0) {
throw new IllegalStateException("ScrollView can host only one direct child");
}
@@ -263,8 +257,7 @@ public void setSmoothScrollingEnabled(boolean smoothScrollingEnabled) {
mSmoothScrollingEnabled = smoothScrollingEnabled;
}
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (!mFillViewport) {
@@ -294,8 +287,7 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
}
}
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
+ @Override public boolean dispatchKeyEvent(KeyEvent event) {
// Let the focused view and/or our descendants get the key first
return super.dispatchKeyEvent(event) || executeKeyEvent(event);
}
@@ -383,8 +375,7 @@ private void recycleVelocityTracker() {
}
}
- @Override
- public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+ @Override public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
if (disallowIntercept) {
recycleVelocityTracker();
}
@@ -392,8 +383,7 @@ public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
+ @Override public boolean onInterceptTouchEvent(MotionEvent ev) {
/*
* This method JUST determines whether we want to intercept the motion.
* If we return true, onMotionEvent will be called and we do the actual
@@ -489,7 +479,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) {
mActivePointerId = INVALID_POINTER;
recycleVelocityTracker();
if (mScroller.springBack(getScrollX(), getScrollY(), 0, 0, 0, getScrollRange())) {
- postInvalidateOnAnimation();
+ ViewCompat.postInvalidateOnAnimation(this);
}
break;
case MotionEvent.ACTION_POINTER_UP:
@@ -504,8 +494,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) {
return mIsBeingDragged;
}
- @Override
- public boolean onTouchEvent(MotionEvent ev) {
+ @Override public boolean onTouchEvent(MotionEvent ev) {
initVelocityTrackerIfNotExists();
mVelocityTracker.addMovement(ev);
@@ -589,7 +578,7 @@ public boolean onTouchEvent(MotionEvent ev) {
} else {
if (mScroller.springBack(getScrollX(), getScrollY(), 0, 0, 0,
getScrollRange())) {
- postInvalidateOnAnimation();
+ ViewCompat.postInvalidateOnAnimation(this);
}
}
}
@@ -601,7 +590,7 @@ public boolean onTouchEvent(MotionEvent ev) {
case MotionEvent.ACTION_CANCEL:
if (mIsBeingDragged && getChildCount() > 0) {
if (mScroller.springBack(getScrollX(), getScrollY(), 0, 0, 0, getScrollRange())) {
- postInvalidateOnAnimation();
+ ViewCompat.postInvalidateOnAnimation(this);
}
mActivePointerId = INVALID_POINTER;
endDrag();
@@ -667,8 +656,7 @@ private void onSecondaryPointerUp(MotionEvent ev) {
// return super.onGenericMotionEvent(event);
// }
- @Override
- protected void onOverScrolled(int scrollX, int scrollY,
+ @Override protected void onOverScrolled(int scrollX, int scrollY,
boolean clampedX, boolean clampedY) {
// Treat animating scrolls differently; see #computeScroll() for why.
if (!mScroller.isFinished()) {
@@ -695,8 +683,7 @@ private void invalidateParentIfNeeded() {
}
}
- @Override
- public boolean performAccessibilityAction(int action, Bundle arguments) {
+ @Override public boolean performAccessibilityAction(int action, Bundle arguments) {
if (super.performAccessibilityAction(action, arguments)) {
return true;
}
@@ -724,8 +711,7 @@ public boolean performAccessibilityAction(int action, Bundle arguments) {
return false;
}
- @Override
- public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(SpringScrollView.class.getName());
if (isEnabled()) {
@@ -742,16 +728,16 @@ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
}
}
- @Override
- public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ @Override public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(event);
event.setClassName(SpringScrollView.class.getName());
final boolean scrollable = getScrollRange() > 0;
event.setScrollable(scrollable);
event.setScrollX(getScrollX());
event.setScrollY(getScrollY());
- event.setMaxScrollX(getScrollX());
- event.setMaxScrollY(getScrollRange());
+ AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
+ record.setMaxScrollX(getScrollX());
+ record.setMaxScrollY(getScrollRange());
}
private int getScrollRange() {
@@ -1064,7 +1050,7 @@ public final void smoothScrollBy(int dx, int dy) {
dy = Math.max(0, Math.min(scrollY + dy, maxY)) - scrollY;
mScroller.startScroll(getScrollX(), scrollY, 0, dy);
- postInvalidateOnAnimation();
+ ViewCompat.postInvalidateOnAnimation(this);
} else {
if (!mScroller.isFinished()) {
mScroller.abortAnimation();
@@ -1088,8 +1074,7 @@ public final void smoothScrollTo(int x, int y) {
* The scroll range of a scroll view is the overall height of all of its
* children.
*/
- @Override
- protected int computeVerticalScrollRange() {
+ @Override protected int computeVerticalScrollRange() {
final int count = getChildCount();
final int contentHeight = getHeight() - getPaddingBottom() - getPaddingTop();
if (count == 0) {
@@ -1108,13 +1093,11 @@ protected int computeVerticalScrollRange() {
return scrollRange;
}
- @Override
- protected int computeVerticalScrollOffset() {
+ @Override protected int computeVerticalScrollOffset() {
return Math.max(0, super.computeVerticalScrollOffset());
}
- @Override
- protected void measureChild(View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec) {
+ @Override protected void measureChild(View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec) {
ViewGroup.LayoutParams lp = child.getLayoutParams();
int childWidthMeasureSpec;
@@ -1128,8 +1111,7 @@ protected void measureChild(View child, int parentWidthMeasureSpec, int parentHe
child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
}
- @Override
- protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed,
+ @Override protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed,
int parentHeightMeasureSpec, int heightUsed) {
final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
@@ -1142,8 +1124,7 @@ protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, i
child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
}
- @Override
- public void computeScroll() {
+ @Override public void computeScroll() {
if (mScroller.computeScrollOffset()) {
// This is called at drawing time by ViewGroup. We don't want to
// re-show the scrollbars at this point, which scrollTo will do,
@@ -1179,7 +1160,7 @@ public void computeScroll() {
if (!awakenScrollBars()) {
// Keep on drawing until the animation has finished.
- postInvalidateOnAnimation();
+ ViewCompat.postInvalidateOnAnimation(this);
}
}
}
@@ -1289,8 +1270,7 @@ protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
return scrollYDelta;
}
- @Override
- public void requestChildFocus(View child, View focused) {
+ @Override public void requestChildFocus(View child, View focused) {
if (!mIsLayoutDirty) {
scrollToChild(focused);
} else {
@@ -1308,8 +1288,7 @@ public void requestChildFocus(View child, View focused) {
* This is more expensive than the default {@link android.view.ViewGroup}
* implementation, otherwise this behavior might have been made the default.
*/
- @Override
- protected boolean onRequestFocusInDescendants(int direction,
+ @Override protected boolean onRequestFocusInDescendants(int direction,
Rect previouslyFocusedRect) {
// convert from forward / backward notation to up / down / left / right
@@ -1336,8 +1315,7 @@ protected boolean onRequestFocusInDescendants(int direction,
return nextFocus.requestFocus(direction, previouslyFocusedRect);
}
- @Override
- public boolean requestChildRectangleOnScreen(View child, Rect rectangle,
+ @Override public boolean requestChildRectangleOnScreen(View child, Rect rectangle,
boolean immediate) {
// offset into coordinate space of this scroll view
rectangle.offset(child.getLeft() - child.getScrollX(),
@@ -1346,19 +1324,16 @@ public boolean requestChildRectangleOnScreen(View child, Rect rectangle,
return scrollToChildRect(rectangle, immediate);
}
- @Override
- public void requestLayout() {
+ @Override public void requestLayout() {
mIsLayoutDirty = true;
super.requestLayout();
}
- @Override
- protected void onDetachedFromWindow() {
+ @Override protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
}
- @Override
- protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ @Override protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
mIsLayoutDirty = false;
// Give a child focus if it needs it
@@ -1367,7 +1342,7 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) {
}
mChildToScrollTo = null;
- if (!isLaidOut()) {
+ if (!ViewCompat.isLaidOut(this)) {
if (mSavedState != null) {
setScrollY(mSavedState.scrollPosition);
mSavedState = null;
@@ -1389,8 +1364,7 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) {
scrollTo(getScrollX(), getScrollY());
}
- @Override
- protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
View currentFocused = findFocus();
@@ -1435,7 +1409,7 @@ public void fling(int velocityY) {
mScroller.fling(getScrollX(), getScrollY(), 0, velocityY, 0, 0, 0,
Math.max(0, bottom - height), 0, height/2);
- postInvalidateOnAnimation();
+ ViewCompat.postInvalidateOnAnimation(this);
}
}
@@ -1449,8 +1423,7 @@ private void endDrag() {
*
* This version also clamps the scrolling to the bounds of our child.
*/
- @Override
- public void scrollTo(int x, int y) {
+ @Override public void scrollTo(int x, int y) {
// we rely on the fact the View.scrollBy calls scrollTo.
if (getChildCount() > 0) {
if (x != getScrollX() || y != getScrollY()) {
@@ -1459,17 +1432,13 @@ public void scrollTo(int x, int y) {
}
}
- @Override
- public void setOverScrollMode(int mode) {
- }
+ @Override public void setOverScrollMode(int mode) { }
- @Override
- public void draw(Canvas canvas) {
+ @Override public void draw(Canvas canvas) {
super.draw(canvas);
}
- @Override
- protected void onRestoreInstanceState(Parcelable state) {
+ @Override protected void onRestoreInstanceState(Parcelable state) {
if (getContext().getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
// Some old apps reused IDs in ways they shouldn't have.
// Don't break them, but they don't get scroll state restoration.
@@ -1482,8 +1451,7 @@ protected void onRestoreInstanceState(Parcelable state) {
requestLayout();
}
- @Override
- protected Parcelable onSaveInstanceState() {
+ @Override protected Parcelable onSaveInstanceState() {
if (getContext().getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
// Some old apps reused IDs in ways they shouldn't have.
// Don't break them, but they don't get scroll state restoration.
@@ -1507,14 +1475,12 @@ public SavedState(Parcel source) {
scrollPosition = source.readInt();
}
- @Override
- public void writeToParcel(Parcel dest, int flags) {
+ @Override public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(scrollPosition);
}
- @Override
- public String toString() {
+ @Override public String toString() {
return "HorizontalScrollView.SavedState{"
+ Integer.toHexString(System.identityHashCode(this))
+ " scrollPosition=" + scrollPosition + "}";
diff --git a/rebound-android-playground/src/main/res/layout/activity_playground.xml b/rebound-android-playground/src/main/res/layout/activity_playground.xml
index a2ba514..e68f92f 100644
--- a/rebound-android-playground/src/main/res/layout/activity_playground.xml
+++ b/rebound-android-playground/src/main/res/layout/activity_playground.xml
@@ -1,37 +1,30 @@
+ android:background="@android:color/black">
+
-
+
+
-
-
+ android:layout_gravity="center"
+ android:padding="40dp"/>
+
+ android:background="#ccc"/>
+
+
diff --git a/rebound-android-playground/src/main/res/values/colors.xml b/rebound-android-playground/src/main/res/values/colors.xml
index a8d4bbf..3b680e7 100644
--- a/rebound-android-playground/src/main/res/values/colors.xml
+++ b/rebound-android-playground/src/main/res/values/colors.xml
@@ -1,4 +1,6 @@
#efefef
+ #1194e7
+ #1085CE
\ No newline at end of file
diff --git a/rebound-android-playground/src/main/res/values/styles.xml b/rebound-android-playground/src/main/res/values/styles.xml
index e88687c..231d124 100644
--- a/rebound-android-playground/src/main/res/values/styles.xml
+++ b/rebound-android-playground/src/main/res/values/styles.xml
@@ -1,8 +1,12 @@
-