Sheffi před 5 měsíci
rodič
revize
04993a201a
32 změnil soubory, kde provedl 1838 přidání a 430 odebrání
  1. 4 0
      ybvideoandroid/main/src/main/AndroidManifest.xml
  2. 82 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/activity/ImMsgInteractionActivity.java
  3. 132 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/UserAvatarAdapter.java
  4. 128 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/ImMsgAtFragment.java
  5. 130 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/ImMsgCommentFragment.java
  6. 131 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/ImMsgZanFragment.java
  7. 4 2
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java
  8. 266 152
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java
  9. 70 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopOneClickViewHolder.java
  10. 70 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopRuralViewHolder.java
  11. 70 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopUrbanViewHolder.java
  12. 272 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopViewHolder.java
  13. 32 0
      ybvideoandroid/main/src/main/res/layout/activity_im_msg_interaction.xml
  14. 13 0
      ybvideoandroid/main/src/main/res/layout/fragment_im_msg_at.xml
  15. 13 0
      ybvideoandroid/main/src/main/res/layout/fragment_im_msg_comment.xml
  16. 13 0
      ybvideoandroid/main/src/main/res/layout/fragment_im_msg_zan.xml
  17. 29 0
      ybvideoandroid/main/src/main/res/layout/item_user_avatar.xml
  18. 14 14
      ybvideoandroid/main/src/main/res/layout/view_main_home.xml
  19. 9 9
      ybvideoandroid/main/src/main/res/layout/view_main_msg.xml
  20. 209 245
      ybvideoandroid/main/src/main/res/layout/view_main_msg_top.xml
  21. 31 0
      ybvideoandroid/main/src/main/res/layout/view_main_shop.xml
  22. 36 0
      ybvideoandroid/main/src/main/res/layout/view_main_shop_one_click.xml
  23. 36 0
      ybvideoandroid/main/src/main/res/layout/view_main_shop_rural.xml
  24. 36 0
      ybvideoandroid/main/src/main/res/layout/view_main_shop_urban.xml
  25. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_main_left.png
  26. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_main_search.png
  27. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_fans.png
  28. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_platform.png
  29. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_setting.png
  30. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_shop.png
  31. binární
      ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_user.png
  32. 8 8
      ybvideoandroid/video/src/main/java/com/yunbao/video/dialog/VideoShareDialogFragment.java

+ 4 - 0
ybvideoandroid/main/src/main/AndroidManifest.xml

@@ -204,6 +204,10 @@
         <activity
             android:name=".activity.GoodsFilterActivity"
             android:screenOrientation="portrait" />
+        <activity
+            android:name=".activity.ImMsgInteractionActivity"
+            android:screenOrientation="portrait"
+            />
     </application>
 
 </manifest>

+ 82 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/activity/ImMsgInteractionActivity.java

@@ -0,0 +1,82 @@
+package com.yunbao.main.activity;
+
+import android.content.Context;
+import android.content.Intent;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+import com.google.android.material.tabs.TabLayout;
+import com.yunbao.common.activity.AbsActivity;
+import com.yunbao.common.utils.WordUtil;
+import com.yunbao.main.R;
+import com.yunbao.main.views.ImMsgAtFragment;
+import com.yunbao.main.views.ImMsgCommentFragment;
+import com.yunbao.main.views.ImMsgZanFragment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ImMsgInteractionActivity extends AbsActivity {
+
+    public static void forward(Context context) {
+        context.startActivity(new Intent(context, ImMsgInteractionActivity.class));
+    }
+
+    private TabLayout mTabLayout;
+    private ViewPager mViewPager;
+    private InteractionPagerAdapter mAdapter;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.activity_im_msg_interaction;
+    }
+
+    @Override
+    protected void main() {
+        setTitle(WordUtil.getString(R.string.interaction_message));
+
+        mTabLayout = findViewById(R.id.tab_layout);
+        mViewPager = findViewById(R.id.view_pager);
+
+        setupViewPager();
+        mTabLayout.setupWithViewPager(mViewPager);
+    }
+
+    private void setupViewPager() {
+        mAdapter = new InteractionPagerAdapter(getSupportFragmentManager());
+        mAdapter.addFragment(new ImMsgAtFragment(), "@我的");
+        mAdapter.addFragment(new ImMsgCommentFragment(), "评论");
+        mAdapter.addFragment(new ImMsgZanFragment(), "点赞");
+        mViewPager.setAdapter(mAdapter);
+    }
+
+    private static class InteractionPagerAdapter extends FragmentPagerAdapter {
+        private final List<Fragment> mFragmentList = new ArrayList<>();
+        private final List<String> mFragmentTitleList = new ArrayList<>();
+
+        public InteractionPagerAdapter(FragmentManager manager) {
+            super(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
+        }
+
+        @Override
+        public Fragment getItem(int position) {
+            return mFragmentList.get(position);
+        }
+
+        @Override
+        public int getCount() {
+            return mFragmentList.size();
+        }
+
+        public void addFragment(Fragment fragment, String title) {
+            mFragmentList.add(fragment);
+            mFragmentTitleList.add(title);
+        }
+
+        @Override
+        public CharSequence getPageTitle(int position) {
+            return mFragmentTitleList.get(position);
+        }
+    }
+}

+ 132 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/UserAvatarAdapter.java

@@ -0,0 +1,132 @@
+package com.yunbao.main.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.makeramen.roundedimageview.RoundedImageView;
+import com.yunbao.common.glide.ImgLoader;
+import com.yunbao.im.bean.ImConUserBean;
+import com.yunbao.main.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UserAvatarAdapter extends RecyclerView.Adapter<UserAvatarAdapter.ViewHolder> {
+
+    private Context mContext;
+    private List<ImConUserBean> mUserList;
+    private OnUserClickListener mOnUserClickListener;
+
+    public interface OnUserClickListener {
+        void onUserClick(ImConUserBean userInfo);
+    }
+
+    public UserAvatarAdapter(Context context) {
+        mContext = context;
+        mUserList = new ArrayList<>();
+    }
+
+    public void setData(List<ImConUserBean> userList) {
+        if (userList != null) {
+            mUserList.clear();
+            mUserList.addAll(userList);
+            notifyDataSetChanged();
+        }
+    }
+
+    /**
+     * 添加新用户到列表
+     */
+    public void addUser(ImConUserBean userInfo) {
+        if (userInfo != null && !containsUser(userInfo.getId())) {
+            mUserList.add(0, userInfo); // 添加到列表开头
+            notifyItemInserted(0);
+
+            // 限制最大显示数量,比如最多显示10个用户
+            if (mUserList.size() > 10) {
+                mUserList.remove(mUserList.size() - 1);
+                notifyItemRemoved(mUserList.size());
+            }
+        }
+    }
+
+    /**
+     * 检查是否已包含该用户
+     */
+    public boolean containsUser(String userId) {
+        for (ImConUserBean user : mUserList) {
+            if (user.getId().equals(userId)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 更新用户位置(将用户移到最前面)
+     */
+    public void updateUserPosition(String userId) {
+        for (int i = 0; i < mUserList.size(); i++) {
+            if (mUserList.get(i).getId().equals(userId)) {
+                ImConUserBean user = mUserList.remove(i);
+                mUserList.add(0, user);
+                notifyItemMoved(i, 0);
+                break;
+            }
+        }
+    }
+
+    public void setOnUserClickListener(OnUserClickListener listener) {
+        mOnUserClickListener = listener;
+    }
+
+    @NonNull
+    @Override
+    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(mContext).inflate(R.layout.item_user_avatar, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+        ImConUserBean userInfo = mUserList.get(position);
+        holder.bind(userInfo);
+    }
+
+    @Override
+    public int getItemCount() {
+        return mUserList.size();
+    }
+
+    class ViewHolder extends RecyclerView.ViewHolder {
+
+        private RoundedImageView mAvatarUser;
+        private TextView mNameUser;
+
+        public ViewHolder(@NonNull View itemView) {
+            super(itemView);
+            mAvatarUser = itemView.findViewById(R.id.avatar_user);
+            mNameUser = itemView.findViewById(R.id.name_user);
+        }
+
+        public void bind(ImConUserBean userInfo) {
+            ImgLoader.display(mContext, userInfo.getAvatar(), mAvatarUser);
+            mNameUser.setText(userInfo.getUserNiceName());
+
+            itemView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (mOnUserClickListener != null) {
+                        mOnUserClickListener.onUserClick(userInfo);
+                    }
+                }
+            });
+        }
+    }
+}

+ 128 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/ImMsgAtFragment.java

@@ -0,0 +1,128 @@
+package com.yunbao.main.views;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.alibaba.fastjson.JSON;
+import com.yunbao.common.adapter.RefreshAdapter;
+import com.yunbao.common.custom.CommonRefreshView;
+import com.yunbao.common.http.HttpCallback;
+import com.yunbao.common.utils.RouteUtil;
+import com.yunbao.main.R;
+import com.yunbao.main.adapter.ImMsgAtAdapter;
+import com.yunbao.main.bean.ImMsgAtBean;
+import com.yunbao.main.http.MainHttpConsts;
+import com.yunbao.main.http.MainHttpUtil;
+import com.yunbao.video.activity.VideoPlayActivity;
+import com.yunbao.common.bean.VideoBean;
+import com.yunbao.video.http.VideoHttpUtil;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class ImMsgAtFragment extends Fragment implements ImMsgAtAdapter.ActionListener {
+
+    private CommonRefreshView mRefreshView;
+    private ImMsgAtAdapter mAdapter;
+    private HttpCallback mGetVideoCallback;
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.fragment_im_msg_at, container, false);
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        initView(view);
+    }
+
+    private void initView(View view) {
+        mRefreshView = view.findViewById(R.id.refreshView);
+        mRefreshView.setEmptyLayoutId(R.layout.view_empty_im_at);
+        mRefreshView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
+        mRefreshView.setDataHelper(new CommonRefreshView.DataHelper<ImMsgAtBean>() {
+            @Override
+            public RefreshAdapter<ImMsgAtBean> getAdapter() {
+                if (mAdapter == null) {
+                    mAdapter = new ImMsgAtAdapter(getContext());
+                    mAdapter.setActionListener(ImMsgAtFragment.this);
+                }
+                return mAdapter;
+            }
+
+            @Override
+            public void loadData(int p, HttpCallback callback) {
+                MainHttpUtil.getImMsgAtList(p, callback);
+            }
+
+            @Override
+            public List<ImMsgAtBean> processData(String[] info) {
+                return JSON.parseArray(Arrays.toString(info), ImMsgAtBean.class);
+            }
+
+            @Override
+            public void onRefreshSuccess(List<ImMsgAtBean> list, int listCount) {
+
+            }
+
+            @Override
+            public void onRefreshFailure() {
+
+            }
+
+            @Override
+            public void onLoadMoreSuccess(List<ImMsgAtBean> loadItemList, int loadItemCount) {
+
+            }
+
+            @Override
+            public void onLoadMoreFailure() {
+
+            }
+        });
+        mRefreshView.initData();
+    }
+
+    @Override
+    public void onDestroy() {
+        MainHttpUtil.cancel(MainHttpConsts.GET_IM_MSG_AT_LIST);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onAvatarClick(ImMsgAtBean bean) {
+        RouteUtil.forwardUserHome(getContext(), bean.getUid());
+    }
+
+    @Override
+    public void onItemClick(ImMsgAtBean bean) {
+//        if (getActivity() instanceof ImMsgInteractionActivity) {
+//            ((ImMsgInteractionActivity) getActivity()).openCommentWindow(bean.getVideoId(), bean.getVideoUid(), true, true);
+//        }
+    }
+
+    @Override
+    public void onVideoClick(ImMsgAtBean bean) {
+        if (mGetVideoCallback == null) {
+            mGetVideoCallback = new HttpCallback() {
+                @Override
+                public void onSuccess(int code, String msg, String[] info) {
+                    if (code == 0 && info.length > 0) {
+                        VideoBean videoBean = JSON.parseObject(info[0], VideoBean.class);
+                        VideoPlayActivity.forwardSingle(getContext(), videoBean, false);
+                    }
+                }
+            };
+        }
+        VideoHttpUtil.getVideo(bean.getVideoId(), mGetVideoCallback);
+    }
+}

