Browse Source

修改曲目声部显示逻辑,合奏显示合奏

Pq 7 months ago
parent
commit
ebeacaa35f

+ 75 - 0
BaseLibrary/src/main/java/com/cooleshow/base/constanst/MusicSubjectType.java

@@ -0,0 +1,75 @@
+package com.cooleshow.base.constanst;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.cooleshow.base.R;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * Author by pq, Date on 2024/7/19.
+ */
+public enum MusicSubjectType {
+    SINGLE("SINGLE", "单曲"),
+    CONCERT("CONCERT", "合奏");
+
+    private String id;
+    private String des;
+
+    MusicSubjectType(String id, String des) {
+        this.id = id;
+        this.des = des;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getDes() {
+        return des;
+    }
+
+    public void setDes(String des) {
+        this.des = des;
+    }
+
+
+    public static ArrayList<View> getSubjectTipView(Context context, ViewGroup viewGroup, String subjectType, String subjectIds) {
+        ArrayList<View> views = new ArrayList<>();
+        try{
+            if (TextUtils.equals(subjectType, CONCERT.getId())) {
+                //合奏
+                views.add(getTextView(context, viewGroup, CONCERT.getDes()));
+            } else {
+                //单曲
+                String[] split = subjectIds.split(",");
+                if (split != null && split.length > 0) {
+                    for (int i = 0; i < split.length; i++) {
+                        views.add(getTextView(context, viewGroup, split[i]));
+                    }
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return views;
+    }
+
+    public static TextView getTextView(Context context, ViewGroup viewGroup, String text) {
+        TextView textView = (TextView) LayoutInflater.from(context).inflate(com.cooleshow.base.R.layout.view_subject_item_layout, viewGroup, false);
+        textView.setText(text);
+        textView.setTextColor(context.getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+        textView.setBackgroundResource(com.cooleshow.base.R.drawable.shape_effbf9_9dp);
+        return textView;
+    }
+}

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/UiUtils.java

@@ -15,6 +15,7 @@ import android.text.style.ForegroundColorSpan;
 import android.text.style.ImageSpan;
 import android.text.style.TextAppearanceSpan;
 import android.util.DisplayMetrics;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;

+ 16 - 7
chatModule/src/main/java/com/cooleshow/chatmodule/adapter/MineScoreAdapter.java

@@ -9,6 +9,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
 import com.chad.library.adapter.base.module.LoadMoreModule;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.constanst.MusicSubjectType;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.chatmodule.R;
 import com.cooleshow.chatmodule.bean.MusicSheetListBean;
@@ -60,17 +61,25 @@ public class MineScoreAdapter extends BaseQuickAdapter<MusicSheetListBean.RowsBe
         tv_author_name.setText(item.composer);
         GlideUtils.INSTANCE.loadImage(getContext(), item.addUserAvatar, im_header, R.drawable.tc_icon_teacher_default_head);
         tv_teacher_name.setText(item.addName);
-        if (!TextUtils.isEmpty(item.musicSheetName)) {
+        //是否是合奏
+        boolean isConcert = TextUtils.equals(item.getMusicSheetType(), MusicSubjectType.CONCERT.getId());
+
+        if (!TextUtils.isEmpty(item.subjectNames)) {
             rv_mark.setVisibility(View.VISIBLE);
             List<String> markList = new ArrayList<>();
-            if (item.musicSheetName.contains(",")) {
-                String[] split = item.musicSheetName.split(",");
-                for (String s : split) {
-                    markList.add(s);
+            if(isConcert){
+                markList.add(MusicSubjectType.CONCERT.getDes());
+            }else{
+                if (item.subjectNames.contains(",")) {
+                    String[] split = item.subjectNames.split(",");
+                    for (String s : split) {
+                        markList.add(s);
+                    }
+                } else {
+                    markList.add(item.subjectNames);
                 }
-            } else {
-                markList.add(item.musicSheetName);
             }
+
             LinearLayoutManager manager = new LinearLayoutManager(getContext());
             manager.setOrientation(LinearLayoutManager.HORIZONTAL);
             rv_mark.setLayoutManager(manager);

+ 11 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/bean/MusicSheetListBean.java

@@ -106,7 +106,15 @@ public class MusicSheetListBean {
         public int userId;
         public String xmlFileUrl;
         public boolean isSelect;
+        private String musicSheetType;
 
+        public String getMusicSheetType() {
+            return musicSheetType;
+        }
+
+        public void setMusicSheetType(String musicSheetType) {
+            this.musicSheetType = musicSheetType;
+        }
 
         @Override
         public int describeContents() {
@@ -153,6 +161,7 @@ public class MusicSheetListBean {
             dest.writeInt(this.userId);
             dest.writeString(this.xmlFileUrl);
             dest.writeByte(this.isSelect ? (byte) 1 : (byte) 0);
+            dest.writeString(this.musicSheetType);
         }
 
         public void readFromParcel(Parcel source) {
@@ -194,6 +203,7 @@ public class MusicSheetListBean {
             this.userId = source.readInt();
             this.xmlFileUrl = source.readString();
             this.isSelect = source.readByte() != 0;
+            this.musicSheetType = source.readString();
         }
 
         public RowsBean() {
@@ -238,6 +248,7 @@ public class MusicSheetListBean {
             this.userId = in.readInt();
             this.xmlFileUrl = in.readString();
             this.isSelect = in.readByte() != 0;
+            this.musicSheetType = in.readString();
         }
 
         public static final Creator<RowsBean> CREATOR = new Creator<RowsBean>() {

+ 7 - 2
chatModule/src/main/java/com/cooleshow/chatmodule/widget/CustomChatInputMusicExtension.java

@@ -7,6 +7,7 @@ import android.os.Parcelable;
 import android.text.TextUtils;
 
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.constanst.MusicSubjectType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.GsonUtils;
 import com.cooleshow.base.utils.LOG;
@@ -76,7 +77,7 @@ public class CustomChatInputMusicExtension extends ServiceInitializer implements
                         TUICore.startActivityForResult(fragment.getActivity(), intent, new ActivityResultCallback<ActivityResult>() {
                             @Override
                             public void onActivityResult(ActivityResult result) {
-                                if(result == null){
+                                if (result == null) {
                                     return;
                                 }
                                 int resultCode = result.getResultCode();
@@ -104,7 +105,11 @@ public class CustomChatInputMusicExtension extends ServiceInitializer implements
         TUIChatShareMusicMessageBean messageBean = new TUIChatShareMusicMessageBean();
         messageBean.setSongName(item.musicSheetName);
         messageBean.setSongAuth(item.composer);
-        messageBean.setMusicTagNames(item.musicSheetName);
+        if (TextUtils.equals(item.getMusicSheetType(), MusicSubjectType.CONCERT.getId())) {
+            messageBean.setMusicTagNames(MusicSubjectType.CONCERT.getDes());
+        } else {
+            messageBean.setMusicTagNames(item.subjectNames);
+        }
         messageBean.setTeacherAvatar(item.addUserAvatar);
         messageBean.setTeacherName(item.addName);
         messageBean.setSongId(item.id + "");

+ 9 - 0
student/src/main/java/com/cooleshow/student/bean/HomeHotMusicSheetBean.java

@@ -117,5 +117,14 @@ public class HomeHotMusicSheetBean {
         public String url;
         public String userId;
         public String xmlFileUrl;
+        private String musicSheetType;
+
+        public String getMusicSheetType() {
+            return musicSheetType;
+        }
+
+        public void setMusicSheetType(String musicSheetType) {
+            this.musicSheetType = musicSheetType;
+        }
     }
 }

+ 12 - 9
student/src/main/java/com/cooleshow/student/widgets/HomeHotMusicSheetItemView.java

@@ -14,6 +14,7 @@ import android.widget.TextView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.MusicSubjectType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.MusicSheetUtils;
 import com.cooleshow.base.utils.SizeUtils;
@@ -22,6 +23,8 @@ import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.student.R;
 import com.cooleshow.student.bean.HomeHotMusicSheetBean;
 
+import java.util.ArrayList;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
@@ -97,12 +100,15 @@ public class HomeHotMusicSheetItemView extends FrameLayout {
 
 
         mLlMusicSubject.removeAllViews();
-        if (!TextUtils.isEmpty(data.subjectNames)) {
-            String[] split = data.subjectNames.split(",");
-            if (split != null && split.length > 0) {
-                for (int i = 0; i < split.length; i++) {
-                    createSubjectView(split[i]);
+        ArrayList<View> subjectTipView = MusicSubjectType.getSubjectTipView(getContext(), mLlMusicSubject, data.getMusicSheetType(), data.subjectNames);
+        if (subjectTipView.size() > 0) {
+            for (int i = 0; i < subjectTipView.size(); i++) {
+                View view = subjectTipView.get(i);
+                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+                if (mLlMusicSubject.getChildCount() >= 1) {
+                    params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
                 }
+                mLlMusicSubject.addView(view, params);
             }
         }
 
@@ -110,7 +116,7 @@ public class HomeHotMusicSheetItemView extends FrameLayout {
         mIvGoodTag.setVisibility(TextUtils.equals(data.exquisiteFlag, "1") ? View.VISIBLE : View.GONE);
 
         //专辑曲目标记
-        MusicSheetUtils.addAlbumTag(data.albumNums,mIvAlbumTag);
+        MusicSheetUtils.addAlbumTag(data.albumNums, mIvAlbumTag);
     }
 
     private void createSubjectView(String text) {
@@ -119,9 +125,6 @@ public class HomeHotMusicSheetItemView extends FrameLayout {
         textView.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
         textView.setBackgroundResource(com.cooleshow.base.R.drawable.shape_effbf9_9dp);
         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        if (mLlMusicSubject.getChildCount() >= 1) {
-            params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
-        }
         mLlMusicSubject.addView(textView, params);
     }
 

+ 13 - 3
teacher/src/main/java/com/cooleshow/teacher/adapter/HomePageSheetMusicAdapter.java

@@ -14,6 +14,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
 import com.chad.library.adapter.base.module.LoadMoreModule;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.constanst.MusicSubjectType;
 import com.cooleshow.base.constanst.SheetMusicConstants;
 import com.cooleshow.base.presenter.view.BaseView;
 import com.cooleshow.base.utils.GlideUtils;
@@ -23,6 +24,8 @@ import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
 
+import java.util.ArrayList;
+
 import androidx.annotation.NonNull;
 import androidx.constraintlayout.widget.ConstraintLayout;
 
@@ -54,9 +57,16 @@ public class HomePageSheetMusicAdapter extends BaseQuickAdapter<HomePageSheetMus
         try {
             LinearLayout ll_subject_container = holder.getView(R.id.ll_music_subject);
             ll_subject_container.removeAllViews();
-            String[] subjectNames = UiUtils.splitSubjectName(bean.subjectNames);
-            for (int i = 0; i < subjectNames.length; i++) {
-                createSubjectView(ll_subject_container, subjectNames[i]);
+            ArrayList<View> subjectTipView = MusicSubjectType.getSubjectTipView(getContext(), ll_subject_container, bean.getMusicSheetType(), bean.subjectNames);
+            if (subjectTipView.size() > 0) {
+                for (int i = 0; i < subjectTipView.size(); i++) {
+                    View view = subjectTipView.get(i);
+                    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+                    if (ll_subject_container.getChildCount() >= 1) {
+                        params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
+                    }
+                    ll_subject_container.addView(view, params);
+                }
             }
         } catch (Exception e) {
             e.printStackTrace();

+ 12 - 19
teacher/src/main/java/com/cooleshow/teacher/adapter/MineScoreAdapter.java

@@ -20,6 +20,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
 import com.chad.library.adapter.base.module.LoadMoreModule;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.constanst.MusicSubjectType;
 import com.cooleshow.base.utils.GlideUtils;
 import com.cooleshow.base.utils.MusicSheetUtils;
 import com.cooleshow.base.utils.SizeUtils;
@@ -112,19 +113,22 @@ public class MineScoreAdapter extends BaseQuickAdapter<MusicSheetListBean.RowsBe
 
         //subject
         ll_music_subject.removeAllViews();
-        if (!TextUtils.isEmpty(item.subjectNames)) {
+
+        ArrayList<View> subjectTipView = MusicSubjectType.getSubjectTipView(getContext(), ll_music_subject, item.getMusicSheetType(), item.subjectNames);
+        if (subjectTipView.size() > 0) {
             ll_music_subject.setVisibility(View.VISIBLE);
-            if (!TextUtils.isEmpty(item.subjectNames)) {
-                String[] split = item.subjectNames.split(",");
-                if (split != null && split.length > 0) {
-                    for (int i = 0; i < split.length; i++) {
-                        createSubjectView(ll_music_subject, split[i]);
-                    }
+            for (int i = 0; i < subjectTipView.size(); i++) {
+                View view = subjectTipView.get(i);
+                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+                if (ll_music_subject.getChildCount() >= 1) {
+                    params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
                 }
+                ll_music_subject.addView(view, params);
             }
-        } else {
+        }else{
             ll_music_subject.setVisibility(View.GONE);
         }
+
         View view_line = helper.getView(R.id.view_line);
         int position = helper.getLayoutPosition();
         int size = getData().size();
@@ -154,17 +158,6 @@ public class MineScoreAdapter extends BaseQuickAdapter<MusicSheetListBean.RowsBe
         MusicSheetUtils.addAlbumTag(item.albumNums,iv_album_tag);
     }
 
-    private void createSubjectView(ViewGroup parent, String text) {
-        TextView textView = (TextView) LayoutInflater.from(getContext()).inflate(com.cooleshow.base.R.layout.view_subject_item_layout, parent, false);
-        textView.setText(text);
-        textView.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
-        textView.setBackgroundResource(com.cooleshow.base.R.drawable.shape_effbf9_9dp);
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-        if (parent.getChildCount() >= 1) {
-            params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
-        }
-        parent.addView(textView, params);
-    }
 
     @NonNull
     @Override

+ 9 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/HomeHotMusicSheetBean.java

@@ -117,5 +117,14 @@ public class HomeHotMusicSheetBean {
         public String url;
         public String userId;
         public String xmlFileUrl;
+        private String musicSheetType;
+
+        public String getMusicSheetType() {
+            return musicSheetType;
+        }
+
+        public void setMusicSheetType(String musicSheetType) {
+            this.musicSheetType = musicSheetType;
+        }
     }
 }

+ 9 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/HomePageSheetMusicListBean.java

@@ -200,5 +200,14 @@ public class HomePageSheetMusicListBean {
         public String exquisiteFlag;//精品标志(0:否;1:是)
         public String paymentType;
         public int albumNums;//是否是专辑曲目标记,大于0既是
+        private String musicSheetType;
+
+        public String getMusicSheetType() {
+            return musicSheetType;
+        }
+
+        public void setMusicSheetType(String musicSheetType) {
+            this.musicSheetType = musicSheetType;
+        }
     }
 }

+ 9 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MusicSheetListBean.java

@@ -106,5 +106,14 @@ public class MusicSheetListBean {
         public String exquisiteFlag;//精品标志(0:否;1:是)
         public String paymentType;
         public int albumNums;//是否是专辑曲目标记
+        private String musicSheetType;
+
+        public String getMusicSheetType() {
+            return musicSheetType;
+        }
+
+        public void setMusicSheetType(String musicSheetType) {
+            this.musicSheetType = musicSheetType;
+        }
     }
 }

+ 11 - 5
teacher/src/main/java/com/cooleshow/teacher/widgets/HomeHotMusicSheetItemView.java

@@ -14,6 +14,7 @@ import android.widget.TextView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.MusicSubjectType;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.utils.MusicSheetUtils;
 import com.cooleshow.base.utils.SizeUtils;
@@ -22,6 +23,8 @@ import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.teacher.R;
 import com.cooleshow.teacher.bean.HomeHotMusicSheetBean;
 
+import java.util.ArrayList;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
@@ -93,12 +96,15 @@ public class HomeHotMusicSheetItemView extends FrameLayout {
         }
 
         mLlMusicSubject.removeAllViews();
-        if (!TextUtils.isEmpty(data.subjectNames)) {
-            String[] split = data.subjectNames.split(",");
-            if (split != null && split.length > 0) {
-                for (int i = 0; i < split.length; i++) {
-                    createSubjectView(split[i]);
+        ArrayList<View> subjectTipView = MusicSubjectType.getSubjectTipView(getContext(), mLlMusicSubject, data.getMusicSheetType(), data.subjectNames);
+        if (subjectTipView.size() > 0) {
+            for (int i = 0; i < subjectTipView.size(); i++) {
+                View view = subjectTipView.get(i);
+                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+                if (mLlMusicSubject.getChildCount() >= 1) {
+                    params.setMargins(SizeUtils.dp2px(4), 0, 0, 0);
                 }
+                mLlMusicSubject.addView(view, params);
             }
         }