summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Roard <nicolasroard@google.com>2018-03-21 09:39:30 -0700
committerNicolas Roard <nicolasroard@google.com>2018-03-21 20:48:35 -0700
commitbf600e5dc87d117b3ce7807ed324c3f26381b05c (patch)
treecefad40cbd28e42a6784ef94451ecc885f43337b
parentf3eb9024925adb74ace451d85d16a6686795ff61 (diff)
downloadsherpa-bf600e5dc87d117b3ce7807ed324c3f26381b05c.tar.gz
Add more documentation about the optimization levels and margins in chains.
Also unhide the setOptimizationLevel() function and rename the XML attributes for the optimization mask. Fix small issues, fix tests. Increase ratio strength for wrap content. Test: updated tests (also in sherpa) Fixes: N/A Change-Id: I25fed067190de9a433a3ce4010d1dafdf4e97d6b
-rw-r--r--constraintlayout/src/main/java/android/support/constraint/ConstraintLayout.java43
-rw-r--r--constraintlayout/src/main/java/android/support/constraint/ConstraintSet.java17
-rw-r--r--constraintlayout/src/main/res/values/attrs.xml8
-rw-r--r--solver/src/main/java/android/support/constraint/solver/Metrics.java5
-rw-r--r--solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java4
-rw-r--r--solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidgetContainer.java4
-rw-r--r--solver/src/main/java/android/support/constraint/solver/widgets/Optimizer.java10
-rw-r--r--solver/src/test/java/android/support/constraint/solver/BarrierTest.java2
-rw-r--r--solver/src/test/java/android/support/constraint/solver/CenterWrapTest.java2
-rw-r--r--solver/src/test/java/android/support/constraint/solver/ChainTest.java44
-rw-r--r--solver/src/test/java/android/support/constraint/solver/ChainWrapContentTest.java8
-rw-r--r--solver/src/test/java/android/support/constraint/solver/OptimizationsTest.java56
-rw-r--r--solver/src/test/java/android/support/constraint/solver/RatioTest.java8
-rw-r--r--solver/src/test/java/android/support/constraint/solver/VisibilityTest.java10
-rw-r--r--solver/src/test/java/android/support/constraint/solver/XmlBasedTest.java2
15 files changed, 127 insertions, 96 deletions
diff --git a/constraintlayout/src/main/java/android/support/constraint/ConstraintLayout.java b/constraintlayout/src/main/java/android/support/constraint/ConstraintLayout.java
index 0fe467b..614951e 100644
--- a/constraintlayout/src/main/java/android/support/constraint/ConstraintLayout.java
+++ b/constraintlayout/src/main/java/android/support/constraint/ConstraintLayout.java
@@ -77,6 +77,9 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
* <li>
* <a href="#VirtualHelpers">Virtual Helpers objects</a>
* </li>
+ * <li>
+ * <a href="#Optimizer">Optimizer</a>
+ * </li>
* </ul>
* </p>
*
@@ -440,12 +443,33 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
* will control how the space will be distributed among the elements using {@code MATCH_CONSTRAINT}. For exemple, on a chain containing two elements using {@code MATCH_CONSTRAINT},
* with the first element using a weight of 2 and the second a weight of 1, the space occupied by the first element will be twice that of the second element.</p>
*
+ * <h5>Margins and chains (<i><b>in 1.1</b></i>)</h5>
+ * <p>When using margins on elements in a chain, the margin will:
+ * <ul>
+ * <li>be additive : for example on a horizontal chain, if one element defines a right margin of 10dp and the next element a left margin of 5dp, the result margin between those two elements will be 15dp</li>
+ * <li>the leftover space used by chains to position items will not contains the margin (we can think about it as what is positioned is the item plus its margins).</li>
+ * </ul>
+ * essentially be considere</p>
* <h4 id="VirtualHelpers"> Virtual Helper objects </h4>
* <p>In addition to the intrinsic capabilities detailed previously, you can also use special helper objects
* in {@code ConstraintLayout} to help you with your layout. Currently, the {@code Guideline}{@see Guideline} object allows you to create
* Horizontal and Vertical guidelines which are positioned relative to the {@code ConstraintLayout} container. Widgets can
* then be positioned by constraining them to such guidelines. In <b>1.1</b>, {@code Barrier} and {@code Group} were added too.</p>
* </div>
+ *
+ * <h4 id="Optimizer">Optimizer (<i><b>in 1.1</b></i>)</h4>
+ * <p>
+ * In 1.1 we exposed the constraints optimizer. You can decide which optimizations are applied by adding the tag <i>app:layout_optimizationLevel</i> to the ConstraintLayout element.
+ * <ul>
+ * <li><b>none</b> : no optimizations are applied</li>
+ * <li><b>standard</b> : Default. Optimize direct and barrier constraints only</li>
+ * <li><b>direct</b> : optimize direct constraints</li>
+ * <li><b>barrier</b> : optimize barrier constraints</li>
+ * <li><b>chain</b> : optimize chain constraints (experimental)</li>
+ * </ul>
+ * </p>
+ * <p>This attribute is a mask, so you can decide to turn on or off specific optimizations by listing the ones you want.
+ * For example: <i>app:layout_optimizationLevel="direct|barrier|chain"</i> </p>
*/
public class ConstraintLayout extends ViewGroup {
// For now, disallow embedded (single-layer resolution) situations.
@@ -479,7 +503,7 @@ public class ConstraintLayout extends ViewGroup {
private int mMaxHeight = Integer.MAX_VALUE;
private boolean mDirtyHierarchy = true;
- private int mOptimizationLevel = Optimizer.OPTIMIZATION_ALL;
+ private int mOptimizationLevel = Optimizer.OPTIMIZATION_STANDARD;
private ConstraintSet mConstraintSet = null;
private String mTitle;
@@ -1599,14 +1623,19 @@ public class ConstraintLayout extends ViewGroup {
}
/**
- * @hide
+ * Set the optimization for the layout resolution.
*
- * Set the optimization level for the layout resolution
- * The level can be one of:
+ * The optimization can be one of:
* <ul>
* <li>Optimizer.OPTIMIZATION_NONE</li>
- * <li>Optimizer.OPTIMIZATION_ALL</li>
- * <li>Optimizer.OPTIMIZATION_BASIC</li>
+ * <li>Optimizer.OPTIMIZATION_STANDARD</li>
+ * </ul>
+ * (At the moment, the standard optimizations are DIRECT and BARRIER)
+ *
+ * Or a mask composed of:
+ * <ul>
+ * <li>Optimizer.OPTIMIZATION_DIRECT </li>
+ * <li>Optimizer.OPTIMIZATION_BARRIER </li>
* <li>Optimizer.OPTIMIZATION_CHAIN </li>
* </ul>
* @param level optimization level
@@ -1616,8 +1645,6 @@ public class ConstraintLayout extends ViewGroup {
}
/**
- * @hide
- *
* Return the current optimization level for the layout resolution
*
* @return the current level
diff --git a/constraintlayout/src/main/java/android/support/constraint/ConstraintSet.java b/constraintlayout/src/main/java/android/support/constraint/ConstraintSet.java
index 7f8e24f..f40e024 100644
--- a/constraintlayout/src/main/java/android/support/constraint/ConstraintSet.java
+++ b/constraintlayout/src/main/java/android/support/constraint/ConstraintSet.java
@@ -336,8 +336,8 @@ public class ConstraintSet {
private static class Constraint {
boolean mIsGuideline = false;
- public int mWidth = Constraints.LayoutParams.WRAP_CONTENT;
- public int mHeight = Constraints.LayoutParams.WRAP_CONTENT;
+ public int mWidth;
+ public int mHeight;
int mViewId;
static final int UNSET = ConstraintLayout.LayoutParams.UNSET;
public int guideBegin = UNSET;
@@ -396,8 +396,8 @@ public class ConstraintSet {
public float rotationY = 0;
public float scaleX = 1;
public float scaleY = 1;
- public float transformPivotX = 0;
- public float transformPivotY = 0;
+ public float transformPivotX = Float.NaN;
+ public float transformPivotY = Float.NaN;
public float translationX = 0;
public float translationY = 0;
public float translationZ = 0;
@@ -800,8 +800,12 @@ public class ConstraintSet {
view.setRotationY(constraint.rotationY);
view.setScaleX(constraint.scaleX);
view.setScaleY(constraint.scaleY);
- view.setPivotX(constraint.transformPivotX);
- view.setPivotY(constraint.transformPivotY);
+ if (!Float.isNaN(constraint.transformPivotX)) {
+ view.setPivotX(constraint.transformPivotX);
+ }
+ if (!Float.isNaN(constraint.transformPivotY)) {
+ view.setPivotY(constraint.transformPivotY);
+ }
view.setTranslationX(constraint.translationX);
view.setTranslationY(constraint.translationY);
if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
@@ -2291,6 +2295,7 @@ public class ConstraintSet {
break;
case ROTATION:
c.rotation = a.getFloat(attr, c.rotation);
+ break;
case ROTATION_X:
c.rotationX = a.getFloat(attr, c.rotationX);
break;
diff --git a/constraintlayout/src/main/res/values/attrs.xml b/constraintlayout/src/main/res/values/attrs.xml
index 9184c49..8663a49 100644
--- a/constraintlayout/src/main/res/values/attrs.xml
+++ b/constraintlayout/src/main/res/values/attrs.xml
@@ -142,12 +142,10 @@
<!-- Used to set the type of optimization we apply. This is a mask. -->
<attr name="layout_optimizationLevel">
<flag name="none" value="0"/>
- <flag name="all" value="19" /> <!-- for now only graph/basic/barriers -->
- <flag name="graph" value="1"/>
- <flag name="basic" value="2"/>
+ <flag name="standard" value="3" /> <!-- for now only direct & barriers -->
+ <flag name="direct" value="1"/>
+ <flag name="barrier" value="2"/>
<flag name="chains" value="4"/>
- <flag name="ratio" value="8"/>
- <flag name="barrier" value="16"/>
</attr>
<!-- Specify the style of match constraint -->
diff --git a/solver/src/main/java/android/support/constraint/solver/Metrics.java b/solver/src/main/java/android/support/constraint/solver/Metrics.java
index e6b7faa..002f54a 100644
--- a/solver/src/main/java/android/support/constraint/solver/Metrics.java
+++ b/solver/src/main/java/android/support/constraint/solver/Metrics.java
@@ -17,6 +17,11 @@ package android.support.constraint.solver;
import java.util.ArrayList;
+/**
+ * @hide
+ *
+ * Utility class to track metrics during the system resolution
+ */
public class Metrics {
public long tableSizeIncrease;
public long minimize;
diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java
index 84fb23f..12b1bee 100644
--- a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java
+++ b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidget.java
@@ -2574,11 +2574,11 @@ public class ConstraintWidget {
} else if (matchConstraintDefault == MATCH_CONSTRAINT_RATIO) {
applyCentering = true;
applyBoundsCheck = true;
- int strength = SolverVariable.STRENGTH_HIGH;
+ int strength = SolverVariable.STRENGTH_HIGHEST;
if (!useRatio) {
// useRatio is true if the side we base ourselves on for the ratio is this one
// in that case, we need to have a stronger constraint.
- strength = SolverVariable.STRENGTH_HIGHEST;
+ strength = SolverVariable.STRENGTH_EQUALITY;
}
system.addEquality(begin, beginTarget, beginAnchor.getMargin(), strength);
system.addEquality(end, endTarget, -endAnchor.getMargin(), strength);
diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidgetContainer.java b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidgetContainer.java
index 7a54bf3..2d962f6 100644
--- a/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidgetContainer.java
+++ b/solver/src/main/java/android/support/constraint/solver/widgets/ConstraintWidgetContainer.java
@@ -57,7 +57,7 @@ public class ConstraintWidgetContainer extends WidgetContainer {
ConstraintWidget[] mVerticalChainsArray = new ConstraintWidget[4];
ConstraintWidget[] mHorizontalChainsArray = new ConstraintWidget[4];
- private int mOptimizationLevel = Optimizer.OPTIMIZATION_ALL;
+ private int mOptimizationLevel = Optimizer.OPTIMIZATION_STANDARD;
private boolean mWidthMeasuredTooSmall = false;
private boolean mHeightMeasuredTooSmall = false;
@@ -307,7 +307,7 @@ public class ConstraintWidgetContainer extends WidgetContainer {
mY = 0;
}
- if (optimizeFor(Optimizer.OPTIMIZATION_GRAPH)) {
+ if (mOptimizationLevel != Optimizer.OPTIMIZATION_NONE) {
if (DEBUG_GRAPH) {
System.out.println("### Graph resolution... " + mWidth + " x " + mHeight + " ###");
}
diff --git a/solver/src/main/java/android/support/constraint/solver/widgets/Optimizer.java b/solver/src/main/java/android/support/constraint/solver/widgets/Optimizer.java
index 610dc7e..b2af858 100644
--- a/solver/src/main/java/android/support/constraint/solver/widgets/Optimizer.java
+++ b/solver/src/main/java/android/support/constraint/solver/widgets/Optimizer.java
@@ -16,9 +16,6 @@
package android.support.constraint.solver.widgets;
import android.support.constraint.solver.LinearSystem;
-import android.support.constraint.solver.SolverVariable;
-
-import java.util.ArrayList;
import static android.support.constraint.solver.widgets.ConstraintWidget.*;
import static android.support.constraint.solver.widgets.ConstraintWidget.DimensionBehaviour.FIXED;
@@ -31,12 +28,11 @@ public class Optimizer {
// Optimization levels (mask)
public static final int OPTIMIZATION_NONE = 0;
- public static final int OPTIMIZATION_GRAPH = 1;
- public static final int OPTIMIZATION_BASIC = 1 << 1;
+ public static final int OPTIMIZATION_DIRECT = 1;
+ public static final int OPTIMIZATION_BARRIER = 1 << 1;
public static final int OPTIMIZATION_CHAIN = 1 << 2;
public static final int OPTIMIZATION_RATIO = 1 << 3;
- public static final int OPTIMIZATION_BARRIER = 1 << 4;
- public static final int OPTIMIZATION_ALL = OPTIMIZATION_GRAPH | OPTIMIZATION_BASIC | OPTIMIZATION_BARRIER /* | OPTIMIZATION_CHAIN */;
+ public static final int OPTIMIZATION_STANDARD = OPTIMIZATION_DIRECT | OPTIMIZATION_BARRIER /* | OPTIMIZATION_CHAIN */;
// Internal use.
static boolean[] flags = new boolean[3];
diff --git a/solver/src/test/java/android/support/constraint/solver/BarrierTest.java b/solver/src/test/java/android/support/constraint/solver/BarrierTest.java
index 54ad359..ef8f3f9 100644
--- a/solver/src/test/java/android/support/constraint/solver/BarrierTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/BarrierTest.java
@@ -49,7 +49,7 @@ public class BarrierTest {
C.connect(ConstraintAnchor.Type.LEFT, barrier, ConstraintAnchor.Type.RIGHT);
C.connect(ConstraintAnchor.Type.RIGHT, root, ConstraintAnchor.Type.RIGHT);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_ALL);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("A: " + A + " B: " + B + " C: " + C + " barrier: " + barrier);
assertEquals(A.getLeft(), 0);
diff --git a/solver/src/test/java/android/support/constraint/solver/CenterWrapTest.java b/solver/src/test/java/android/support/constraint/solver/CenterWrapTest.java
index d266de9..2c72eca 100644
--- a/solver/src/test/java/android/support/constraint/solver/CenterWrapTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/CenterWrapTest.java
@@ -239,7 +239,7 @@ public class CenterWrapTest {
assertEquals(B.getTop(), A.getTop());
assertEquals(C.getLeft(), 350);
assertEquals(C.getRight(), 450);
- assertEquals(C.getTop(), 379);
+ assertEquals(C.getTop(), 379, 1);
root.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.WRAP_CONTENT);
root.layout();
diff --git a/solver/src/test/java/android/support/constraint/solver/ChainTest.java b/solver/src/test/java/android/support/constraint/solver/ChainTest.java
index ee4354e..6b33d1a 100644
--- a/solver/src/test/java/android/support/constraint/solver/ChainTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/ChainTest.java
@@ -129,7 +129,7 @@ public class ChainTest {
System.out.println("c) A: " + A + " B: " + B);
assertEquals(A.getWidth(), 0);
assertEquals(B.getWidth(), 0);
- assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(A.getLeft(), 0);
assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
A.setVisibility(ConstraintWidget.VISIBLE);
A.setWidth(100);
@@ -393,7 +393,7 @@ public class ChainTest {
assertEquals(A.getLeft() - root.getLeft() - marginL, root.getRight() - C.getRight() - marginR);
assertEquals(C.getLeft() - B.getRight(), B.getLeft() - A.getRight());
int matchWidth = root.getWidth() - B.getWidth() - C.getWidth() - marginL - marginR - 4 * (B.getLeft() - A.getRight());
- assertEquals(A.getWidth(), matchWidth);
+ assertEquals(A.getWidth(), 498);
assertEquals(B.getWidth(), C.getWidth());
assertEquals(B.getWidth(), 100);
checkPositions(A, B, C);
@@ -403,7 +403,7 @@ public class ChainTest {
B.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
root.layout();
System.out.println("c) A: " + A + " B: " + B + " C: " + C);
- assertEquals(B.getWidth(), matchWidth);
+ assertEquals(B.getWidth(), 498);
assertEquals(A.getWidth(), C.getWidth());
assertEquals(A.getWidth(), 100);
checkPositions(A, B, C);
@@ -413,7 +413,7 @@ public class ChainTest {
C.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
root.layout();
System.out.println("d) A: " + A + " B: " + B + " C: " + C);
- assertEquals(C.getWidth(), matchWidth);
+ assertEquals(C.getWidth(), 498);
assertEquals(A.getWidth(), B.getWidth());
assertEquals(A.getWidth(), 100);
checkPositions(A, B, C);
@@ -426,7 +426,7 @@ public class ChainTest {
System.out.println("e) A: " + A + " B: " + B + " C: " + C);
assertEquals(C.getWidth(), 100);
assertEquals(A.getWidth(), B.getWidth()); // L
- assertEquals(A.getWidth(), 319);
+ assertEquals(A.getWidth(), 299);
checkPositions(A, B, C);
// A & C marked as 0dp, B == 100
C.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
@@ -436,7 +436,7 @@ public class ChainTest {
System.out.println("f) A: " + A + " B: " + B + " C: " + C);
assertEquals(B.getWidth(), 100);
assertEquals(A.getWidth(), C.getWidth());
- assertEquals(A.getWidth(), 319);
+ assertEquals(A.getWidth(), 299);
checkPositions(A, B, C);
// B & C marked as 0dp, A == 100
B.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
@@ -446,7 +446,7 @@ public class ChainTest {
System.out.println("g) A: " + A + " B: " + B + " C: " + C);
assertEquals(A.getWidth(), 100);
assertEquals(B.getWidth(), C.getWidth());
- assertEquals(B.getWidth(), 319);
+ assertEquals(B.getWidth(), 299);
checkPositions(A, B, C);
// A == 0dp, B & C == 100, C is gone
A.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
@@ -458,7 +458,7 @@ public class ChainTest {
C.setVisibility(ConstraintWidget.GONE);
root.layout();
System.out.println("h) A: " + A + " B: " + B + " C: " + C);
- assertEquals(A.getWidth(), 645);
+ assertEquals(A.getWidth(), 632);
assertEquals(B.getWidth(), 100);
assertEquals(C.getWidth(), 0);
checkPositions(A, B, C);
@@ -516,10 +516,10 @@ public class ChainTest {
A.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
root.layout();
System.out.println("b) A: " + A + " B: " + B + " C: " + C);
- assertEquals(A.getTop(), 14);
- assertEquals(C.getBottom(), 566);
- assertEquals(B.getBottom(), 539);
- assertEquals(A.getHeight(), 498);
+ assertEquals(A.getTop(), 7);
+ assertEquals(C.getBottom(), 573);
+ assertEquals(B.getBottom(), 519);
+ assertEquals(A.getHeight(), 458);
assertEquals(B.getHeight(), C.getHeight());
assertEquals(B.getHeight(), 20);
checkVerticalPositions(A, B, C);
@@ -529,7 +529,7 @@ public class ChainTest {
B.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
root.layout();
System.out.println("c) A: " + A + " B: " + B + " C: " + C);
- assertEquals(B.getHeight(), 498);
+ assertEquals(B.getHeight(), 458);
assertEquals(A.getHeight(), C.getHeight());
assertEquals(A.getHeight(), 20);
checkVerticalPositions(A, B, C);
@@ -539,7 +539,7 @@ public class ChainTest {
C.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
root.layout();
System.out.println("d) A: " + A + " B: " + B + " C: " + C);
- assertEquals(C.getHeight(), 498);
+ assertEquals(C.getHeight(), 458);
assertEquals(A.getHeight(), B.getHeight());
assertEquals(A.getHeight(), 20);
checkVerticalPositions(A, B, C);
@@ -552,7 +552,7 @@ public class ChainTest {
System.out.println("e) A: " + A + " B: " + B + " C: " + C);
assertEquals(C.getHeight(), 20);
assertEquals(A.getHeight(), B.getHeight()); // L
- assertEquals(A.getHeight(), 259);
+ assertEquals(A.getHeight(), 239);
checkVerticalPositions(A, B, C);
// A & C marked as 0dp, B == 20
C.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
@@ -562,7 +562,7 @@ public class ChainTest {
System.out.println("f) A: " + A + " B: " + B + " C: " + C);
assertEquals(B.getHeight(), 20);
assertEquals(A.getHeight(), C.getHeight());
- assertEquals(A.getHeight(), 259);
+ assertEquals(A.getHeight(), 239);
checkVerticalPositions(A, B, C);
// B & C marked as 0dp, A == 20
B.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
@@ -572,7 +572,7 @@ public class ChainTest {
System.out.println("g) A: " + A + " B: " + B + " C: " + C);
assertEquals(A.getHeight(), 20);
assertEquals(B.getHeight(), C.getHeight());
- assertEquals(B.getHeight(), 259);
+ assertEquals(B.getHeight(), 239);
checkVerticalPositions(A, B, C);
// A == 0dp, B & C == 20, C is gone
A.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
@@ -584,7 +584,7 @@ public class ChainTest {
C.setVisibility(ConstraintWidget.GONE);
root.layout();
System.out.println("h) A: " + A + " B: " + B + " C: " + C);
- assertEquals(A.getHeight(), 525);
+ assertEquals(A.getHeight(), 512);
assertEquals(B.getHeight(), 20);
assertEquals(C.getHeight(), 0);
checkVerticalPositions(A, B, C);
@@ -796,7 +796,7 @@ public class ChainTest {
System.out.println("a) D: " + D + " E: " + E + " F: " + F);
assertEquals(A.getWidth(), B.getWidth(), 1);
assertEquals(B.getWidth(), C.getWidth(), 1);
- assertEquals(A.getWidth(), 315, 1);
+ assertEquals(A.getWidth(), 307, 1);
}
@Test
@@ -843,7 +843,7 @@ public class ChainTest {
System.out.println("a) D: " + D + " E: " + E + " F: " + F);
assertEquals(A.getHeight(), B.getHeight(), 1);
assertEquals(B.getHeight(), C.getHeight(), 1);
- assertEquals(A.getHeight(), 182, 1);
+ assertEquals(A.getHeight(), 174, 1);
}
@@ -1209,8 +1209,8 @@ public class ChainTest {
B.connect(ConstraintAnchor.Type.TOP, A, ConstraintAnchor.Type.BOTTOM, 9);
root.layout();
System.out.println("a) A: " + A + " B: " + B);
- assertEquals(A.getTop(), 9);
- assertEquals(B.getTop(), 9 + A.getHeight() + Math.max(7, 9));
+ assertEquals(A.getTop(), 0);
+ assertEquals(B.getTop(), A.getHeight() + Math.max(7, 9));
}
@Test
diff --git a/solver/src/test/java/android/support/constraint/solver/ChainWrapContentTest.java b/solver/src/test/java/android/support/constraint/solver/ChainWrapContentTest.java
index fa23b74..1f3daef 100644
--- a/solver/src/test/java/android/support/constraint/solver/ChainWrapContentTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/ChainWrapContentTest.java
@@ -28,7 +28,7 @@ public class ChainWrapContentTest {
@Test
public void testVertWrapContentChain() {
testVertWrapContentChain(Optimizer.OPTIMIZATION_NONE);
- testVertWrapContentChain(Optimizer.OPTIMIZATION_ALL);
+ testVertWrapContentChain(Optimizer.OPTIMIZATION_STANDARD);
}
public void testVertWrapContentChain(int directResolution) {
@@ -64,7 +64,7 @@ public class ChainWrapContentTest {
@Test
public void testHorizWrapContentChain() {
testHorizWrapContentChain(Optimizer.OPTIMIZATION_NONE);
- testHorizWrapContentChain(Optimizer.OPTIMIZATION_ALL);
+ testHorizWrapContentChain(Optimizer.OPTIMIZATION_STANDARD);
}
public void testHorizWrapContentChain(int directResolution) {
@@ -111,7 +111,7 @@ public class ChainWrapContentTest {
@Test
public void testVertWrapContentChain3Elts() {
testVertWrapContentChain3Elts(Optimizer.OPTIMIZATION_NONE);
- testVertWrapContentChain3Elts(Optimizer.OPTIMIZATION_ALL);
+ testVertWrapContentChain3Elts(Optimizer.OPTIMIZATION_STANDARD);
}
public void testVertWrapContentChain3Elts(int directResolution) {
@@ -173,7 +173,7 @@ public class ChainWrapContentTest {
@Test
public void testHorizWrapContentChain3Elts() {
testHorizWrapContentChain3Elts(Optimizer.OPTIMIZATION_NONE);
- testHorizWrapContentChain3Elts(Optimizer.OPTIMIZATION_ALL);
+ testHorizWrapContentChain3Elts(Optimizer.OPTIMIZATION_STANDARD);
}
public void testHorizWrapContentChain3Elts(int directResolution) {
diff --git a/solver/src/test/java/android/support/constraint/solver/OptimizationsTest.java b/solver/src/test/java/android/support/constraint/solver/OptimizationsTest.java
index 3e0ed6a..90e672a 100644
--- a/solver/src/test/java/android/support/constraint/solver/OptimizationsTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/OptimizationsTest.java
@@ -49,7 +49,7 @@ public class OptimizationsTest {
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
// root.setOptimizationLevel(Optimizer.OPTIMIZATION_NONE);
A.setHorizontalChainStyle(ConstraintWidget.CHAIN_SPREAD_INSIDE);
root.layout();
@@ -82,12 +82,12 @@ public class OptimizationsTest {
System.out.println("3) root: " + root + " A: " + A + " B: " + B + " C: " + C);
System.out.println(metrics);
- assertEquals(A.getLeft(), 50);
- assertEquals(B.getLeft(), 223);
- assertEquals(C.getLeft(), 397, 1);
- assertEquals(A.getWidth(), 163, 1);
- assertEquals(B.getWidth(), 163, 1);
- assertEquals(C.getWidth(), 163, 1);
+ assertEquals(A.getLeft(), 40);
+ assertEquals(B.getLeft(), 220);
+ assertEquals(C.getLeft(), 400, 1);
+ assertEquals(A.getWidth(), 170, 1);
+ assertEquals(B.getWidth(), 170, 1);
+ assertEquals(C.getWidth(), 170, 1);
A.setHorizontalChainStyle(ConstraintWidget.CHAIN_SPREAD_INSIDE);
@@ -124,7 +124,7 @@ public class OptimizationsTest {
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("1) root: " + root + " A: " + A + " B: " + B);
System.out.println(metrics);
@@ -189,7 +189,7 @@ public class OptimizationsTest {
A.setDimensionRatio("1:1");
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("1) root: " + root + " A: " + A + " B: " + B);
System.out.println(metrics);
@@ -216,7 +216,7 @@ public class OptimizationsTest {
B.connect(ConstraintAnchor.Type.BASELINE, A, ConstraintAnchor.Type.BASELINE);
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("1) root: " + root + " A: " + A + " B: " + B);
System.out.println(metrics);
@@ -239,7 +239,7 @@ public class OptimizationsTest {
A.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("1) root: " + root + " A: " + A);
System.out.println(metrics);
@@ -274,7 +274,7 @@ public class OptimizationsTest {
long time = System.nanoTime();
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
time = System.nanoTime() - time;
System.out.println("A) execution time: " + time);
@@ -317,7 +317,7 @@ public class OptimizationsTest {
B.connect(ConstraintAnchor.Type.TOP, A, ConstraintAnchor.Type.BOTTOM, 104);
root.add(A);
root.add(B);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
long time = System.nanoTime();
root.layout();
time = System.nanoTime() - time;
@@ -357,7 +357,7 @@ public class OptimizationsTest {
A.connect(ConstraintAnchor.Type.BOTTOM, guidelineA, ConstraintAnchor.Type.TOP, 12);
root.add(A);
root.add(guidelineA);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
long time = System.nanoTime();
root.layout();
time = System.nanoTime() - time;
@@ -380,7 +380,7 @@ public class OptimizationsTest {
A.connect(ConstraintAnchor.Type.LEFT, root, ConstraintAnchor.Type.LEFT, margin);
A.connect(ConstraintAnchor.Type.RIGHT, root, ConstraintAnchor.Type.RIGHT, -marginR);
root.add(A);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
long time = System.nanoTime();
root.layout();
time = System.nanoTime() - time;
@@ -406,7 +406,7 @@ public class OptimizationsTest {
A.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
root.add(guidelineA);
root.add(A);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
Metrics metrics = new Metrics();
root.fillMetrics(metrics);
long time = System.nanoTime();
@@ -454,7 +454,7 @@ public class OptimizationsTest {
root.add(A);
root.add(B);
root.add(C);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_GRAPH);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
long time = System.nanoTime();
root.layout();
@@ -473,9 +473,9 @@ public class OptimizationsTest {
@Test
public void testGuideline() {
testVerticalGuideline(Optimizer.OPTIMIZATION_NONE);
- testVerticalGuideline(Optimizer.OPTIMIZATION_ALL);
+ testVerticalGuideline(Optimizer.OPTIMIZATION_STANDARD);
testHorizontalGuideline(Optimizer.OPTIMIZATION_NONE);
- testHorizontalGuideline(Optimizer.OPTIMIZATION_ALL);
+ testHorizontalGuideline(Optimizer.OPTIMIZATION_STANDARD);
}
public void testVerticalGuideline(int directResolution) {
@@ -557,7 +557,7 @@ public class OptimizationsTest {
@Test
public void testBasicCentering() {
testBasicCentering(Optimizer.OPTIMIZATION_NONE);
- testBasicCentering(Optimizer.OPTIMIZATION_ALL);
+ testBasicCentering(Optimizer.OPTIMIZATION_STANDARD);
}
public void testBasicCentering(int directResolution) {
@@ -580,7 +580,7 @@ public class OptimizationsTest {
@Test
public void testPercent() {
testPercent(Optimizer.OPTIMIZATION_NONE);
- testPercent(Optimizer.OPTIMIZATION_ALL);
+ testPercent(Optimizer.OPTIMIZATION_STANDARD);
}
public void testPercent(int directResolution) {
@@ -607,7 +607,7 @@ public class OptimizationsTest {
@Test
public void testDependency() {
testDependency(Optimizer.OPTIMIZATION_NONE);
- testDependency(Optimizer.OPTIMIZATION_ALL);
+ testDependency(Optimizer.OPTIMIZATION_STANDARD);
}
public void testDependency(int directResolution) {
@@ -646,7 +646,7 @@ public class OptimizationsTest {
@Test
public void testDependency2() {
testDependency2(Optimizer.OPTIMIZATION_NONE);
- testDependency2(Optimizer.OPTIMIZATION_ALL);
+ testDependency2(Optimizer.OPTIMIZATION_STANDARD);
}
public void testDependency2(int directResolution) {
@@ -684,7 +684,7 @@ public class OptimizationsTest {
@Test
public void testDependency3() {
testDependency3(Optimizer.OPTIMIZATION_NONE);
- testDependency3(Optimizer.OPTIMIZATION_ALL);
+ testDependency3(Optimizer.OPTIMIZATION_STANDARD);
}
public void testDependency3(int directResolution) {
@@ -724,7 +724,7 @@ public class OptimizationsTest {
@Test
public void testDependency4() {
testDependency4(Optimizer.OPTIMIZATION_NONE);
- testDependency4(Optimizer.OPTIMIZATION_ALL);
+ testDependency4(Optimizer.OPTIMIZATION_STANDARD);
}
public void testDependency4(int directResolution) {
@@ -757,7 +757,7 @@ public class OptimizationsTest {
@Test
public void testDependency5() {
testDependency5(Optimizer.OPTIMIZATION_NONE);
- testDependency5(Optimizer.OPTIMIZATION_ALL);
+ testDependency5(Optimizer.OPTIMIZATION_STANDARD);
}
public void testDependency5(int directResolution) {
@@ -808,7 +808,7 @@ public class OptimizationsTest {
@Test
public void testUnconstrainedDependency() {
testUnconstrainedDependency(Optimizer.OPTIMIZATION_NONE);
- testUnconstrainedDependency(Optimizer.OPTIMIZATION_ALL);
+ testUnconstrainedDependency(Optimizer.OPTIMIZATION_STANDARD);
}
public void testUnconstrainedDependency(int directResolution) {
@@ -848,7 +848,7 @@ public class OptimizationsTest {
@Test
public void testFullLayout() {
testFullLayout(Optimizer.OPTIMIZATION_NONE);
- testFullLayout(Optimizer.OPTIMIZATION_ALL);
+ testFullLayout(Optimizer.OPTIMIZATION_STANDARD);
}
public void testFullLayout(int directResolution) {
diff --git a/solver/src/test/java/android/support/constraint/solver/RatioTest.java b/solver/src/test/java/android/support/constraint/solver/RatioTest.java
index 61fbd60..6b474aa 100644
--- a/solver/src/test/java/android/support/constraint/solver/RatioTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/RatioTest.java
@@ -43,7 +43,7 @@ public class RatioTest {
assertEquals(A.getTop(), 290);
assertEquals(A.getWidth(), 100);
assertEquals(A.getHeight(), 20);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_ALL);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("b) root: " + root + " A: " + A);
assertEquals(A.getLeft(), 450);
@@ -84,7 +84,7 @@ public class RatioTest {
assertEquals(A.getHeight(), 600);
A.setVerticalBiasPercent(0);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_ALL);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("c) root: " + root + " A: " + A);
assertEquals(A.getLeft(), 0);
@@ -113,7 +113,7 @@ public class RatioTest {
assertEquals(A.getTop(), 250);
assertEquals(A.getWidth(), 100);
assertEquals(A.getHeight(), 100);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_ALL);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("b) root: " + root + " A: " + A);
assertEquals(A.getLeft(), 450);
@@ -185,7 +185,7 @@ public class RatioTest {
assertEquals(A.getWidth(), w);
assertEquals(A.getHeight(), w);
- root.setOptimizationLevel(Optimizer.OPTIMIZATION_ALL);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
root.layout();
System.out.println("b) root: " + root + " A: " + A);
assertEquals(A.getLeft(), (root.getWidth() - w) / 2);
diff --git a/solver/src/test/java/android/support/constraint/solver/VisibilityTest.java b/solver/src/test/java/android/support/constraint/solver/VisibilityTest.java
index 7798ade..4c4b8ac 100644
--- a/solver/src/test/java/android/support/constraint/solver/VisibilityTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/VisibilityTest.java
@@ -141,14 +141,14 @@ public class VisibilityTest {
assertEquals(root.getHeight(), 600);
assertEquals(A.getWidth(), 0);
assertEquals(A.getHeight(), 0);
- assertEquals(A.getLeft(), root.getLeft() + root.getWidth() / 2);
- assertEquals(A.getRight(), root.getRight() - root.getWidth() / 2);
+ assertEquals(A.getLeft(), 0);
+ assertEquals(A.getRight(), 0);
assertEquals(B.getLeft(), root.getLeft());
assertEquals(B.getRight(), root.getRight());
assertEquals(guideline.getTop(), root.getHeight() / 2);
- assertEquals(A.getTop(), root.getTop() + (guideline.getTop() - root.getTop()) / 2);
- assertEquals(A.getBottom(), root.getTop() + (guideline.getTop() - root.getTop()) / 2);
- assertEquals(B.getTop(), A.getBottom());
+ assertEquals(A.getTop(), 0);
+ assertEquals(A.getBottom(), 0);
+ assertEquals(B.getTop(), 300);
assertEquals(B.getBottom(), root.getBottom());
}
}
diff --git a/solver/src/test/java/android/support/constraint/solver/XmlBasedTest.java b/solver/src/test/java/android/support/constraint/solver/XmlBasedTest.java
index 117e0a7..98ca576 100644
--- a/solver/src/test/java/android/support/constraint/solver/XmlBasedTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/XmlBasedTest.java
@@ -158,7 +158,7 @@ public class XmlBasedTest {
public void testDirectResolutionXML(String file) {
parseXML(file);
- container.setOptimizationLevel(Optimizer.OPTIMIZATION_ALL);
+ container.setOptimizationLevel(Optimizer.OPTIMIZATION_STANDARD);
int[] perm = new int[boundsMap.size()];
for (int i = 0; i < perm.length; i++) {
perm[i] = i;