+ 130 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/ImMsgCommentFragment.java

@@ -0,0 +1,130 @@
+package com.yunbao.main.views;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.alibaba.fastjson.JSON;
+import com.yunbao.common.adapter.RefreshAdapter;
+import com.yunbao.common.custom.CommonRefreshView;
+import com.yunbao.common.http.HttpCallback;
+import com.yunbao.common.utils.RouteUtil;
+import com.yunbao.main.R;
+import com.yunbao.main.adapter.ImMsgCommentAdapter;
+import com.yunbao.main.bean.ImMsgCommentBean;
+import com.yunbao.main.http.MainHttpConsts;
+import com.yunbao.main.http.MainHttpUtil;
+import com.yunbao.video.activity.VideoPlayActivity;
+import com.yunbao.common.bean.VideoBean;
+import com.yunbao.video.http.VideoHttpConsts;
+import com.yunbao.video.http.VideoHttpUtil;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class ImMsgCommentFragment extends Fragment implements ImMsgCommentAdapter.ActionListener {
+
+    private CommonRefreshView mRefreshView;
+    private ImMsgCommentAdapter mAdapter;
+    private HttpCallback mGetVideoCallback;
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.fragment_im_msg_comment, container, false);
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        initView(view);
+    }
+
+    private void initView(View view) {
+        mRefreshView = view.findViewById(R.id.refreshView);
+        mRefreshView.setEmptyLayoutId(R.layout.view_empty_im_comment);
+        mRefreshView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
+        mRefreshView.setDataHelper(new CommonRefreshView.DataHelper<ImMsgCommentBean>() {
+            @Override
+            public RefreshAdapter<ImMsgCommentBean> getAdapter() {
+                if (mAdapter == null) {
+                    mAdapter = new ImMsgCommentAdapter(getContext());
+                    mAdapter.setActionListener(ImMsgCommentFragment.this);
+                }
+                return mAdapter;
+            }
+
+            @Override
+            public void loadData(int p, HttpCallback callback) {
+                MainHttpUtil.getImMsgCommentList(p, callback);
+            }
+
+            @Override
+            public List<ImMsgCommentBean> processData(String[] info) {
+                return JSON.parseArray(Arrays.toString(info), ImMsgCommentBean.class);
+            }
+
+            @Override
+            public void onRefreshSuccess(List<ImMsgCommentBean> list, int listCount) {
+
+            }
+
+            @Override
+            public void onRefreshFailure() {
+
+            }
+
+            @Override
+            public void onLoadMoreSuccess(List<ImMsgCommentBean> loadItemList, int loadItemCount) {
+
+            }
+
+            @Override
+            public void onLoadMoreFailure() {
+
+            }
+        });
+        mRefreshView.initData();
+    }
+
+    @Override
+    public void onDestroy() {
+        MainHttpUtil.cancel(MainHttpConsts.GET_IM_MSG_COMMENT_LIST);
+        VideoHttpUtil.cancel(VideoHttpConsts.GET_VIDEO);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onAvatarClick(ImMsgCommentBean bean) {
+        RouteUtil.forwardUserHome(getContext(), bean.getUid());
+    }
+
+    @Override
+    public void onItemClick(ImMsgCommentBean bean) {
+//        if (getActivity() instanceof ImMsgInteractionActivity) {
+//            ((ImMsgInteractionActivity) getActivity()).openCommentWindow(bean.getVideoId(), bean.getVideoUid(), true, true);
+//        }
+    }
+
+    @Override
+    public void onVideoClick(ImMsgCommentBean bean) {
+        if (mGetVideoCallback == null) {
+            mGetVideoCallback = new HttpCallback() {
+                @Override
+                public void onSuccess(int code, String msg, String[] info) {
+                    if (code == 0 && info.length > 0) {
+                        VideoBean videoBean = JSON.parseObject(info[0], VideoBean.class);
+                        VideoPlayActivity.forwardSingle(getContext(), videoBean, false);
+                    }
+                }
+            };
+        }
+        VideoHttpUtil.getVideo(bean.getVideoId(), mGetVideoCallback);
+    }
+}

+ 131 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/ImMsgZanFragment.java

@@ -0,0 +1,131 @@
+package com.yunbao.main.views;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+import com.alibaba.fastjson.JSON;
+import com.yunbao.common.adapter.RefreshAdapter;
+import com.yunbao.common.custom.CommonRefreshView;
+import com.yunbao.common.http.HttpCallback;
+import com.yunbao.common.utils.RouteUtil;
+import com.yunbao.main.R;
+import com.yunbao.main.adapter.ImMsgZanAdapter;
+import com.yunbao.main.bean.ImMsgZanBean;
+import com.yunbao.main.http.MainHttpConsts;
+import com.yunbao.main.http.MainHttpUtil;
+import com.yunbao.video.activity.VideoPlayActivity;
+import com.yunbao.common.bean.VideoBean;
+import com.yunbao.video.http.VideoHttpConsts;
+import com.yunbao.video.http.VideoHttpUtil;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class ImMsgZanFragment extends Fragment implements ImMsgZanAdapter.ActionListener {
+
+    private CommonRefreshView mRefreshView;
+    private ImMsgZanAdapter mAdapter;
+    private HttpCallback mGetVideoCallback;
+
+    @Nullable
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        return inflater.inflate(R.layout.fragment_im_msg_zan, container, false);
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        initView(view);
+    }
+
+    private void initView(View view) {
+        mRefreshView = view.findViewById(R.id.refreshView);
+        mRefreshView.setEmptyLayoutId(R.layout.view_empty_im_zan);
+        mRefreshView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
+        mRefreshView.setDataHelper(new CommonRefreshView.DataHelper<ImMsgZanBean>() {
+            @Override
+            public RefreshAdapter<ImMsgZanBean> getAdapter() {
+                if (mAdapter == null) {
+                    mAdapter = new ImMsgZanAdapter(getContext());
+                    mAdapter.setActionListener(ImMsgZanFragment.this);
+                }
+                return mAdapter;
+            }
+
+            @Override
+            public void loadData(int p, HttpCallback callback) {
+                MainHttpUtil.getImMsgZanList(p, callback);
+            }
+
+            @Override
+            public List<ImMsgZanBean> processData(String[] info) {
+                return JSON.parseArray(Arrays.toString(info), ImMsgZanBean.class);
+            }
+
+            @Override
+            public void onRefreshSuccess(List<ImMsgZanBean> list, int listCount) {
+
+            }
+
+            @Override
+            public void onRefreshFailure() {
+
+            }
+
+            @Override
+            public void onLoadMoreSuccess(List<ImMsgZanBean> loadItemList, int loadItemCount) {
+
+            }
+
+            @Override
+            public void onLoadMoreFailure() {
+
+            }
+        });
+        mRefreshView.initData();
+    }
+
+    @Override
+    public void onDestroy() {
+        MainHttpUtil.cancel(MainHttpConsts.GET_IM_MSG_ZAN_LIST);
+        MainHttpUtil.cancel(VideoHttpConsts.GET_VIDEO);
+        super.onDestroy();
+    }
+
+    @Override
+    public void onAvatarClick(ImMsgZanBean bean) {
+        RouteUtil.forwardUserHome(getContext(), bean.getUid());
+    }
+
+    @Override
+    public void onItemClick(ImMsgZanBean bean) {
+        // 这里需要通过Activity来处理评论窗口
+//        if (getActivity() instanceof ImMsgInteractionActivity) {
+//            ((ImMsgInteractionActivity) getActivity()).openCommentWindow(bean.getVideoId(), bean.getVideoUid(), true, true);
+//        }
+    }
+
+    @Override
+    public void onVideoClick(ImMsgZanBean bean) {
+        if (mGetVideoCallback == null) {
+            mGetVideoCallback = new HttpCallback() {
+                @Override
+                public void onSuccess(int code, String msg, String[] info) {
+                    if (code == 0 && info.length > 0) {
+                        VideoBean videoBean = JSON.parseObject(info[0], VideoBean.class);
+                        VideoPlayActivity.forwardSingle(getContext(), videoBean, false);
+                    }
+                }
+            };
+        }
+        VideoHttpUtil.getVideo(bean.getVideoId(), mGetVideoCallback);
+    }
+}

+ 4 - 2
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java

