diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/utils/ViewTimeCycle.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/utils/ViewTimeCycle.java index 8000ca8b4..270b0b8c5 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/utils/ViewTimeCycle.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/utils/ViewTimeCycle.java @@ -261,8 +261,8 @@ public static class CustomSet extends ViewTimeCycle { SparseArray mConstraintAttributeList; SparseArray mWaveProperties = new SparseArray<>(); float[] mTempValues; - float[] mCache; + @SuppressWarnings("StringSplitter") public CustomSet(String attribute, SparseArray attrList) { mAttributeName = attribute.split(",")[1]; mConstraintAttributeList = attrList; diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java index 2d776400a..b312cbc95 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyAttributes.java @@ -491,6 +491,7 @@ public Key copy(Key src) { mTranslationY = k.mTranslationY; mTranslationZ = k.mTranslationZ; mProgress = k.mProgress; + mTransitionEasing = k.mTransitionEasing; return this; } diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java index e31df1e0b..4ab69daca 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/KeyTimeCycle.java @@ -377,6 +377,7 @@ public Key copy(Key src) { mTranslationX = k.mTranslationX; mTranslationY = k.mTranslationY; mTranslationZ = k.mTranslationZ; + mCustomWaveShape = k.mCustomWaveShape; return this; } diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java index e65ad80e3..cd4651e2d 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionScene.java @@ -809,19 +809,6 @@ public boolean isEnabled() { return !mDisable; } - /** - * Enable or disable the Transition. If a Transition is disabled it is not eligible - * for automatically switching to. - * - * @param enable - * deprecated This method should be called {@code setEnabled}, so that {@code isEnabled} - * can be accessed as a property from Kotlin. - * Use {@link #setEnabled(boolean)} instead. - */ - private void setEnable(boolean enable) { - setEnabled(enable); - } - /** * enable or disable the Transition. If a Transition is disabled it is not eligible * for automatically switching to. diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java index ebe877f28..2ca6c255e 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java @@ -144,7 +144,9 @@ private void warmth(float warmth) { float colorR, colorG, colorB; if (centiKelvin > 66) { float tmp = centiKelvin - 60.f; - colorR = (329.698727446f * (float) Math.pow(tmp, -0.1332047592f)); + // colorR = (329.698727446f * (float) Math.pow(tmp, -0.1332047592f)) + // colorG = (288.1221695283f * (float) Math.pow(tmp, 0.0755148492f)) + colorR = (329.69873f * (float) Math.pow(tmp, -0.1332047592f)); colorG = (288.1221695283f * (float) Math.pow(tmp, 0.0755148492f)); } else { @@ -153,8 +155,9 @@ private void warmth(float warmth) { } if (centiKelvin < 66) { if (centiKelvin > 19) { - colorB = (138.5177312231f - * (float) Math.log(centiKelvin - 10) - 305.0447927307f); + // 138.5177312231f * (float) Math.log(centiKelvin - 10) - 305.0447927307f); + colorB = (138.51773f + * (float) Math.log(centiKelvin - 10) - 305.0448f); } else { colorB = 0; } @@ -175,17 +178,20 @@ private void warmth(float warmth) { float colorR, colorG, colorB; if (centiKelvin > 66) { float tmp = centiKelvin - 60.f; - colorR = (329.698727446f * (float) Math.pow(tmp, -0.1332047592f)); - colorG = (288.1221695283f * (float) Math.pow(tmp, 0.0755148492f)); + // colorR = (329.698727446f * (float) Math.pow(tmp, -0.1332047592f)); + // colorG = (288.1221695283f * (float) Math.pow(tmp, 0.0755148492f)); + colorR = (329.69873f * (float) Math.pow(tmp, -0.13320476f)); + colorG = (288.12216f * (float) Math.pow(tmp, 0.075514849f)); } else { - colorG = (99.4708025861f * (float) Math.log(centiKelvin) - 161.1195681661f); + //float of (99.4708025861f * (float) Math.log(centiKelvin) - 161.1195681661f); + colorG = (99.4708f * (float) Math.log(centiKelvin) - 161.11957f); colorR = 255; } if (centiKelvin < 66) { if (centiKelvin > 19) { - colorB = (138.5177312231f - * (float) Math.log(centiKelvin - 10) - 305.0447927307f); + //float of (138.5177312231 * Math.log(centiKelvin - 10) - 305.0447927307); + colorB = (138.51773f * (float) Math.log(centiKelvin - 10) - 305.0448f); } else { colorB = 0; } diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java index a6a481a96..3ff31df30 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java @@ -96,6 +96,11 @@ public abstract class ConstraintHelper extends View { */ private View[] mViews = null; + /** + * @DoNotShow + */ + protected final static String CHILD_TAG = "CONSTRAINT_LAYOUT_HELPER_CHILD"; + protected HashMap mMap = new HashMap<>(); public ConstraintHelper(Context context) { @@ -702,4 +707,15 @@ public int indexFromId(final int id) { } return index; } + + /** + * hook for helpers to apply parameters in MotionLayout + */ + public void applyHelperParams() { + + } + + public static boolean isChildOfHelper(View v) { + return CHILD_TAG == v.getTag(); + } } diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java index 05b16c271..75c698c58 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java @@ -605,7 +605,7 @@ public class ConstraintLayout extends ViewGroup { * @DoNotShow */ public static final int DESIGN_INFO_ID = 0; - private ConstraintsChangedListener mConstraintsChangedListener; + // private ConstraintsChangedListener mConstraintsChangedListener; private Metrics mMetrics; private static SharedValues sSharedValues = null; @@ -802,7 +802,7 @@ public final void measure(ConstraintWidget widget, || !shouldDoWrap || (shouldDoWrap && otherDimensionStable) || (child instanceof Placeholder) - || (widget.isResolvedHorizontally()); + || widget.isResolvedHorizontally(); if (useCurrent) { horizontalSpec = MeasureSpec.makeMeasureSpec(widget.getWidth(), MeasureSpec.EXACTLY); @@ -851,7 +851,7 @@ public final void measure(ConstraintWidget widget, || !shouldDoWrap || (shouldDoWrap && otherDimensionStable) || (child instanceof Placeholder) - || (widget.isResolvedVertically()); + || widget.isResolvedVertically(); if (useCurrent) { verticalSpec = MeasureSpec.makeMeasureSpec(widget.getHeight(), MeasureSpec.EXACTLY); @@ -2195,6 +2195,7 @@ protected void dispatchDraw(Canvas canvas) { Object tag = child.getTag(); if (tag != null && tag instanceof String) { String coordinates = (String) tag; + @SuppressWarnings("StringSplitter") String[] split = coordinates.split(","); if (split.length == 4) { int x = Integer.parseInt(split[0]); @@ -2267,7 +2268,7 @@ protected void dispatchDraw(Canvas canvas) { * @param constraintsChangedListener */ public void setOnConstraintsChanged(ConstraintsChangedListener constraintsChangedListener) { - this.mConstraintsChangedListener = constraintsChangedListener; + // this.mConstraintsChangedListener = constraintsChangedListener; if (mConstraintLayoutSpec != null) { mConstraintLayoutSpec.setOnConstraintsChanged(constraintsChangedListener); } diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java index 42bddbd03..00934b609 100644 --- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java +++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintSet.java @@ -2981,7 +2981,6 @@ public void createVerticalChain(int topId, connect(chainIds[0], TOP, topId, topSide, 0); for (int i = 1; i < chainIds.length; i++) { - int chainId = chainIds[i]; connect(chainIds[i], TOP, chainIds[i - 1], BOTTOM, 0); connect(chainIds[i - 1], BOTTOM, chainIds[i], TOP, 0); if (weights != null) { @@ -3063,7 +3062,6 @@ private void createHorizontalChain(int leftId, get(chainIds[0]).layout.horizontalChainStyle = style; connect(chainIds[0], left, leftId, leftSide, UNSET); for (int i = 1; i < chainIds.length; i++) { - int chainId = chainIds[i]; connect(chainIds[i], left, chainIds[i - 1], right, UNSET); connect(chainIds[i - 1], right, chainIds[i], left, UNSET); if (weights != null) { @@ -4587,7 +4585,7 @@ public void load(Context context, XmlPullParser parser) { case XmlResourceParser.START_TAG: tagName = parser.getName(); if (DEBUG) { - Log.v(TAG, Debug.getLoc() + " view .... tagName=" + tagName); + Log.v(TAG, Debug.getLoc() + " " + document + " tagName=" + tagName); } switch (tagName) { case "Constraint": @@ -4717,12 +4715,12 @@ public static Constraint buildDelta(Context context, XmlPullParser parser) { AttributeSet attrs = Xml.asAttributeSet(parser); Constraint c = new Constraint(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ConstraintOverride); - populateOverride(context, c, a); + populateOverride(c, a); a.recycle(); return c; } - private static void populateOverride(Context ctx, Constraint c, TypedArray a) { + private static void populateOverride(Constraint c, TypedArray a) { final int count = a.getIndexCount(); TypedValue type; @@ -5354,7 +5352,7 @@ private static void setDeltaValue(Constraint c, int type, boolean value) { private void populateConstraint(Context ctx, Constraint c, TypedArray a, boolean override) { if (override) { - populateOverride(ctx, c, a); + populateOverride(c, a); return; } final int count = a.getIndexCount(); @@ -5851,6 +5849,16 @@ public void setValidateOnParse(boolean validate) { mValidate = validate; } + /** + * If true perform validation checks when parsing ConstraintSets + * This will slow down parsing and should only be used for debugging + * + * @param validate + */ + public boolean isValidateOnParse() { + return mValidate; + } + /** * Dump the contents * @@ -6322,7 +6330,12 @@ void writeLayout() throws IOException { private void writeGuideline(int orientation, int guideBegin, int guideEnd, - float guidePercent) { + float guidePercent) throws IOException { + writeVariable("'orientation'", orientation); + writeVariable("'guideBegin'", guideBegin); + writeVariable("'guideEnd'", guideEnd); + writeVariable("'guidePercent'", guidePercent); + } diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/ArrayLinkedVariables.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/ArrayLinkedVariables.java index 1324dad20..14a6a5fa0 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/ArrayLinkedVariables.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/ArrayLinkedVariables.java @@ -41,7 +41,7 @@ public class ArrayLinkedVariables implements ArrayRow.ArrayRowVariables { private static final boolean DEBUG = false; static final int NONE = -1; - private static final boolean FULL_NEW_CHECK = false; // full validation (debug purposes) + // private static final boolean FULL_NEW_CHECK = false full validation (debug purposes) int mCurrentSize = 0; // current size, accessed by ArrayRow and LinearSystem diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/LinearSystem.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/LinearSystem.java index 8a8947afd..44f470065 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/LinearSystem.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/LinearSystem.java @@ -86,7 +86,7 @@ public class LinearSystem { public static Metrics sMetrics; private Row mTempGoal; - class ValuesRow extends ArrayRow { + static class ValuesRow extends ArrayRow { ValuesRow(Cache cache) { variables = new SolverVariableValues(this, cache); } @@ -328,13 +328,13 @@ public SolverVariable createExtraVariable() { return variable; } - private void addError(ArrayRow row) { - row.addError(this, SolverVariable.STRENGTH_NONE); - } - - private void addSingleError(ArrayRow row, int sign) { - addSingleError(row, sign, SolverVariable.STRENGTH_NONE); - } +// private void addError(ArrayRow row) +// row.addError(this, SolverVariable.STRENGTH_NONE); +// +// +// private void addSingleError(ArrayRow row, int sign) +// addSingleError(row, sign, SolverVariable.STRENGTH_NONE); +// void addSingleError(ArrayRow row, int sign, int strength) { String prefix = null; @@ -767,7 +767,7 @@ private int optimize(Row goal, boolean b) { System.out.println("\n****************************"); System.out.println("* OPTIMIZATION *"); System.out.println("* mNumColumns: " + mNumColumns); - System.out.println("* GOAL: " + goal); + System.out.println("* GOAL: " + goal + " " + b); System.out.println("****************************\n"); } @@ -1402,11 +1402,11 @@ public void addSynonym(SolverVariable a, SolverVariable b, int margin) { System.out.println("(S) -> " + a + " = " + b + (margin != 0 ? " + " + margin : "")); } if (b.mIsSynonym) { - margin += b.mSynonymDelta; + margin += (int) b.mSynonymDelta; b = mCache.mIndexedVariables[b.mSynonym]; } if (a.mIsSynonym) { - margin -= a.mSynonymDelta; + margin -= (int) a.mSynonymDelta; a = mCache.mIndexedVariables[a.mSynonym]; } else { a.setSynonym(this, b, 0); @@ -1441,11 +1441,11 @@ public ArrayRow addEquality(SolverVariable a, SolverVariable b, int margin, int + " " + getDisplayStrength(strength)); } if (b.mIsSynonym) { - margin += b.mSynonymDelta; + margin += (int) b.mSynonymDelta; b = mCache.mIndexedVariables[b.mSynonym]; } if (a.mIsSynonym) { - margin -= a.mSynonymDelta; + margin -= (int) a.mSynonymDelta; a = mCache.mIndexedVariables[a.mSynonym]; } else { a.setSynonym(this, b, margin); diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java index f6117ff38..7a03c6a28 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java @@ -207,6 +207,9 @@ public ArrayList getErrors() { return mErrors; } + @Override + public String getMessage() { return toString(); } + @Override public String toString() { return "IncorrectConstraintException: " + mErrors.toString(); diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java index cb5d1dc5f..e88af295c 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java @@ -35,7 +35,6 @@ * Utility class to encapsulate layout of a widget */ public class WidgetFrame { - private static final boolean OLD_SYSTEM = true; public ConstraintWidget widget = null; public int left = 0; public int top = 0; @@ -164,8 +163,8 @@ public static void interpolate(int parentWidth, if (start.visibility == ConstraintWidget.GONE) { // On visibility gone, keep the same size to do an alpha to zero - startX -= endWidth / 2f; - startY -= endHeight / 2f; + startX -= (int) (endWidth / 2f); + startY -= (int) (endHeight / 2f); startWidth = endWidth; startHeight = endHeight; if (Float.isNaN(startAlpha)) { @@ -176,8 +175,8 @@ public static void interpolate(int parentWidth, if (end.visibility == ConstraintWidget.GONE) { // On visibility gone, keep the same size to do an alpha to zero - endX -= startWidth / 2f; - endY -= startHeight / 2f; + endX -= (int) (startWidth / 2f); + endY -= (int) (startHeight / 2f); endWidth = startWidth; endHeight = startHeight; if (Float.isNaN(endAlpha)) { @@ -512,11 +511,11 @@ void parseCustom(CLElement custom) throws CLParsingException { String vStr = v.content(); if (vStr.matches("#[0-9a-fA-F]+")) { int color = Integer.parseInt(vStr.substring(1), 16); - setCustomAttribute(k.content(), TypedValues.Custom.TYPE_COLOR, color); + setCustomAttribute(name, TypedValues.Custom.TYPE_COLOR, color); } else if (v instanceof CLNumber) { - setCustomAttribute(k.content(), TypedValues.Custom.TYPE_FLOAT, v.getFloat()); + setCustomAttribute(name, TypedValues.Custom.TYPE_FLOAT, v.getFloat()); } else { - setCustomAttribute(k.content(), TypedValues.Custom.TYPE_STRING, vStr); + setCustomAttribute(name, TypedValues.Custom.TYPE_STRING, vStr); } } diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidget.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidget.java index 52fb00484..2547d346c 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidget.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidget.java @@ -739,11 +739,17 @@ private void serializeSize(StringBuilder ret, String type, int size, serializeAttribute(ret, "matchMin", matchConstraintMin, 0); serializeAttribute(ret, "matchDef", matchConstraintDefault, MATCH_CONSTRAINT_SPREAD); serializeAttribute(ret, "matchPercent", matchConstraintDefault, 1); + serializeAttribute(ret, "matchConstraintPercent", matchConstraintPercent, 1); + serializeAttribute(ret, "weight", weight, 1); + serializeAttribute(ret, "override", override, 1); + ret.append("},\n"); } /** - * @TODO: add description + * Serialize the anchors for JSON5 output + * @param ret StringBuilder to be populated + * @return the same string builder to alow chaining */ public StringBuilder serialize(StringBuilder ret) { ret.append("{\n"); @@ -1084,12 +1090,12 @@ public void setDebugSolverName(LinearSystem system, String name) { * @DoNotShow */ public void createObjectVariables(LinearSystem system) { - SolverVariable left = system.createObjectVariable(mLeft); - SolverVariable top = system.createObjectVariable(mTop); - SolverVariable right = system.createObjectVariable(mRight); - SolverVariable bottom = system.createObjectVariable(mBottom); + system.createObjectVariable(mLeft); + system.createObjectVariable(mTop); + system.createObjectVariable(mRight); + system.createObjectVariable(mBottom); if (mBaselineDistance > 0) { - SolverVariable baseline = system.createObjectVariable(mBaseline); + system.createObjectVariable(mBaseline); } } diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidgetContainer.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidgetContainer.java index a5ef177a0..3a3d958f3 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidgetContainer.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/ConstraintWidgetContainer.java @@ -449,7 +449,7 @@ public boolean addChildrenToSolver(LinearSystem system) { } } else { Optimizer.checkMatchParent(this, system, widget); - if (!(widget.addFirst())) { + if (!widget.addFirst()) { widget.addToSolver(system, optimize); } } @@ -758,7 +758,7 @@ public void layout() { && !(child instanceof Guideline) && !(child instanceof Barrier) && !(child instanceof VirtualLayout) - && !(child.isInVirtualLayout())) { + && !child.isInVirtualLayout()) { DimensionBehaviour widthBehavior = child.getDimensionBehaviour(HORIZONTAL); DimensionBehaviour heightBehavior = child.getDimensionBehaviour(VERTICAL); @@ -785,7 +785,7 @@ public void layout() { if (count > 2 && (originalHorizontalDimensionBehaviour == WRAP_CONTENT || originalVerticalDimensionBehaviour == WRAP_CONTENT) - && (Optimizer.enabled(mOptimizationLevel, Optimizer.OPTIMIZATION_GROUPING))) { + && Optimizer.enabled(mOptimizationLevel, Optimizer.OPTIMIZATION_GROUPING)) { if (Grouping.simpleSolvingPass(this, getMeasurer())) { if (originalHorizontalDimensionBehaviour == WRAP_CONTENT) { if (preW < getWidth() && preW > 0) { @@ -924,7 +924,7 @@ public void layout() { if (originalHorizontalDimensionBehaviour == WRAP_CONTENT) { if (getWidth() < maxX) { if (DEBUG_LAYOUT) { - System.out.println( + System.out.println( countSolve + "layout override width from " + getWidth() + " vs " + maxX); } setWidth(maxX); diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/Guideline.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/Guideline.java index b9e1794c1..e8157740b 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/Guideline.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/Guideline.java @@ -118,14 +118,30 @@ public String getType() { return "Guideline"; } + /** + * get the orientation VERTICAL or HORIZONTAL + * @return orientation + */ public int getOrientation() { return mOrientation; } + /** + * set the minimum position + * @param minimum + */ public void setMinimumPosition(int minimum) { mMinimumPosition = minimum; } + /** + * Get the Minimum Position + * @return the Minimum Position + */ + public int getMinimumPosition() { + return mMinimumPosition; + } + @Override public ConstraintAnchor getAnchor(ConstraintAnchor.Type anchorType) { switch (anchorType) { @@ -217,15 +233,16 @@ public void setFinalValue(int position) { mResolved = true; } + @Override public boolean isResolvedHorizontally() { return mResolved; } + @Override public boolean isResolvedVertically() { return mResolved; } - @Override public void addToSolver(LinearSystem system, boolean optimize) { if (LinearSystem.FULL_DEBUG) { diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/BasicMeasure.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/BasicMeasure.java index fe4e35100..928afd773 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/BasicMeasure.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/BasicMeasure.java @@ -206,11 +206,11 @@ public long solverMeasure(ConstraintWidgetContainer layout, boolean matchHeight = child.getVerticalDimensionBehaviour() == ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT; boolean ratio = matchWidth && matchHeight && child.getDimensionRatio() > 0; - if (child.isInHorizontalChain() && (ratio)) { + if (child.isInHorizontalChain() && ratio) { optimize = false; break; } - if (child.isInVerticalChain() && (ratio)) { + if (child.isInVerticalChain() && ratio) { optimize = false; break; } diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/DependencyGraph.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/DependencyGraph.java index 5e4622c16..03bd3f4f5 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/DependencyGraph.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/DependencyGraph.java @@ -45,6 +45,7 @@ public class DependencyGraph { private boolean mNeedRedoMeasures = true; private ConstraintWidgetContainer mContainer; private ArrayList mRuns = new ArrayList<>(); + private static final boolean DEBUG = false; // TODO: Unused, should we delete? private ArrayList mRunGroups = new ArrayList<>(); @@ -731,8 +732,9 @@ public void buildGraph(ArrayList runs) { } run.apply(); } - -// displayGraph(); + if (DEBUG) { + displayGraph(); + } } @@ -988,7 +990,7 @@ private String generateDisplayGraph(WidgetRun root, String content) { StringBuilder sb = new StringBuilder(content); if (!(root instanceof HelperReferences) && start.mDependencies.isEmpty() - && end.mDependencies.isEmpty() & start.mTargets.isEmpty() + && end.mDependencies.isEmpty() && start.mTargets.isEmpty() && end.mTargets.isEmpty()) { return content; } diff --git a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/WidgetGroup.java b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/WidgetGroup.java index 2d31d01c3..34dd23fec 100644 --- a/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/WidgetGroup.java +++ b/constraintlayout/core/src/main/java/androidx/constraintlayout/core/widgets/analyzer/WidgetGroup.java @@ -100,6 +100,8 @@ public void moveTo(int orientation, WidgetGroup widgetGroup) { if (DEBUG) { System.out.println("Move all widgets (" + this + ") from " + mId + " to " + widgetGroup.getId() + "(" + widgetGroup + ")"); + System.out.println("" + + "do not call "+ measureWrap( orientation, new ConstraintWidget())); } for (ConstraintWidget widget : mWidgets) { widgetGroup.add(widget); @@ -261,7 +263,7 @@ public void cleanup(ArrayList dependencyLists) { } - class MeasureResult { + static class MeasureResult { WeakReference mWidgetRef; int mLeft; int mTop;