From ecaf8069072e71db4bff94671e72764b211d6af1 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期四, 26 十月 2023 00:43:51 +0800 Subject: [PATCH] 功能完善 --- app/src/main/java/com/application/zhangshi_app_android/widget/Node.java | 93 +++++++++++++++++++++++++++++----------------- 1 files changed, 58 insertions(+), 35 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 47f0894..5c98ec3 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 @@ -1,6 +1,9 @@ package com.application.zhangshi_app_android.widget; +import android.content.Context; +import android.graphics.Color; import android.graphics.Path; +import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -9,12 +12,15 @@ import android.widget.TextView; import androidx.constraintlayout.utils.widget.ImageFilterView; +import androidx.core.content.res.ResourcesCompat; +import androidx.databinding.DataBindingUtil; import com.android.app_base.manager.AppManager; import com.android.app_base.utils.GlideUtil; import com.android.app_base.utils.ScreenSizeUtils; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.bean.HomeRootBean; +import com.application.zhangshi_app_android.databinding.ItemFamilyMemberBinding; import java.util.ArrayList; import java.util.LinkedList; @@ -27,10 +33,11 @@ * @desc */ public abstract class Node{ + protected Context context; protected HomeRootBean member;//鎴愬憳 protected Node parent;//鐖惰妭鐐� protected final List<Node> children = new ArrayList<>(); //瀛愯妭鐐� - + protected HomeMindMapLayout.OnItemClickListener onItemClickListener; protected static final int pathLength = ScreenSizeUtils.dip2px(20);// 杩炵嚎鐨勪竴鑸暱搴� protected static final int cornerRadius = ScreenSizeUtils.dip2px(5); // 杩炵嚎鎷愯 鍦嗚鍗婂緞 @@ -55,20 +62,20 @@ protected final List<Path> forkPathList = new ArrayList<>();//鍒嗗弶杩炵嚎 protected final List<View> viewList = new ArrayList<>(); - public Node(HomeRootBean member){ + public Node(Context context,HomeRootBean member){ + this.context = context; this.member = member; if (member != null) { // 閫掑綊鍒涘缓瀛愯妭鐐� if (member.getChildList() != null && member.getChildList().size() > 0) { - // 鎵�鏈夊彲瑙佺殑瀛愯妭鐐归渶瑕佺殑瀹介珮鎬诲拰 for (HomeRootBean child : member.getChildList()) { // 鏍规嵁鏄惁鏈夐厤鍋跺垱寤轰笉鍚岀殑鑺傜偣 if (child != null) { Node node; if (child.getSpouse() != null) { - node = new DoubleNode(child); + node = new DoubleNode(context,child); } else { - node = new SimpleNode(child); + node = new SimpleNode(context,child); } node.parent = this; children.add(node); @@ -96,7 +103,7 @@ * 閫掑綊璁剧疆鎵�鏈夎妭鐐圭殑浣嶇疆 * @param topNode 椤堕儴鑺傜偣锛岃繖棰楄妭鐐规爲鐨勬渶涓婅竟鐨勮妭鐐� * @param rootNode 鏍硅妭鐐癸紝杩欓鑺傜偣鏍戠殑鏍硅妭鐐� - * startNode 蹇呴』鏄� topNode 绁栧厛鑺傜偣 + * rootNode 蹇呴』鏄� topNode 绁栧厛鑺傜偣 * @param x 鏁撮鑺傜偣鏍戠殑x鍧愭爣 * @param y 鏁撮鑺傜偣鏍戠殑y鍧愭爣 */ @@ -185,39 +192,51 @@ // 璁剧疆瀵瑰簲绫诲瀷鑺傜偣鐨勪綅缃� 鐢卞瓙绫诲疄鐜� protected abstract void setViewPosition(int x, int centerY); + // 璁剧疆鍒嗗弶鑺傜偣鐨勪綅缃� 鐢卞瓙绫诲疄鐜�,蹇呴』鍏坰etViewPosition鎵嶈兘璋冪敤 protected abstract void setForkYList(List<Integer> yList); - protected View createItemView(HomeRootBean bean) { + /** + * 鍒涘缓鑺傜偣item瑙嗗浘 + * @param bean 鑺傜偣鏁版嵁 + * @param isFamily 鏄惁鏄湰瀹舵垚鍛� + * @return 鑺傜偣item瑙嗗浘 + */ + protected View createItemView(HomeRootBean bean,boolean isFamily){ // 浣跨敤甯冨眬濉厖鍣ㄥ姞杞借妭鐐瑰竷灞� - LayoutInflater inflater = LayoutInflater.from(AppManager.getAppManager().currentActivity()); - View familyMemberView = inflater.inflate(R.layout.item_family_member, null, false); - familyMemberView.measure(View.MeasureSpec.makeMeasureSpec((1 << 30) - 1, View.MeasureSpec.AT_MOST), - View.MeasureSpec.makeMeasureSpec((1 << 30) - 1, View.MeasureSpec.AT_MOST)); + LayoutInflater inflater = LayoutInflater.from(context); + ItemFamilyMemberBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_family_member, null, false); + + View familyMemberView = binding.getRoot(); // 闃叉addView鏃讹紝鎵�鏈夎繖閲屽垱寤虹殑view鐨勯珮瀹借闄愬埗鎴愪竴鏍风殑 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); familyMemberView.setLayoutParams(params); - if (bean == null) { - return familyMemberView; + familyMemberView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (onItemClickListener != null){ + onItemClickListener.onItemClick(familyMemberView,bean,isFamily); + } + } + }); + if (bean != null) { + binding.setBean(bean); + if (!isFamily){ + binding.tvName.setTextColor(Color.parseColor("#FF8296C5")); + //鑾峰彇瀛椾綋 + Typeface typeface = ResourcesCompat.getFont(context, com.android.app_base.R.font.roboto_regular); + binding.tvName.setTypeface(typeface); + } + // 浣跨敤databinding鏃犳硶娴嬮噺view鐨勫甫鍐呭鐨勫噯纭楂橈紝鎵�浠ヨ繖閲屾墜鍔ㄨ缃竴涓� + binding.tvGeneration.setText(bean.getIdentity()+""); } - // 鑾峰彇甯冨眬涓殑缁勪欢 - TextView tv_generation = familyMemberView.findViewById(R.id.tv_generation); - ImageFilterView iv_avatar = familyMemberView.findViewById(R.id.iv_avatar); - TextView tv_name = familyMemberView.findViewById(R.id.tv_name); - - // 璁剧疆鑺傜偣鍐呭 - tv_generation.setText(String.valueOf(bean.getIdentity())); - if (bean.getImg() != null) { - GlideUtil.loadImage(bean.getImg(), iv_avatar); - } - tv_name.setText(bean.getNickName()); - tv_name.setSelected(true); + familyMemberView.measure(View.MeasureSpec.makeMeasureSpec((1 << 30) - 1, View.MeasureSpec.AT_MOST), + View.MeasureSpec.makeMeasureSpec((1 << 30) - 1, View.MeasureSpec.AT_MOST)); return familyMemberView; } - protected ImageView createExpandIconView() { - ImageView expandView = new ImageView(AppManager.getAppManager().currentActivity()); + ImageView expandView = new ImageView(context); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(pathLength,pathLength); expandView.setLayoutParams(params); int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(pathLength, View.MeasureSpec.EXACTLY); @@ -447,15 +466,11 @@ } // 鑾峰彇 姣忎釜 itemView 鐨勫搴� - public int getItemViewWidth(){ - View itemView = createItemView(null); - return itemView.getMeasuredWidth(); - } + public abstract int getItemViewWidth(); + // 鑾峰彇 姣忎釜 itemView 鐨勯珮搴� - public int getItemViewHeight(){ - View itemView = createItemView(null); - return itemView.getMeasuredHeight(); - } + public abstract int getItemViewHeight(); + //鑾峰彇灞曞紑鎸夐挳鐨勫搴� public int getExpandIconWidth(){ ImageView expandIconView = createExpandIconView(); @@ -466,4 +481,12 @@ public int getViewWidth(){ return viewBottom - viewTop; } + + public void setOnItemClickListener(HomeMindMapLayout.OnItemClickListener onItemClickListener) { + this.onItemClickListener = onItemClickListener; + //鎵�鏈夌殑瀛愯妭鐐逛篃璁剧疆 + for (Node child : children) { + child.setOnItemClickListener(onItemClickListener); + } + } } -- Gitblit v1.9.1