From e6014ef123350d5c0cadabe9c18e26b3d5a3c729 Mon Sep 17 00:00:00 2001
From: guoshen <3129367635@qq.com>
Date: 星期六, 29 六月 2024 15:41:25 +0800
Subject: [PATCH] Revert "Initial commit"
---
app/src/main/java/com/application/zhangshi_app_android/widget/Node.java | 53 +++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 41 insertions(+), 12 deletions(-)
diff --git a/app/src/main/java/com/application/zhangshi_app_android/widget/Node.java b/app/src/main/java/com/application/zhangshi_app_android/widget/Node.java
index 5c98ec3..26f2acc 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/widget/Node.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/widget/Node.java
@@ -16,6 +16,7 @@
import androidx.databinding.DataBindingUtil;
import com.android.app_base.manager.AppManager;
+import com.android.app_base.manager.UserManager;
import com.android.app_base.utils.GlideUtil;
import com.android.app_base.utils.ScreenSizeUtils;
import com.application.zhangshi_app_android.R;
@@ -95,7 +96,7 @@
if (this.parent!=null){
throw new RuntimeException("鍙兘鍒濆鍖栨牴鑺傜偣");
}
- //鏍规嵁鍙鎬ф壘鍒版渶鍚庝竴涓涓�瀛愯妭鐐癸紝鍗虫渶涓婅竟鐨勮妭鐐�
+ //鏍规嵁鍙鎬ф壘鍒版渶鍚庝竴涓涓�瀛愯妭鐐癸紝鍗虫渶鍙充笂杈圭殑鑺傜偣
setViewPositionRecursion(getVisibleTopNode(), this,x,y);
}
@@ -115,12 +116,17 @@
}
//鍥犱负 y 鏄暣棰楄妭鐐规爲鐨剏鍧愭爣锛屾甯告儏鍐典笅锛寉閮戒細鏄� 椤堕儴鑺傜偣topNode 鐨剏鍧愭爣
- //浣嗘槸 鏈変竴绉嶆儏鍐碉紝灏辨槸椤堕儴鑺傜偣topNode鍒氬ソ鏄牴鑺傜偣rootNode鐨勫敮涓�瀛愯妭鐐癸紝涓攖opNode娌℃湁閰嶅伓锛屾鏃秚opNode鐨勯珮搴︽瘮rootNode鐨勯珮搴﹀皬锛屾墍浠ユ鏃剁殑y鏄痳ootNode鐨剏鍧愭爣
- int centerY;
- if (rootNode.height >= topNode.height && rootNode == topNode.parent && rootNode.children.size() == 1){
- centerY = y + rootNode.getAllVisibleHeight()/2;
- }else {
- centerY = y + topNode.getAllVisibleHeight()/2;
+ int centerY = y + topNode.getAllVisibleHeight()/2;
+ //浣嗘槸 鏈変竴绉嶆儏鍐碉紝灏辨槸椤堕儴鑺傜偣topNode娌℃湁閰嶅伓锛屽鏋渢opNode鐨勭鍏堣妭鐐规湁閰嶅伓锛屼笖娌℃湁澶氬瓙瀛欙紝姝ゆ椂topNode鐨勯珮搴︽瘮鏈夐厤鍋剁殑绁栧厛鑺傜偣鐨勯珮搴﹀皬锛屾墍浠ユ鏃剁殑y鏄珮搴︽渶楂樼殑绁栧厛鑺傜偣鐨剏鍧愭爣
+ if (topNode instanceof SimpleNode){
+ Node tempNode = topNode.parent;
+ while (tempNode.children.size() == 1){
+ if (tempNode.height > topNode.height){
+ centerY = y + tempNode.getAllVisibleHeight()/2;
+ break;
+ }
+ tempNode = tempNode.parent;
+ }
}
topNode.setViewPosition(x + topNode.getToSpecifyNodeWidth(rootNode) - topNode.width, centerY);
// 鏍规嵁topNode鐨勪綅缃紝閫掑綊璁剧疆鎵�鏈夎妭鐐圭殑浣嶇疆
@@ -132,7 +138,7 @@
for (Node child : parentNode.children) {
if (child == node) {
centerYList.add(child.centerY);
- currentBottom = currentBottom + node.getVisibleTopNode().top + node.getAllVisibleHeight();
+ currentBottom = currentBottom + child.getVisibleTop() + child.getAllVisibleHeight();
continue;
}
if (!child.isVisible){
@@ -147,7 +153,7 @@
//鍙栨渶澶у�笺�佹渶灏忓�� 鍜� 鐨勪腑闂�
int totalCenterY = 0;
- if (centerYList.size() > 0) {
+ if (centerYList.size() > 1) {
int min = centerYList.get(0);
int max = centerYList.get(0);
for (int i = 1; i < centerYList.size(); i++) {
@@ -160,6 +166,8 @@
}
}
totalCenterY = (min + max) / 2;
+ }else{
+ totalCenterY = centerYList.get(0);
}
if (parentNode.children.size() > 1) {
@@ -173,7 +181,21 @@
node = parentNode;
}
}
+ //鑾峰彇 浠ュ綋鍓嶈妭鐐逛负鏍硅妭鐐圭殑鏍� 鐨勬渶椤堕儴鐨剏鍧愭爣
+ public int getVisibleTop(){
+ if (!isVisible){
+ return 0;
+ }
+ if (!isExpand){
+ return top;
+ }
+ if (children.size() > 0){
+ return Math.min(top,children.get(0).getVisibleTop());
+ }
+ return top;
+ }
+ //鑾峰彇 浠ュ綋鍓嶈妭鐐逛负鏍硅妭鐐圭殑鏍� 鐨勬渶娣变竴鑺傜偣
public Node getVisibleTopNode(){
Node topNode;
if (!isVisible){
@@ -227,9 +249,14 @@
//鑾峰彇瀛椾綋
Typeface typeface = ResourcesCompat.getFont(context, com.android.app_base.R.font.roboto_regular);
binding.tvName.setTypeface(typeface);
+
}
// 浣跨敤databinding鏃犳硶娴嬮噺view鐨勫甫鍐呭鐨勫噯纭楂橈紝鎵�浠ヨ繖閲屾墜鍔ㄨ缃竴涓�
binding.tvGeneration.setText(bean.getIdentity()+"");
+ if (bean.getNickName().equals(UserManager.getInstance().getUserName())){
+ binding.cvContainer.setCardBackgroundColor(Color.parseColor("#FFCEE4FD"));
+ binding.ivMyself.setVisibility(View.VISIBLE);
+ }
}
familyMemberView.measure(View.MeasureSpec.makeMeasureSpec((1 << 30) - 1, View.MeasureSpec.AT_MOST),
View.MeasureSpec.makeMeasureSpec((1 << 30) - 1, View.MeasureSpec.AT_MOST));
@@ -411,13 +438,15 @@
}
if (node.children.size() == 0){
return node.height;
- }else {
+ } else {
int heightSum = 0;
for (Node child : node.children) {
- if (getNodeTreeHeightRecursion(child,considerVisible)!=0){
+ int childHeight = getNodeTreeHeightRecursion(child,considerVisible);
+ //濡傛灉鏈夊涓瓙鑺傜偣涓斿瓙鑺傜偣鏈夐珮搴︼紝閭d箞瀛愯妭鐐逛箣闂磋繕鏈夌珫鐩撮棿闅�
+ if (node.children.size() > 1 && childHeight > 0){
heightSum += verticalMargin;
}
- heightSum += getNodeTreeHeightRecursion(child,considerVisible);
+ heightSum += childHeight;
}
//瀛愯妭鐐规瘡涓や釜涔嬮棿杩樻湁绔栫洿闂撮殧
return Math.max(node.height,heightSum);
--
Gitblit v1.9.1