简书链接:数据结构的比较层级类似html的优先级比较
文章字数:189,阅读全文大约需要1分钟
近开发安全键盘的时候发现有一个矛盾的问题,如果都设置了边框 ,也设置了阴影的情况下,到底是要前者还是后者,这就需要比较了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| /// <summary> /// 有这么一种情况 shadowInfo 和borderinfo都设置了, 非同级别的情况下,但是级别谁来from进,就应该选谁,咋办呢? 数字越大越小等级越大 /// </summary> 返回负数 代表前者大 也就是最接近 原始等级,返回 正数代表后者大 /// <param name="node1From"></param> /// <param name="nodeFirst"></param> /// <param name="nodeSecond"></param> public static int levelCompare(INode nodeFrom, INode nodeFirst, INode nodeSecond) {
INode currentNode = nodeFrom; int nodeLevelFirst = 0; int nodeLevelSecond = 0; bool firstHasFound = false; bool secondHasFound = false; while (currentNode != null) { if (nodeFirst == currentNode) { firstHasFound = true; } else { nodeLevelFirst++; } if (nodeSecond == currentNode) { secondHasFound = true; } else { nodeLevelSecond++; }
if (firstHasFound && secondHasFound) { break; }
currentNode = nodeFrom.getParent();
} return nodeLevelFirst = nodeLevelSecond;
}
|
代码2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| public JObjectTarget<ShadowInfo> getShadowInfoTarget() { string key = "shadow"; if (!JSONUtil.jsonKeyIsExist(jObject, key)) {
parentExtend = getParentKey(); if (parentExtend != null) { JObjectTarget<ShadowInfo> target = parentExtend.getShadowInfoTarget(); if (target == null) { return null; } target.setNode(parentExtend); return target; } else { //jObject[key] = JSONCreateUtil.createShadowInfo(); //JObjectTarget<ShadowInfo> target = EntryFactory.createJObjectTarget<ShadowInfo>(jObject, key); //target.setNode(parentExtend); //return target;//不允许自动设置。 return null; }
} else { JObjectTarget<ShadowInfo> target = EntryFactory.createJObjectTarget<ShadowInfo>(jObject, key); target.setNode(this); return target; } }
public JObjectTarget<BorderInfo> getBorderInfoTarget() { string key = "border"; if (!JSONUtil.jsonKeyIsExist(jObject, key)) {
parentExtend = getParentKey(); if (parentExtend != null) { JObjectTarget<BorderInfo> target = parentExtend.getBorderInfoTarget(); if (target == null) { return null; } target.setNode(parentExtend); return target; } else { //jObject[key] = JSONCreateUtil.createShadowInfo(); //JObjectTarget<BorderInfo> target = EntryFactory.createJObjectTarget<BorderInfo>(jObject, key); //target.setNode(parentExtend); //return target; return null;//不允许自动设置。 }
} else { JObjectTarget<BorderInfo> target = EntryFactory.createJObjectTarget<BorderInfo>(jObject, key); target.setNode(this); return target; } }
|
代码三
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| ShadowInfo shadowInfo = objKey.getShadowInfo();
BorderInfo borderInfo = objKey.getBorderInfo();
int useBorderFlag = -1; if (shadowInfo == null && borderInfo == null) { useBorderFlag = -1; } else if (shadowInfo != null && borderInfo != null) {
if (ViewUtil.levelCompare(objKey, shadowInfo.node, borderInfo.node) <= 0) { useBorderFlag = 0; } else { useBorderFlag = 1; }
} else if (shadowInfo == null) { useBorderFlag = 1; } else if (borderInfo == null) { useBorderFlag = 0; }
if (useBorderFlag == 0) { //TODO keyButton.FlatAppearance.BorderSize = 0;
} else if (useBorderFlag == 1) { keyButton.FlatAppearance.BorderSize = borderInfo.getSize().getIntValue(); string borderColor = objKey.getFontColorTarget().getStringValue("#ff0000"); keyButton.FlatAppearance.BorderColor = AppUtil.parseColor(borderColor);
}
|