@@ -41,7 +41,7 @@ import java.util.List;
 
 public class MainHomeViewHolder extends AbsMainViewHolder {
 
-    private static final int DEFAULT_PAGE_COUNT = 5;
+    private static final int DEFAULT_PAGE_COUNT = 3;
     private ViewPager mViewPager;
     private List<FrameLayout> mViewList;
     private MagicIndicator mIndicator;
@@ -64,6 +64,7 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
     private LinePagerIndicator mLinePagerIndicator;
     private ImageView mBtnSearch;
     private ImageView mBtnLiveSquare;
+    private ImageView mBtnMenu;
 
 
     public MainHomeViewHolder(Context context, ViewGroup parentView) {
@@ -79,7 +80,8 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
     public void init() {
         setStatusHeight();
         mBtnSearch = findViewById(R.id.btn_search);
-        mBtnLiveSquare = findViewById(R.id.btn_live_square);
+//        mBtnLiveSquare = findViewById(R.id.btn_live_square);
+        mBtnMenu = findViewById(R.id.btn_menu);
         mPagerTitleList = new ArrayList<>();
         mViewList = new ArrayList<>();
         mViewHolders = new ArrayList<>();

+ 266 - 152
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainMessageViewHolder.java

@@ -43,16 +43,19 @@ import com.yunbao.main.activity.ContactsActivity;
 import com.yunbao.main.activity.ImMsgAtActivity;
 import com.yunbao.main.activity.ImMsgCommentActivity;
 import com.yunbao.main.activity.ImMsgFansActivity;
+import com.yunbao.main.activity.ImMsgInteractionActivity;
 import com.yunbao.main.activity.ImMsgOffcialActivity;
 import com.yunbao.main.activity.ImMsgSystemActivity;
 import com.yunbao.main.activity.ImMsgZanActivity;
 import com.yunbao.main.adapter.MainMessageAdapter;
+import com.yunbao.main.adapter.UserAvatarAdapter;
 import com.yunbao.mall.activity.OrderMessageActivity;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
@@ -66,16 +69,30 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
 
     private SmartRefreshLayout mSmartRefreshLayout;
     private RecyclerView mRecyclerView;
+//    private TextView mRedPointFans;
+//    private TextView mRedPointZan;
+//    private TextView mRedPointAt;
+//    private TextView mRedPointComment;
+//    private TextView mRedPointOfficial;
+//    private TextView mRedPointSystem;
+//    private TextView mMsgOfficial;
+//    private TextView mTimeOfficial;
+//    private TextView mMsgSystem;
+//    private TextView mTimeSystem;
+
+    private UserAvatarAdapter mUserAvatarAdapter;
+    private RecyclerView mUseravatars;
+    private ViewGroup mStatusSetBtn;
     private TextView mRedPointFans;
-    private TextView mRedPointZan;
-    private TextView mRedPointAt;
-    private TextView mRedPointComment;
-    private TextView mRedPointOfficial;
-    private TextView mRedPointSystem;
-    private TextView mMsgOfficial;
-    private TextView mTimeOfficial;
-    private TextView mMsgSystem;
-    private TextView mTimeSystem;
+    private TextView mMessageFans;
+    private TextView mRedPointInteraction;
+    private TextView mMessageInteraction;
+    private TextView mMessageoffcial;
+    private TextView mMessageShop;
+
+
+
+
 
     private MainMessageAdapter mAdapter;
     private boolean mIsInitHeadView;
@@ -123,20 +140,22 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
         int i = v.getId();
         if (i == R.id.btn_fans) {
             clickFans();
-        } else if (i == R.id.btn_zan) {
+        } else if (i == R.id.btn_interaction) {
             clickZan();
         } else if (i == R.id.btn_at) {
-            clickAt();
+//            clickAt();
         } else if (i == R.id.btn_comment) {
-            clickComment();
+//            clickComment();
         } else if (i == R.id.btn_offcial_msg) {
             clickOffcial();
-        } else if (i == R.id.btn_system_msg) {
+        } else if (i == R.id.btn_shopping) {
             clickSystem();
         } else if (i == R.id.btn_contacts) {
             ContactsActivity.forward(mContext);
         } else if (i == R.id.btn_all_read) {
             ignoreUnReadCount();
+        } else if (i == R.id.btn_status_setting) {
+
         }
     }
 
@@ -154,11 +173,11 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
         }
         SpUtil.getInstance().setBooleanValue(SpUtil.HAS_SYSTEM_MSG, false);
         setRedPointVisibility(mRedPointFans, false);
-        setRedPointVisibility(mRedPointZan, false);
-        setRedPointVisibility(mRedPointAt, false);
-        setRedPointVisibility(mRedPointComment, false);
-        setRedPointVisibility(mRedPointOfficial, false);
-        setRedPointVisibility(mRedPointSystem, false);
+        setRedPointVisibility(mRedPointInteraction, false);
+//        setRedPointVisibility(mRedPointAt, false);
+//        setRedPointVisibility(mRedPointComment, false);
+//        setRedPointVisibility(mRedPointOfficial, false);
+//        setRedPointVisibility(mRedPointSystem, false);
         ImMessageUtil.getInstance().markAllConversationAsRead();
         if (mAdapter != null) {
             mAdapter.resetAllUnReadCount();
@@ -173,29 +192,33 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
     }
 
     private void clickZan() {
-        setRedPointVisibility(mRedPointZan, false);
+//        setRedPointVisibility(mRedPointZan, false);
+        setRedPointVisibility(mRedPointInteraction, false);
         markAllMessagesAsRead(Constants.IM_MSG_LIKE);
-        ImMsgZanActivity.forward(mContext);
-    }
-
-    private void clickAt() {
-        setRedPointVisibility(mRedPointAt, false);
         markAllMessagesAsRead(Constants.IM_MSG_AT);
-        ImMsgAtActivity.forward(mContext);
-    }
-
-    private void clickComment() {
-        setRedPointVisibility(mRedPointComment, false);
         markAllMessagesAsRead(Constants.IM_MSG_COMMENT);
-        ImMsgCommentActivity.forward(mContext);
+//        ImMsgZanActivity.forward(mContext);
+        ImMsgInteractionActivity.forward(mContext);
     }
 
+//    private void clickAt() {
+//        setRedPointVisibility(mRedPointAt, false);
+//        markAllMessagesAsRead(Constants.IM_MSG_AT);
+//        ImMsgAtActivity.forward(mContext);
+//    }
+
+//    private void clickComment() {
+//        setRedPointVisibility(mRedPointComment, false);
+//        markAllMessagesAsRead(Constants.IM_MSG_COMMENT);
+//        ImMsgCommentActivity.forward(mContext);
+//    }
+
     /**
      * 点击官方通知
      */
     private void clickOffcial() {
         SpUtil.getInstance().setBooleanValue(SpUtil.HAS_SYSTEM_MSG, false);
-        setRedPointVisibility(mRedPointOfficial, false);
+//        setRedPointVisibility(mRedPointOfficial, false);
         ImMsgOffcialActivity.forward(mContext, mOfficialNameVal, mOfficialAvatarVal);
     }
 
@@ -203,7 +226,7 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
      * 点击系统消息
      */
     private void clickSystem() {
-        setRedPointVisibility(mRedPointSystem, false);
+//        setRedPointVisibility(mRedPointSystem, false);
         markAllMessagesAsRead(Constants.IM_MSG_SYSTEM);
         ImMsgSystemActivity.forward(mContext);
     }
@@ -243,24 +266,58 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
     @Override
     public void onHeadView(View topView) {
         if (!mIsInitHeadView) {
+            /**
+             * private RecyclerView mUseravatars;
+             *     private ViewGroup mStatusSetBtn;
+             *     private TextView mRedPointFans;
+             *     private TextView mMessageFans;
+             *     private TextView mRedPointInteraction;
+             *     private TextView mMessageInteraction;
+             *     private TextView mMessageoffcial;
+             *     private TextView mMessageShop;
+             *     */
+            mUseravatars = topView.findViewById(R.id.recycler_user_avatars);
+            if (mUseravatars != null) {
+                mUserAvatarAdapter = new UserAvatarAdapter(mContext);
+                mUseravatars.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
+                mUseravatars.setAdapter(mUserAvatarAdapter);
+
+                // 设置用户点击监听
+                mUserAvatarAdapter.setOnUserClickListener(new UserAvatarAdapter.OnUserClickListener() {
+                    @Override
+                    public void onUserClick(ImConUserBean userInfo) {
+                        // 点击用户头像时跳转到聊天界面
+                        markAllMessagesAsRead(userInfo.getId());
+                        ChatRoomActivity.forward(mContext, userInfo, userInfo.isFollowThisUser());
+                    }
+                });
+            }
+            mStatusSetBtn = topView.findViewById(R.id.btn_status_setting);
             mRedPointFans = topView.findViewById(R.id.red_point_fans);
-            mRedPointZan = topView.findViewById(R.id.red_point_zan);
-            mRedPointAt = topView.findViewById(R.id.red_point_at);
-            mRedPointComment = topView.findViewById(R.id.red_point_comment);
-            mRedPointOfficial = topView.findViewById(R.id.red_point_offcial);
-            mRedPointSystem = topView.findViewById(R.id.red_point_system);
-            mMsgOfficial = topView.findViewById(R.id.msg_offcial);
-            mTimeOfficial = topView.findViewById(R.id.time_offcial);
-            mMsgSystem = topView.findViewById(R.id.msg_system);
-            mTimeSystem = topView.findViewById(R.id.time_system);
-            mOfficialAvatar = topView.findViewById(R.id.avatar_offcial);
-            mOfficialName = topView.findViewById(R.id.name_offcial);
+            mMessageFans = topView.findViewById(R.id.tv_fans);
+            mRedPointInteraction = topView.findViewById(R.id.red_point_interaction);
+            mMessageInteraction = topView.findViewById(R.id.tv_interaction);
+            mMessageoffcial = topView.findViewById(R.id.msg_offcial);
+            mMessageShop = topView.findViewById(R.id.msg_shopping);
+
+//            mRedPointZan = topView.findViewById(R.id.red_point_zan);
+//            mRedPointAt = topView.findViewById(R.id.red_point_at);
+//            mRedPointComment = topView.findViewById(R.id.red_point_comment);
+//            mRedPointOfficial = topView.findViewById(R.id.red_point_offcial);
+//            mRedPointSystem = topView.findViewById(R.id.red_point_system);
+//            mMsgOfficial = topView.findViewById(R.id.msg_offcial);
+//            mTimeOfficial = topView.findViewById(R.id.time_offcial);
+//            mMsgSystem = topView.findViewById(R.id.msg_system);
+//            mTimeSystem = topView.findViewById(R.id.time_system);
+//            .findViewById(R.id.name_offcial);
+            // ... existing code ...
+            mStatusSetBtn.setOnClickListener(this);
             topView.findViewById(R.id.btn_fans).setOnClickListener(this);
-            topView.findViewById(R.id.btn_zan).setOnClickListener(this);
-            topView.findViewById(R.id.btn_at).setOnClickListener(this);
-            topView.findViewById(R.id.btn_comment).setOnClickListener(this);
-            topView.findViewById(R.id.btn_offcial_msg).setOnClickListener(this);
-            topView.findViewById(R.id.btn_system_msg).setOnClickListener(this);
+            topView.findViewById(R.id.btn_interaction).setOnClickListener(this);        // 第310行 - 这里出错
+            topView.findViewById(R.id.btn_offcial_msg).setOnClickListener(this);         // 第311行 - 这里也会出错
+            topView.findViewById(R.id.btn_shopping).setOnClickListener(this);    // 第312行 - 这里也会出错
+//            topView.findViewById(R.id.btn_offcial_msg).setOnClickListener(this);
+//            topView.findViewById(R.id.btn_system_msg).setOnClickListener(this);
             mIsInitHeadView = true;
             getLastMessage();
         }
@@ -280,24 +337,27 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
         int unReadCount = conBean.getUnReadCount();
         String time = conBean.getLastMsgTimeString();
         if (Constants.IM_MSG_SYSTEM.equals(from)) {
-            if (mMsgSystem != null) {
-                mMsgSystem.setText(lastMsg);
-            }
-            if (mTimeSystem != null) {
-                mTimeSystem.setText(time);
-            }
-            if (unReadCount > 0) {
-                setRedPointVisibility(mRedPointSystem, true);
-                if (mRedPointSystem != null) {
-                    mRedPointSystem.setText(String.valueOf(unReadCount));
-                }
-            } else {
-                setRedPointVisibility(mRedPointSystem, false);
+            if (mMessageoffcial != null) {
+                mMessageoffcial.setText(lastMsg);
             }
+//            if (mTimeSystem != null) {
+//                mTimeSystem.setText(time);
+//            }
+//            if (unReadCount > 0) {
+//                setRedPointVisibility(mRedPointSystem, true);
+//                if (mRedPointSystem != null) {
+//                    mRedPointSystem.setText(String.valueOf(unReadCount));
+//                }
+//            } else {
+//                setRedPointVisibility(mRedPointSystem, false);
+//            }
             return;
         }
 
         if (Constants.IM_MSG_FANS.equals(from)) {
+            if (mMessageFans != null) {
+                mMessageFans.setText(lastMsg);
+            }
             if (unReadCount > 0) {
                 setRedPointVisibility(mRedPointFans, true);
                 if (mRedPointFans != null) {
@@ -308,37 +368,46 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
             }
             return;
         }
-        if (Constants.IM_MSG_LIKE.equals(from)) {
-            if (unReadCount > 0) {
-                setRedPointVisibility(mRedPointZan, true);
-                if (mRedPointZan != null) {
-                    mRedPointZan.setText(String.valueOf(unReadCount));
-                }
-            } else {
-                setRedPointVisibility(mRedPointZan, false);
-            }
-            return;
-        }
-        if (Constants.IM_MSG_AT.equals(from)) {
-            if (unReadCount > 0) {
-                setRedPointVisibility(mRedPointAt, true);
-                if (mRedPointAt != null) {
-                    mRedPointAt.setText(String.valueOf(unReadCount));
-                }
-            } else {
-                setRedPointVisibility(mRedPointAt, false);
-            }
-            return;
-        }
-        if (Constants.IM_MSG_COMMENT.equals(from)) {
-            if (unReadCount > 0) {
-                setRedPointVisibility(mRedPointComment, true);
-                if (mRedPointComment != null) {
-                    mRedPointComment.setText(String.valueOf(unReadCount));
-                }
-            } else {
-                setRedPointVisibility(mRedPointComment, false);
-            }
+//        if (Constants.IM_MSG_LIKE.equals(from)) {
+//            if (unReadCount > 0) {
+//                setRedPointVisibility(mRedPointInteraction, true);
+//                if (mRedPointInteraction != null) {
+//                    mRedPointInteraction.setText(String.valueOf(unReadCount));
+//                }
+//            } else {
+//                setRedPointVisibility(mRedPointInteraction, false);
+//            }
+//            return;
+//        }
+//        if (Constants.IM_MSG_AT.equals(from)) {
+//            if (unReadCount > 0) {
+//                setRedPointVisibility(mRedPointInteraction, true);
+//                if (mRedPointInteraction != null) {
+//                    mRedPointInteraction.setText(String.valueOf(unReadCount));
+//                }
+//            } else {
+//                setRedPointVisibility(mRedPointInteraction, false);
+//            }
+//            return;
+//        }
+//        if (Constants.IM_MSG_COMMENT.equals(from)) {
+//            if (unReadCount > 0) {
+//                setRedPointVisibility(mRedPointInteraction, true);
+//                if (mRedPointInteraction != null) {
+//                    mRedPointInteraction.setText(String.valueOf(unReadCount));
+//                }
+//            } else {
+//                setRedPointVisibility(mRedPointInteraction, false);
+//            }
+//            return;
+//        }
+        // 在onImUserMsgEvent方法中,将三种消息类型合并处理
+        if (Constants.IM_MSG_LIKE.equals(from) ||
+                Constants.IM_MSG_AT.equals(from) ||
+                Constants.IM_MSG_COMMENT.equals(from)) {
+
+            // 获取所有互动消息的总未读数量
+            updateInteractionMessages();
             return;
         }
         if (mRecyclerView != null && mAdapter != null) {
@@ -354,16 +423,56 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
                                 ImConUserBean bean = JSON.parseObject(info[0], ImConUserBean.class);
                                 bean.setConBean(conBean);
                                 mAdapter.insertItem(bean);
+                                if (mUserAvatarAdapter != null) {
+                                    mUserAvatarAdapter.addUser(bean);
+                                }
                             }
                         }
                     }
                 });
             } else {
                 mAdapter.updateItem(conBean, position);
+                if (mUserAvatarAdapter != null) {
+                    mUserAvatarAdapter.updateUserPosition(from);
+                }
             }
         }
     }
 
+    /**
+     * 更新互动消息显示
+     */
+    private void updateInteractionMessages() {
+        ImUnReadCount unReadCount = ImMessageUtil.getInstance().getUnReadMsgCount();
+        if (unReadCount == null) {
+            return;
+        }
+
+        // 获取三种消息类型的未读数量
+        int likeCount = Integer.parseInt(unReadCount.getLikeUnReadCount());
+        int atCount = Integer.parseInt(unReadCount.getAtUnReadCount());
+        int commentCount = Integer.parseInt(unReadCount.getCommentUnReadCount());
+
+        // 计算总的未读数量
+        int totalInteractionCount = likeCount + atCount + commentCount;
+
+        if (totalInteractionCount > 0) {
+            setRedPointVisibility(mRedPointInteraction, true);
+            if (mRedPointInteraction != null) {
+                mRedPointInteraction.setText(String.valueOf(totalInteractionCount));
+            }
+
+            // 更新消息文本显示(可以显示最新的一条消息)
+            if (mMessageInteraction != null) {
+                // 这里可以根据需要显示具体的消息内容
+                String messageText = "您有新的互动消息";
+                mMessageInteraction.setText(messageText);
+            }
+        } else {
+            setRedPointVisibility(mRedPointInteraction, false);
+        }
+    }
+
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onFollowEvent(FollowEvent e) {
@@ -429,6 +538,19 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
                                 if (mOfficialName != null) {
                                     mOfficialName.setText(mOfficialNameVal);
                                 }
+                                if (mRecyclerView != null && mAdapter != null) {
+                                    mAdapter.setList(conUserList);
+                                }
+
+                                if (mRecyclerView != null && mAdapter != null) {
+                                    mAdapter.setList(conUserList);
+                                }
+
+                                // 更新用户头像列表
+                                if (mUserAvatarAdapter != null) {
+                                    mUserAvatarAdapter.setData(conUserList);
+                                }
+
                                 conUserList.remove(0);
                                 if (conUserList.size() > 0) {
                                     for (ImConUserBean conUserBean : conUserList) {
@@ -457,6 +579,9 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
                                     if (mRecyclerView != null && mAdapter != null) {
                                         mAdapter.clear();
                                     }
+                                    if (mUserAvatarAdapter != null) {
+                                        mUserAvatarAdapter.setData(new ArrayList<>());
+                                    }
                                 }
                             }
                         }
@@ -479,31 +604,20 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
             setRedPointVisibility(mRedPointFans, false);
         }
         String unReadCountZan = unReadCount.getLikeUnReadCount();
-        if (!"0".equals(unReadCountZan)) {
-            setRedPointVisibility(mRedPointZan, true);
-            if (mRedPointZan != null) {
-                mRedPointZan.setText(String.valueOf(unReadCountZan));
-            }
-        } else {
-            setRedPointVisibility(mRedPointZan, false);
-        }
-        final String unReadCountAt = unReadCount.getAtUnReadCount();
-        if (!"0".equals(unReadCountAt)) {
-            setRedPointVisibility(mRedPointAt, true);
-            if (mRedPointAt != null) {
-                mRedPointAt.setText(String.valueOf(unReadCountAt));
-            }
-        } else {
-            setRedPointVisibility(mRedPointAt, false);
-        }
+        String unReadCountAt = unReadCount.getAtUnReadCount();
         String unReadCountComment = unReadCount.getCommentUnReadCount();
-        if (!"0".equals(unReadCountComment)) {
-            setRedPointVisibility(mRedPointComment, true);
-            if (mRedPointComment != null) {
-                mRedPointComment.setText(String.valueOf(unReadCountComment));
+
+        int totalInteractionCount = Integer.parseInt(unReadCountZan) +
+                Integer.parseInt(unReadCountAt) +
+                Integer.parseInt(unReadCountComment);
+
+        if (totalInteractionCount > 0) {
+            setRedPointVisibility(mRedPointInteraction, true);
+            if (mRedPointInteraction != null) {
+                mRedPointInteraction.setText(String.valueOf(totalInteractionCount));
             }
         } else {
-            setRedPointVisibility(mRedPointComment, false);
+            setRedPointVisibility(mRedPointInteraction, false);
         }
         ImHttpUtil.getLastMessage(new HttpCallback() {
             @Override
@@ -513,38 +627,38 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
                     if (obj.containsKey("officeInfo")) {
                         JSONObject officeInfo = obj.getJSONObject("officeInfo");
                         String time = ImMessageUtil.getInstance().getMessageTimeString(officeInfo.getLongValue("pushtime"));
-                        if (mTimeOfficial != null) {
-                            mTimeOfficial.setText(time);
-                        }
-                        if (mMsgOfficial != null) {
-                            mMsgOfficial.setText(officeInfo.getString("title"));
-                        }
-                        if (mRedPointOfficial != null) {
-                            if (SpUtil.getInstance().getBooleanValue(SpUtil.HAS_SYSTEM_MSG)) {
-                                setRedPointVisibility(mRedPointOfficial, true);
-                            } else {
-                                setRedPointVisibility(mRedPointOfficial, false);
-                            }
+//                        if (mTimeOfficial != null) {
+//                            mTimeOfficial.setText(time);
+//                        }
+                        if (mMessageoffcial != null) {
+                            mMessageoffcial.setText(officeInfo.getString("title"));
                         }
+//                        if (mRedPointOfficial != null) {
+//                            if (SpUtil.getInstance().getBooleanValue(SpUtil.HAS_SYSTEM_MSG)) {
+//                                setRedPointVisibility(mRedPointOfficial, true);
+//                            } else {
+//                                setRedPointVisibility(mRedPointOfficial, false);
+//                            }
+//                        }
                     } else {
-                        mMsgOfficial.setText(String.format(WordUtil.getString(R.string.im_msg_welcome), WordUtil.getString(R.string.app_name)));
+                        mMessageoffcial.setText(String.format(WordUtil.getString(R.string.im_msg_welcome), WordUtil.getString(R.string.app_name)));
                     }
                     if (obj.containsKey("sysInfo")) {
                         JSONObject sysInfo = obj.getJSONObject("sysInfo");
                         String time = ImMessageUtil.getInstance().getMessageTimeString(sysInfo.getLongValue("addtime"));
-                        mTimeSystem.setText(time);
-                        mMsgSystem.setText(sysInfo.getString("title"));
+//                        mTimeSystem.setText(time);
+                        mMessageShop.setText(sysInfo.getString("title"));
                         String unReadCountSystem = unReadCount.getSystemUnReadCount();
-                        if (mRedPointSystem != null) {
-                            if (!"0".equals(unReadCountSystem)) {
-                                setRedPointVisibility(mRedPointSystem, true);
-                                mRedPointSystem.setText(unReadCountSystem);
-                            } else {
-                                setRedPointVisibility(mRedPointSystem, false);
-                            }
-                        }
+//                        if (mRedPointSystem != null) {
+//                            if (!"0".equals(unReadCountSystem)) {
+//                                setRedPointVisibility(mRedPointSystem, true);
+//                                mRedPointSystem.setText(unReadCountSystem);
+//                            } else {
+//                                setRedPointVisibility(mRedPointSystem, false);
+//                            }
+//                        }
                     } else {
-                        mMsgSystem.setText(String.format(WordUtil.getString(R.string.im_msg_welcome), WordUtil.getString(R.string.app_name)));
+//                        mMsgSystem.setText(String.format(WordUtil.getString(R.string.im_msg_welcome), WordUtil.getString(R.string.app_name)));
                     }
                 }
             }
@@ -586,22 +700,22 @@ public class MainMessageViewHolder extends AbsMainViewHolder implements View.OnC
                     if (obj.containsKey("officeInfo")) {
                         JSONObject officeInfo = obj.getJSONObject("officeInfo");
                         String time = ImMessageUtil.getInstance().getMessageTimeString(officeInfo.getLongValue("pushtime"));
-                        if (mTimeOfficial != null) {
-                            mTimeOfficial.setText(time);
-                        }
-                        if (mMsgOfficial != null) {
-                            mMsgOfficial.setText(officeInfo.getString("title"));
-                        }
-                        if (mRedPointOfficial != null) {
-                            if (SpUtil.getInstance().getBooleanValue(SpUtil.HAS_SYSTEM_MSG)) {
-                                setRedPointVisibility(mRedPointOfficial, true);
-                            } else {
-                                setRedPointVisibility(mRedPointOfficial, false);
-                            }
+//                        if (mTimeOfficial != null) {
+//                            mTimeOfficial.setText(time);
+//                        }
+                        if (mMessageoffcial != null) {
+                            mMessageoffcial.setText(officeInfo.getString("title"));
                         }
+//                        if (mRedPointOfficial != null) {
+//                            if (SpUtil.getInstance().getBooleanValue(SpUtil.HAS_SYSTEM_MSG)) {
+//                                setRedPointVisibility(mRedPointOfficial, true);
+//                            } else {
+//                                setRedPointVisibility(mRedPointOfficial, false);
+//                            }
+//                        }
                     } else {
-                        if (mMsgOfficial != null) {
-                            mMsgOfficial.setText(String.format(WordUtil.getString(R.string.im_msg_welcome), WordUtil.getString(R.string.app_name)));
+                        if (mMessageoffcial != null) {
+                            mMessageoffcial.setText(String.format(WordUtil.getString(R.string.im_msg_welcome), WordUtil.getString(R.string.app_name)));
                         }
                     }
                 }

+ 70 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopOneClickViewHolder.java

@@ -0,0 +1,70 @@
+package com.yunbao.main.views;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.yunbao.main.R;
+
+/**
+ * 一键云店页面ViewHolder
+ * 提供一键开店和快速购物功能
+ */
+public class MainShopOneClickViewHolder extends AbsMainViewHolder implements View.OnClickListener {
+
+    private TextView mTitleText;
+    private TextView mDescriptionText;
+
+    public MainShopOneClickViewHolder(Context context, ViewGroup parentView) {
+        super(context, parentView);
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.view_main_shop_one_click;
+    }
+
+    @Override
+    public void init() {
+        mTitleText = findViewById(R.id.tv_title);
+        mDescriptionText = findViewById(R.id.tv_description);
+
+        // 设置初始内容
+        mTitleText.setText("一键云店");
+        mDescriptionText.setText("快速开店,轻松购物");
+
+        // 设置点击监听
+        mTitleText.setOnClickListener(this);
+    }
+
+    @Override
+    public void loadData() {
+        if (isFirstLoadData()) {
+            // 首次加载数据
+            loadOneClickShopData();
+        }
+    }
+
+    /**
+     * 加载一键云店数据
+     */
+    private void loadOneClickShopData() {
+        // TODO: 实现一键云店数据加载逻辑
+        // 例如:加载快速开店模板、热门商品推荐等
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.tv_title) {
+            // 处理标题点击事件
+        }
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        // 释放资源
+    }
+}

+ 70 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopRuralViewHolder.java

@@ -0,0 +1,70 @@
+package com.yunbao.main.views;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.yunbao.main.R;
+
+/**
+ * 乡村云店页面ViewHolder
+ * 展示乡村地区的商品和服务
+ */
+public class MainShopRuralViewHolder extends AbsMainViewHolder implements View.OnClickListener {
+
+    private TextView mTitleText;
+    private TextView mDescriptionText;
+
+    public MainShopRuralViewHolder(Context context, ViewGroup parentView) {
+        super(context, parentView);
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.view_main_shop_rural;
+    }
+
+    @Override
+    public void init() {
+        mTitleText = findViewById(R.id.tv_title);
+        mDescriptionText = findViewById(R.id.tv_description);
+
+        // 设置初始内容
+        mTitleText.setText("乡村云店");
+        mDescriptionText.setText("为乡村地区提供优质商品和服务");
+
+        // 设置点击监听
+        mTitleText.setOnClickListener(this);
+    }
+
+    @Override
+    public void loadData() {
+        if (isFirstLoadData()) {
+            // 首次加载数据
+            loadRuralShopData();
+        }
+    }
+
+    /**
+     * 加载乡村云店数据
+     */
+    private void loadRuralShopData() {
+        // TODO: 实现乡村云店数据加载逻辑
+        // 例如:加载乡村特色商品、农产品等
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.tv_title) {
+            // 处理标题点击事件
+        }
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        // 释放资源
+    }
+}

+ 70 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopUrbanViewHolder.java

@@ -0,0 +1,70 @@
+package com.yunbao.main.views;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.yunbao.main.R;
+
+/**
+ * 都市云店页面ViewHolder
+ * 展示都市地区的商品和服务
+ */
+public class MainShopUrbanViewHolder extends AbsMainViewHolder implements View.OnClickListener {
+
+    private TextView mTitleText;
+    private TextView mDescriptionText;
+
+    public MainShopUrbanViewHolder(Context context, ViewGroup parentView) {
+        super(context, parentView);
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.view_main_shop_urban;
+    }
+
+    @Override
+    public void init() {
+        mTitleText = findViewById(R.id.tv_title);
+        mDescriptionText = findViewById(R.id.tv_description);
+
+        // 设置初始内容
+        mTitleText.setText("都市云店");
+        mDescriptionText.setText("为都市人群提供便捷的购物体验");
+
+        // 设置点击监听
+        mTitleText.setOnClickListener(this);
+    }
+
+    @Override
+    public void loadData() {
+        if (isFirstLoadData()) {
+            // 首次加载数据
+            loadUrbanShopData();
+        }
+    }
+
+    /**
+     * 加载都市云店数据
+     */
+    private void loadUrbanShopData() {
+        // TODO: 实现都市云店数据加载逻辑
+        // 例如:加载都市热门商品、快递服务等
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.tv_title) {
+            // 处理标题点击事件
+        }
+    }
+
+    @Override
+    public void release() {
+        super.release();
+        // 释放资源
+    }
+}

+ 272 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopViewHolder.java

@@ -0,0 +1,272 @@
+package com.yunbao.main.views;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import androidx.viewpager.widget.ViewPager;
+
+import com.yunbao.common.adapter.ViewPagerAdapter;
+import com.yunbao.common.utils.DpUtil;
+import com.yunbao.common.utils.WordUtil;
+import com.yunbao.main.R;
+import com.yunbao.main.custom.MainHomePagerTitleView;
+
+import net.lucode.hackware.magicindicator.MagicIndicator;
+import net.lucode.hackware.magicindicator.ViewPagerHelper;
+import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
+import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
+import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
+import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
+import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 商店页面ViewHolder
+ * 实现乡村云店、都市云店、一键云店三个页面的ViewPager导航
+ */
+public class MainShopViewHolder extends AbsMainViewHolder {
+
+    private ViewPager mViewPager;
+    private List<FrameLayout> mViewList;
+    private MagicIndicator mIndicator;
+    private List<AbsMainViewHolder> mViewHolders;
+    private CommonNavigatorAdapter mNavigatorAdapter;
+    private ViewPagerAdapter mViewPagerAdapter;
+    private List<MainHomePagerTitleView> mPagerTitleList;
+    private LinePagerIndicator mLinePagerIndicator;
+
+    // 三个子页面的ViewHolder
+    private MainShopRuralViewHolder mRuralViewHolder;     // 乡村云店
+    private MainShopUrbanViewHolder mUrbanViewHolder;     // 都市云店
+    private MainShopOneClickViewHolder mOneClickViewHolder; // 一键云店
+
+    // 页面标题
+    private String[] mPageTitles = {"乡村云店", "都市云店", "一键云店"};
+
+    public MainShopViewHolder(Context context, ViewGroup parentView) {
+        super(context, parentView);
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.view_main_shop;
+    }
+
+    @Override
+    public void init() {
+        setStatusHeight();
+
+        mPagerTitleList = new ArrayList<>();
+        mViewList = new ArrayList<>();
+        mViewHolders = new ArrayList<>();
+
+        mViewPager = findViewById(R.id.viewPager);
+        mIndicator = findViewById(R.id.indicator);
+
+        initViewPager();
+        initIndicator();
+    }
+
+    /**
+     * 设置状态栏高度
+     */
+    @Override
+    protected void setStatusHeight() {
+        View statusBar = findViewById(R.id.status_bar);
+        if (statusBar != null) {
+            ViewGroup.LayoutParams params = statusBar.getLayoutParams();
+            params.height = getStatusBarHeight();
+            statusBar.setLayoutParams(params);
+        }
+    }
+
+    /**
+     * 获取状态栏高度
+     */
+    private int getStatusBarHeight() {
+        int resourceId = mContext.getResources().getIdentifier("status_bar_height", "dimen", "android");
+        if (resourceId > 0) {
+            return mContext.getResources().getDimensionPixelSize(resourceId);
+        }
+        return DpUtil.dp2px(25); // 默认高度
+    }
+
+    /**
+     * 初始化ViewPager
+     */
+    private void initViewPager() {
+        // 创建三个页面的FrameLayout容器
+        for (int i = 0; i < mPageTitles.length; i++) {
+            FrameLayout frameLayout = new FrameLayout(mContext);
+            frameLayout.setLayoutParams(new ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.MATCH_PARENT));
+            mViewList.add(frameLayout);
+            mViewHolders.add(null);
+        }
+
+        // 设置ViewPager
+        mViewPager.setOffscreenPageLimit(mPageTitles.length - 1);
+        mViewPagerAdapter = new ViewPagerAdapter(mViewList);
+        mViewPager.setAdapter(mViewPagerAdapter);
+
+        // 设置页面切换监听
+        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+                // 页面滚动时的回调
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                loadPageData(position);
+                // 更新各个页面的显示状态
+                for (int i = 0; i < mViewHolders.size(); i++) {
+                    AbsMainViewHolder vh = mViewHolders.get(i);
+                    if (vh != null) {
+                        vh.setShowed(position == i);
+                    }
+                }
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+                // 页面滚动状态改变时的回调
+            }
+        });
+    }
+
+    /**
+     * 初始化顶部导航指示器
+     */
+    private void initIndicator() {
+        mNavigatorAdapter = new CommonNavigatorAdapter() {
+            @Override
+            public int getCount() {
+                return mPageTitles.length;
+            }
+
+            @Override
+            public IPagerTitleView getTitleView(Context context, final int index) {
+                MainHomePagerTitleView titleView = new MainHomePagerTitleView(context);
+                titleView.setNormalColor(0xff666666);
+                titleView.setSelectedColor(0xff111111);
+                titleView.setText(mPageTitles[index]);
+                titleView.setTextSize(18);
+                titleView.getPaint().setFakeBoldText(true);
+
+                titleView.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (mViewPager != null) {
+                            mViewPager.setCurrentItem(index, false);
+                        }
+                    }
+                });
+
+                mPagerTitleList.add(titleView);
+                return titleView;
+            }
+
+            @Override
+            public IPagerIndicator getIndicator(Context context) {
+                LinePagerIndicator indicator = new LinePagerIndicator(context);
+                indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
+                indicator.setXOffset(DpUtil.dp2px(5));
+                indicator.setRoundRadius(DpUtil.dp2px(2));
+                indicator.setColors(0xff111111);
+                mLinePagerIndicator = indicator;
+                return indicator;
+            }
+        };
+
+        CommonNavigator commonNavigator = new CommonNavigator(mContext);
+        commonNavigator.setAdapter(mNavigatorAdapter);
+        commonNavigator.setAdjustMode(false);
+
+        mIndicator.setNavigator(commonNavigator);
+        ViewPagerHelper.bind(mIndicator, mViewPager);
+    }
+
+    /**
+     * 加载指定位置的页面数据
+     */
+    private void loadPageData(int position) {
+        if (mViewHolders == null || position >= mViewHolders.size()) {
+            return;
+        }
+
+        AbsMainViewHolder vh = mViewHolders.get(position);
+        if (vh == null) {
+            FrameLayout parent = mViewList.get(position);
+            if (parent == null) {
+                return;
+            }
+
+            // 根据位置创建对应的ViewHolder
+            switch (position) {
+                case 0: // 乡村云店
+                    mRuralViewHolder = new MainShopRuralViewHolder(mContext, parent);
+                    vh = mRuralViewHolder;
+                    break;
+                case 1: // 都市云店
+                    mUrbanViewHolder = new MainShopUrbanViewHolder(mContext, parent);
+                    vh = mUrbanViewHolder;
+                    break;
+                case 2: // 一键云店
+                    mOneClickViewHolder = new MainShopOneClickViewHolder(mContext, parent);
+                    vh = mOneClickViewHolder;
+                    break;
+            }
+
+            if (vh != null) {
+                mViewHolders.set(position, vh);
+                vh.addToParent();
+                vh.subscribeActivityLifeCycle();
+            }
+        }
+
+        if (vh != null) {
+            vh.loadData();
+        }
+    }
+
+    @Override
+    public void loadData() {
+        if (isFirstLoadData()) {
+            loadPageData(0); // 默认加载第一个页面
+        }
+    }
+
+    @Override
+    public void setShowed(boolean showed) {
+        super.setShowed(showed);
+        if (showed && mViewPager != null) {
+            int currentItem = mViewPager.getCurrentItem();
+            AbsMainViewHolder vh = mViewHolders.get(currentItem);
+            if (vh != null) {
+                vh.setShowed(true);
+            }
+        }
+    }
+
+    /**
+     * 设置当前页面
+     */
+    public void setCurrentItem(int position) {
+        if (mViewPager != null && position >= 0 && position < mPageTitles.length) {
+            mViewPager.setCurrentItem(position, false);
+        }
+    }
+
+    /**
+     * 获取当前页面位置
+     */
+    public int getCurrentItem() {
+        return mViewPager != null ? mViewPager.getCurrentItem() : 0;
+    }
+}

+ 32 - 0
ybvideoandroid/main/src/main/res/layout/activity_im_msg_interaction.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/white">
+
+    <include layout="@layout/view_title_white" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/gray6" />
+
+    <com.google.android.material.tabs.TabLayout
+        android:id="@+id/tab_layout"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:background="@color/white"
+        app:tabIndicatorColor="@color/global"
+        app:tabSelectedTextColor="@color/global"
+        app:tabTextColor="@color/gray3"
+        app:tabMode="fixed"
+        app:tabGravity="fill" />
+
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/view_pager"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</LinearLayout>

+ 13 - 0
ybvideoandroid/main/src/main/res/layout/fragment_im_msg_at.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/white">
+
+    <com.yunbao.common.custom.CommonRefreshView
+        android:id="@+id/refreshView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</LinearLayout>

+ 13 - 0
ybvideoandroid/main/src/main/res/layout/fragment_im_msg_comment.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/white">
+
+    <com.yunbao.common.custom.CommonRefreshView
+        android:id="@+id/refreshView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</LinearLayout>

+ 13 - 0
ybvideoandroid/main/src/main/res/layout/fragment_im_msg_zan.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/white">
+
+    <com.yunbao.common.custom.CommonRefreshView
+        android:id="@+id/refreshView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</LinearLayout>

+ 29 - 0
ybvideoandroid/main/src/main/res/layout/item_user_avatar.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginRight="16dp">
+
+    <com.makeramen.roundedimageview.RoundedImageView
+        android:id="@+id/avatar_user"
+        android:layout_width="60dp"
+        android:layout_height="60dp"
+        android:layout_gravity="center"
+        android:scaleType="centerCrop"
+        android:src="@mipmap/icon_avatar_placeholder"
+        app:riv_oval="true" />
+
+    <TextView
+        android:id="@+id/name_user"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="75dp"
+        android:text="用户名"
+        android:textColor="@color/textColorBlack"
+        android:textSize="12sp"
+        android:maxLines="1"
+        android:ellipsize="end" />
+
+</FrameLayout>

+ 14 - 14
ybvideoandroid/main/src/main/res/layout/view_main_home.xml

@@ -28,24 +28,24 @@
             android:gravity="center_vertical"
             >
 
-<!--            <ImageView-->
-<!--                android:id="@+id/btn_menu"-->
-<!--                android:layout_width="26dp"-->
-<!--                android:layout_height="26dp"-->
-<!--                android:onClick="mainClick"-->
-<!--                android:layout_marginLeft="10dp"-->
-<!--                android:src="@mipmap/icon_home_menu"-->
-<!--                />-->
             <ImageView
-                android:id="@+id/btn_live_square"
-                android:layout_width="46dp"
-                android:layout_height="46dp"
+                android:id="@+id/btn_menu"
+                android:layout_width="26dp"
+                android:layout_height="26dp"
                 android:onClick="mainClick"
                 android:layout_marginLeft="10dp"
-                app:tint="@color/black"
-                android:padding="10dp"
-                android:src="@mipmap/icon_live_square"
+                android:src="@mipmap/icon_main_left"
                 />
+<!--            <ImageView-->
+<!--                android:id="@+id/btn_live_square"-->
+<!--                android:layout_width="46dp"-->
+<!--                android:layout_height="46dp"-->
+<!--                android:onClick="mainClick"-->
+<!--                android:layout_marginLeft="10dp"-->
+<!--                app:tint="@color/black"-->
+<!--                android:padding="10dp"-->
+<!--                android:src="@mipmap/icon_live_square"-->
+<!--                />-->
 
 
 

+ 9 - 9
ybvideoandroid/main/src/main/res/layout/view_main_msg.xml

@@ -5,7 +5,7 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:background="#f5f5f5"
-    android:paddingBottom="70dp">
+    android:paddingBottom="48dp">
 
 
     <LinearLayout
@@ -36,14 +36,14 @@
                 android:textStyle="bold" />
 
             <!--<ImageView-->
-                <!--android:id="@+id/btn_back"-->
-                <!--android:layout_width="40dp"-->
-                <!--android:layout_height="40dp"-->
-                <!--android:layout_centerVertical="true"-->
-                <!--android:onClick="backClick"-->
-                <!--android:padding="9dp"-->
-                <!--android:src="@mipmap/icon_back"-->
-                <!--android:tint="@color/textColor" />-->
+            <!--android:id="@+id/btn_back"-->
+            <!--android:layout_width="40dp"-->
+            <!--android:layout_height="40dp"-->
+            <!--android:layout_centerVertical="true"-->
+            <!--android:onClick="backClick"-->
+            <!--android:padding="9dp"-->
+            <!--android:src="@mipmap/icon_back"-->
+            <!--android:tint="@color/textColor" />-->
 
             <ImageView
                 android:layout_centerVertical="true"

+ 209 - 245
ybvideoandroid/main/src/main/res/layout/view_main_msg_top.xml

@@ -4,123 +4,119 @@
     android:id="@+id/contact_view"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    android:background="@color/white">
 
+    <!-- 顶部用户头像区域 - 可滚动 -->
     <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="90dp"
-        android:background="@color/white"
-        android:orientation="horizontal">
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:padding="16dp">
 
-        <FrameLayout
-            android:id="@+id/btn_fans"
+        <!-- 用户头像滚动区域 -->
+        <HorizontalScrollView
             android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="1">
-
-            <ImageView
-                android:layout_width="50dp"
-                android:layout_height="50dp"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginTop="9dp"
-                android:src="@mipmap/icon_main_msg_fans" />
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:scrollbars="none"
+            android:overScrollMode="never">
 
-            <TextView
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recycler_user_avatars"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal|bottom"
-                android:layout_marginBottom="8dp"
-                android:text="@string/fans"
-                android:textColor="@color/textColorBlack"
-                android:textSize="15sp" />
-
-            <TextView
-                android:id="@+id/red_point_fans"
-                android:layout_width="wrap_content"
-                android:layout_height="14dp"
-                android:layout_gravity="right"
-                android:layout_marginTop="5dp"
-                android:layout_marginRight="20dp"
-                android:background="@drawable/bg_red_point"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="14dp"
-                android:paddingLeft="3dp"
-                android:paddingRight="3dp"
-                android:textColor="#fff"
-                android:textSize="10dp"
-                android:visibility="invisible" />
+                android:orientation="horizontal"
+                android:overScrollMode="never" />
 
-        </FrameLayout>
+        </HorizontalScrollView>
 
+        <!-- 状态设置按钮 - 固定在最右边 -->
         <FrameLayout
-            android:id="@+id/btn_zan"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="1">
+            android:id="@+id/btn_status_setting"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="16dp">
 
             <ImageView
-                android:layout_width="50dp"
-                android:layout_height="50dp"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginTop="9dp"
-                android:src="@mipmap/icon_main_msg_zan" />
+                android:layout_width="60dp"
+                android:layout_height="60dp"
+                android:layout_gravity="center"
+                android:src="@mipmap/icon_message_setting"
+                android:scaleType="centerInside" />
 
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal|bottom"
-                android:layout_marginBottom="8dp"
-                android:text="@string/im_msg_zan"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="76dp"
+                android:text="状态设置"
                 android:textColor="@color/textColorBlack"
-                android:textSize="15sp" />
-
-            <TextView
-                android:id="@+id/red_point_zan"
-                android:layout_width="wrap_content"
-                android:layout_height="14dp"
-                android:layout_gravity="right"
-                android:layout_marginTop="5dp"
-                android:layout_marginRight="20dp"
-                android:background="@drawable/bg_red_point"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="14dp"
-                android:paddingLeft="3dp"
-                android:paddingRight="3dp"
-                android:textColor="#fff"
-                android:textSize="10dp"
-                android:visibility="invisible" />
+                android:textSize="12sp" />
         </FrameLayout>
 
-        <FrameLayout
-            android:id="@+id/btn_at"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="1">
+    </LinearLayout>
+
+    <!-- 分割线 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="8dp"
+        android:background="#f5f5f5" />
+
+    <!-- 消息列表区域 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        android:orientation="vertical"
+        android:paddingTop="15dp"
+        android:paddingBottom="15dp">
+
+        <!-- 新增粉丝 -->
+        <RelativeLayout
+            android:id="@+id/btn_fans"
+            android:layout_width="match_parent"
+            android:layout_height="55dp"
+            android:background="?android:attr/selectableItemBackground">
 
             <ImageView
-                android:layout_width="50dp"
-                android:layout_height="50dp"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginTop="9dp"
-                android:src="@mipmap/icon_main_msg_at" />
+                android:id="@+id/icon_fans"
+                android:layout_width="55dp"
+                android:layout_height="55dp"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_marginRight="10dp"
+                android:src="@mipmap/icon_message_fans"
+                android:scaleType="centerInside" />
 
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal|bottom"
-                android:layout_marginBottom="8dp"
-                android:text="@string/im_msg_at"
+                android:layout_alignParentTop="true"
+                android:layout_toRightOf="@id/icon_fans"
+                android:text="新增粉丝"
                 android:textColor="@color/textColorBlack"
-                android:textSize="15sp" />
+                android:textSize="16sp"
+                android:textStyle="bold"/>
 
             <TextView
-                android:id="@+id/red_point_at"
+                android:id="@+id/tv_fans"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentBottom="true"
+                android:layout_toRightOf="@id/icon_fans"
+                android:text="暂无"
+                android:textColor="#7d7d7d"
+                android:textSize="14sp"
+                android:maxLines="1"
+                android:ellipsize="end" />
+
+            <TextView
+                android:id="@+id/red_point_fans"
                 android:layout_width="wrap_content"
                 android:layout_height="14dp"
-                android:layout_gravity="right"
-                android:layout_marginTop="5dp"
+                android:layout_centerVertical="true"
+                android:layout_alignParentRight="true"
                 android:layout_marginRight="20dp"
                 android:background="@drawable/bg_red_point"
                 android:gravity="center"
@@ -128,39 +124,59 @@
                 android:minWidth="14dp"
                 android:paddingLeft="3dp"
                 android:paddingRight="3dp"
-                android:textColor="#fff"
+                android:text="1"
+                android:textColor="@color/white"
                 android:textSize="10dp"
-                android:visibility="invisible" />
-        </FrameLayout>
+                android:visibility="visible" />
 
-        <FrameLayout
-            android:id="@+id/btn_comment"
-            android:layout_width="0dp"
-            android:layout_height="match_parent"
-            android:layout_weight="1">
+        </RelativeLayout>
+
+        <!-- 互动消息 -->
+        <RelativeLayout
+            android:id="@+id/btn_interaction"
+            android:layout_width="match_parent"
+            android:layout_height="55dp"
+            android:background="?android:attr/selectableItemBackground"
+            android:layout_marginTop="20dp">
 
             <ImageView
-                android:layout_width="50dp"
-                android:layout_height="50dp"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginTop="9dp"
-                android:src="@mipmap/icon_main_msg_comment" />
+                android:id="@+id/icon_interaction"
+                android:layout_width="55dp"
+                android:layout_height="55dp"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_marginRight="10dp"
+                android:src="@mipmap/icon_message_user"
+                android:scaleType="centerInside" />
 
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal|bottom"
-                android:layout_marginBottom="8dp"
-                android:text="@string/im_msg_comment"
+                android:layout_alignParentTop="true"
+                android:layout_toRightOf="@id/icon_interaction"
+                android:text="互动消息"
                 android:textColor="@color/textColorBlack"
-                android:textSize="15sp" />
+                android:textSize="16sp"
+                android:textStyle="bold"/>
+
+            <TextView
+                android:id="@+id/tv_interaction"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentBottom="true"
+                android:layout_toRightOf="@id/icon_interaction"
+                android:text="暂无"
+                android:textColor="#7d7d7d"
+                android:textSize="14sp"
+                android:maxLines="1"
+                android:ellipsize="end" />
 
             <TextView
-                android:id="@+id/red_point_comment"
+                android:id="@+id/red_point_interaction"
                 android:layout_width="wrap_content"
                 android:layout_height="14dp"
-                android:layout_gravity="right"
-                android:layout_marginTop="5dp"
+                android:layout_centerVertical="true"
+                android:layout_alignParentRight="true"
                 android:layout_marginRight="20dp"
                 android:background="@drawable/bg_red_point"
                 android:gravity="center"
@@ -168,194 +184,142 @@
                 android:minWidth="14dp"
                 android:paddingLeft="3dp"
                 android:paddingRight="3dp"
-                android:textColor="#fff"
+                android:text="1"
+                android:textColor="@color/white"
                 android:textSize="10dp"
-                android:visibility="invisible" />
-
-        </FrameLayout>
-
-    </LinearLayout>
+                android:visibility="visible" />
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="10dp"
-        android:background="@color/white"
-        android:orientation="vertical">
+        </RelativeLayout>
 
+        <!-- 平台消息 -->
         <RelativeLayout
             android:id="@+id/btn_offcial_msg"
             android:layout_width="match_parent"
-            android:layout_height="70dp">
-
-            <com.makeramen.roundedimageview.RoundedImageView
-                android:id="@+id/avatar_offcial"
-                android:layout_width="40dp"
-                android:layout_height="40dp"
-                android:layout_centerVertical="true"
-                android:layout_marginLeft="15dp"
-                android:layout_marginRight="15dp"
-                android:scaleType="centerCrop"
-                app:riv_oval="true"
-                android:src="@mipmap/icon_main_msg_avatar_official"
-                />
+            android:layout_height="55dp"
+            android:background="?android:attr/selectableItemBackground"
+            android:layout_marginTop="20dp">
 
             <ImageView
-                android:layout_width="24dp"
-                android:layout_height="wrap_content"
-                android:layout_alignRight="@id/avatar_offcial"
-                android:layout_alignBottom="@id/avatar_offcial"
-                android:adjustViewBounds="true"
-                android:src="@mipmap/icon_main_msg_sys"
-                android:translationY="2dp" />
+                android:id="@+id/icon_official"
+                android:layout_width="55dp"
+                android:layout_height="55dp"
+                android:layout_centerVertical="true"
+                android:layout_marginLeft="10dp"
+                android:layout_marginRight="10dp"
+                android:src="@mipmap/icon_message_platform"
+                android:scaleType="centerInside" />
 
             <TextView
-                android:id="@+id/name_offcial"
+                android:id="@+id/tv_official_title"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:layout_toRightOf="@id/avatar_offcial"
-                android:ellipsize="end"
-                android:singleLine="true"
+                android:layout_alignParentTop="true"
+                android:layout_toRightOf="@id/icon_official"
+                android:text="平台消息"
                 android:textColor="@color/textColorBlack"
-                android:textSize="16sp" />
-
+                android:textSize="16sp"
+                android:textStyle="bold"/>
 
             <TextView
-                android:id="@+id/msg_offcial"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_below="@id/name_offcial"
-                android:layout_marginTop="2dp"
-                android:layout_marginRight="80dp"
-                android:layout_toRightOf="@id/avatar_offcial"
-                android:ellipsize="end"
-                android:singleLine="true"
+                android:layout_alignParentTop="true"
+                android:layout_toRightOf="@id/tv_official_title"
+                android:layout_marginLeft="10dp"
+                android:text="官方"
+                android:padding="3dp"
                 android:textColor="#7d7d7d"
-                android:textSize="14sp" />
-
+                android:background="#E9E9E9"
+                android:textSize="12sp" />
 
             <TextView
-                android:id="@+id/time_offcial"
+                android:id="@+id/msg_offcial"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignTop="@id/name_offcial"
-                android:layout_alignParentRight="true"
-                android:layout_marginTop="3dp"
-                android:layout_marginRight="15dp"
+                android:layout_alignParentBottom="true"
+                android:layout_toRightOf="@id/icon_official"
+                android:text="暂无"
                 android:textColor="#7d7d7d"
-                android:textSize="12sp" />
+                android:textSize="14sp"
+                android:maxLines="1"
+                android:ellipsize="end" />
 
-            <TextView
-                android:id="@+id/red_point_offcial"
-                android:layout_width="wrap_content"
-                android:layout_height="14dp"
-                android:layout_below="@id/time_offcial"
+            <ImageView
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:layout_centerVertical="true"
                 android:layout_alignParentRight="true"
-                android:layout_marginTop="5dp"
-                android:layout_marginRight="20dp"
-                android:background="@drawable/bg_red_point"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="14dp"
-                android:paddingLeft="3dp"
-                android:paddingRight="3dp"
-                android:textColor="@color/white"
-                android:textSize="10dp"
-                android:visibility="invisible" />
-
-<!--            <View-->
-<!--                android:background="#f5f5f5"-->
-<!--                android:layout_height="1dp"-->
-<!--                android:layout_width="match_parent"-->
-<!--                android:layout_alignParentBottom="true"-->
-<!--                android:layout_marginLeft="15dp"-->
-<!--                android:layout_marginRight="15dp" />-->
+                android:layout_marginRight="15dp"
+                android:src="@mipmap/icon_arrow_right"
+                android:scaleType="centerInside" />
 
         </RelativeLayout>
 
+        <!-- 购物通知 -->
         <RelativeLayout
-            android:id="@+id/btn_system_msg"
+            android:id="@+id/btn_shopping"
             android:layout_width="match_parent"
-            android:layout_height="70dp">
-
-            <com.makeramen.roundedimageview.RoundedImageView
-                android:id="@+id/avatar_system"
-                android:layout_width="40dp"
-                android:layout_height="40dp"
-                android:layout_centerVertical="true"
-                android:layout_marginLeft="15dp"
-                android:layout_marginRight="15dp"
-                android:scaleType="centerCrop"
-                android:src="@mipmap/icon_main_msg_avatar_system"
-                app:riv_oval="true" />
+            android:layout_marginTop="20dp"
+            android:layout_height="55dp"
+            android:background="?android:attr/selectableItemBackground">
 
             <ImageView
-                android:layout_width="24dp"
-                android:layout_height="wrap_content"
-                android:layout_alignRight="@id/avatar_system"
-                android:layout_alignBottom="@id/avatar_system"
-                android:adjustViewBounds="true"
-                android:src="@mipmap/icon_main_msg_sys"
-                android:translationY="2dp" />
-
+                android:id="@+id/icon_shopping"
+                android:layout_width="55dp"
+                android:layout_height="55dp"
+                android:layout_alignParentTop="true"
+                android:layout_marginLeft="10dp"
+                android:layout_marginRight="10dp"
+                android:src="@mipmap/icon_message_shop"
+                android:scaleType="centerInside" />
 
             <TextView
-                android:id="@+id/name_system"
+                android:id="@+id/tv_shop_title"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:layout_toRightOf="@id/avatar_system"
-                android:ellipsize="end"
-                android:singleLine="true"
-                android:text="@string/im_system_notice"
+                android:layout_alignParentTop="true"
+                android:layout_toRightOf="@id/icon_shopping"
+                android:text="购物通知"
                 android:textColor="@color/textColorBlack"
-                android:textSize="16sp" />
-
+                android:textSize="16sp"
+                android:textStyle="bold"/>
 
             <TextView
-                android:id="@+id/msg_system"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_below="@id/name_system"
-                android:layout_marginTop="2dp"
-                android:layout_marginRight="80dp"
-                android:layout_toRightOf="@id/avatar_system"
-                android:ellipsize="end"
-                android:singleLine="true"
+                android:layout_alignParentTop="true"
+                android:layout_toRightOf="@id/tv_shop_title"
+                android:layout_marginLeft="10dp"
+                android:text="官方"
+                android:padding="3dp"
                 android:textColor="#7d7d7d"
-                android:textSize="14sp" />
-
+                android:background="#E9E9E9"
+                android:textSize="12sp" />
 
             <TextView
-                android:id="@+id/time_system"
+                android:id="@+id/msg_shopping"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_alignTop="@id/name_system"
-                android:layout_alignParentRight="true"
-                android:layout_marginTop="3dp"
-                android:layout_marginRight="15dp"
+                android:layout_alignParentBottom="true"
+                android:layout_marginTop="2dp"
+                android:layout_toRightOf="@id/icon_shopping"
+                android:text="暂无"
                 android:textColor="#7d7d7d"
-                android:textSize="12sp" />
+                android:textSize="14sp"
+                android:maxLines="1"
+                android:ellipsize="end" />
 
-            <TextView
-                android:id="@+id/red_point_system"
-                android:layout_width="wrap_content"
-                android:layout_height="14dp"
-                android:layout_below="@id/time_system"
+            <ImageView
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:layout_centerVertical="true"
                 android:layout_alignParentRight="true"
-                android:layout_marginTop="5dp"
-                android:layout_marginRight="20dp"
-                android:background="@drawable/bg_red_point"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="14dp"
-                android:paddingLeft="3dp"
-                android:paddingRight="3dp"
-                android:textColor="@color/white"
-                android:textSize="10dp"
-                android:visibility="invisible" />
+                android:layout_marginRight="15dp"
+                android:src="@mipmap/icon_arrow_right"
+                android:scaleType="centerInside" />
+
         </RelativeLayout>
+
     </LinearLayout>
-</LinearLayout>
 
+</LinearLayout>

+ 31 - 0
ybvideoandroid/main/src/main/res/layout/view_main_shop.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="#F5F5F5">
+
+    <!-- 状态栏占位 -->
+    <View
+        android:id="@+id/status_bar"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:background="@android:color/white" />
+
+    <!-- 顶部导航栏使用MagicIndicator -->
+    <net.lucode.hackware.magicindicator.MagicIndicator
+        android:id="@+id/indicator"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:background="@android:color/white" />
+
+    <!-- ViewPager容器 -->
+    <androidx.viewpager.widget.ViewPager
+        android:id="@+id/viewPager"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+</LinearLayout>

+ 36 - 0
ybvideoandroid/main/src/main/res/layout/view_main_shop_one_click.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="#F5F5F5"
+    android:padding="16dp">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="一键云店"
+        android:textSize="24sp"
+        android:textColor="#333333"
+        android:textStyle="bold"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="50dp" />
+
+    <TextView
+        android:id="@+id/tv_description"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="快速开店,轻松购物"
+        android:textSize="16sp"
+        android:textColor="#666666"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="16dp" />
+
+    <!-- 这里可以添加更多一键云店相关的UI组件 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+</LinearLayout>

+ 36 - 0
ybvideoandroid/main/src/main/res/layout/view_main_shop_rural.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="#F5F5F5"
+    android:padding="16dp">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="乡村云店"
+        android:textSize="24sp"
+        android:textColor="#333333"
+        android:textStyle="bold"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="50dp" />
+
+    <TextView
+        android:id="@+id/tv_description"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="为乡村地区提供优质商品和服务"
+        android:textSize="16sp"
+        android:textColor="#666666"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="16dp" />
+
+    <!-- 这里可以添加更多乡村云店相关的UI组件 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+</LinearLayout>

+ 36 - 0
ybvideoandroid/main/src/main/res/layout/view_main_shop_urban.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="#F5F5F5"
+    android:padding="16dp">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="都市云店"
+        android:textSize="24sp"
+        android:textColor="#333333"
+        android:textStyle="bold"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="50dp" />
+
+    <TextView
+        android:id="@+id/tv_description"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="为都市人群提供便捷的购物体验"
+        android:textSize="16sp"
+        android:textColor="#666666"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="16dp" />
+
+    <!-- 这里可以添加更多都市云店相关的UI组件 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+</LinearLayout>

binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_main_left.png


binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_main_search.png


binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_fans.png


binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_platform.png


binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_setting.png


binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_shop.png


binární
ybvideoandroid/main/src/main/res/mipmap-mdpi/icon_message_user.png


+ 8 - 8
ybvideoandroid/video/src/main/java/com/yunbao/video/dialog/VideoShareDialogFragment.java

@@ -179,14 +179,14 @@ public class VideoShareDialogFragment extends AbsDialogFragment implements OnIte
         linkBean.setIcon1(R.mipmap.icon_share_video_link_dark);
         list2.add(linkBean);
 
-//        if (self) {
-//            MobBean settingBean = new MobBean();
-//            settingBean.setType(Constants.SET);
-//            settingBean.setName(R.string.设置);
-//            settingBean.setIcon1(R.mipmap.icon_setting_dark);
-//            list2.add(settingBean);
-//
-//        }
+        if (self) {
+            MobBean settingBean = new MobBean();
+            settingBean.setType(Constants.SET);
+            settingBean.setName(R.string.设置);
+            settingBean.setIcon1(R.mipmap.icon_setting_dark);
+            list2.add(settingBean);
+
+        }
         adapter2 = new VideoShareAdapter(mContext, list2,false);
         adapter2.setOnItemClickListener(this);
         mRecyclerView2.setAdapter(adapter2);