Sheffi пре 5 месеци
родитељ
комит
355c1f65ec
53 измењених фајлова са 2714 додато и 109 уклоњено
  1. BIN
      ybvideoandroid/.codebuddy/.ignored_image/3a769d182d5e6d49ca3f2f441b1695a2.png
  2. BIN
      ybvideoandroid/.codebuddy/.ignored_image/987a5f980a2d34ac502414444dece454.png
  3. BIN
      ybvideoandroid/.codebuddy/.ignored_image/efcc9cd4d6800c236f1078130206c6d2.png
  4. 1 1
      ybvideoandroid/app/build.gradle
  5. 1 1
      ybvideoandroid/app/src/main/res/values/strings.xml
  6. 2 2
      ybvideoandroid/common/src/main/java/com/yunbao/common/utils/RouteUtil.java
  7. 176 6
      ybvideoandroid/main/src/main/java/com/yunbao/main/activity/MainActivity.java
  8. 77 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/CategoryAdapter.java
  9. 95 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/RankingAdapter.java
  10. 100 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/RecommendAdapter.java
  11. 33 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/bean/CategoryBean.java
  12. 38 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/bean/RankingBean.java
  13. 43 0
      ybvideoandroid/main/src/main/java/com/yunbao/main/bean/RecommendBean.java
  14. 1 1
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainHomeFollowViewHolder.java
  15. 33 20
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java
  16. 501 17
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopRuralViewHolder.java
  17. 33 22
      ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopViewHolder.java
  18. 4 0
      ybvideoandroid/main/src/main/res/drawable/bg_brand_tag.xml
  19. 7 0
      ybvideoandroid/main/src/main/res/drawable/bg_btn_logout.xml
  20. 10 0
      ybvideoandroid/main/src/main/res/drawable/bg_category_circle.xml
  21. 5 0
      ybvideoandroid/main/src/main/res/drawable/bg_circle_white.xml
  22. 9 0
      ybvideoandroid/main/src/main/res/drawable/bg_goods_item.xml
  23. 8 0
      ybvideoandroid/main/src/main/res/drawable/bg_rank.xml
  24. 6 0
      ybvideoandroid/main/src/main/res/drawable/bg_region_tag.xml
  25. 4 0
      ybvideoandroid/main/src/main/res/drawable/bg_search_box.xml
  26. 6 0
      ybvideoandroid/main/src/main/res/drawable/bg_system_message.xml
  27. 4 0
      ybvideoandroid/main/src/main/res/drawable/ic_shop_default.xml
  28. 16 2
      ybvideoandroid/main/src/main/res/layout/activity_main.xml
  29. 397 0
      ybvideoandroid/main/src/main/res/layout/drawer_menu.xml
  30. 16 0
      ybvideoandroid/main/src/main/res/layout/fragment_shop_all_goods.xml
  31. 476 0
      ybvideoandroid/main/src/main/res/layout/fragment_shop_home.xml
  32. 34 0
      ybvideoandroid/main/src/main/res/layout/item_category.xml
  33. 225 0
      ybvideoandroid/main/src/main/res/layout/item_main_shop_rural.xml
  34. 66 0
      ybvideoandroid/main/src/main/res/layout/item_ranking.xml
  35. 83 0
      ybvideoandroid/main/src/main/res/layout/item_recommend.xml
  36. 91 0
      ybvideoandroid/main/src/main/res/layout/item_shop_goods_left.xml
  37. 91 0
      ybvideoandroid/main/src/main/res/layout/item_shop_goods_right.xml
  38. 2 1
      ybvideoandroid/main/src/main/res/layout/view_main_home_recommend.xml
  39. 7 1
      ybvideoandroid/main/src/main/res/layout/view_main_shop.xml
  40. 3 29
      ybvideoandroid/main/src/main/res/layout/view_main_shop_rural.xml
  41. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_arrow_down.png
  42. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_history.png
  43. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_order.png
  44. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_qrcode.png
  45. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_setting.png
  46. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_shop.png
  47. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_wallet.png
  48. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/linshi2.png
  49. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/linshi3.png
  50. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/linshi4.png
  51. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/lishi1.png
  52. BIN
      ybvideoandroid/main/src/main/res/mipmap-mdpi/pijiu1.png
  53. 10 6
      ybvideoandroid/video/src/main/java/com/yunbao/video/bean/ClassBean.java

BIN
ybvideoandroid/.codebuddy/.ignored_image/3a769d182d5e6d49ca3f2f441b1695a2.png


BIN
ybvideoandroid/.codebuddy/.ignored_image/987a5f980a2d34ac502414444dece454.png


BIN
ybvideoandroid/.codebuddy/.ignored_image/efcc9cd4d6800c236f1078130206c6d2.png


+ 1 - 1
ybvideoandroid/app/build.gradle

@@ -47,7 +47,7 @@ android {
     }
 
     android.applicationVariants.all { variant ->
-        def appName = "云镜直播"
+        def appName = "旭拍拍"
         def createTime = new Date().format("yyMMddHHmm", TimeZone.getTimeZone("GMT+08:00"))
         def fileName = appName + "_v" + defaultConfig.versionName + "_" + createTime
         variant.outputs.each { output ->

+ 1 - 1
ybvideoandroid/app/src/main/res/values/strings.xml

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <string name="app_name" translatable="false">云麦</string>
+    <string name="app_name" translatable="false">旭拍拍</string>
 </resources>

+ 2 - 2
ybvideoandroid/common/src/main/java/com/yunbao/common/utils/RouteUtil.java

@@ -20,14 +20,14 @@ public class RouteUtil {
      */
     public static void forwardLauncher() {
         Intent intent = new Intent();
-        intent.setClassName(CommonAppConfig.PACKAGE_NAME, "com.yunbao.shortvideo.activity.LauncherActivity");
+        intent.setClassName(CommonAppConfig.PACKAGE_NAME, "com.yunbao.fqshortvideo.activity.LauncherActivity");
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
         CommonAppContext.getInstance().startActivity(intent);
     }
 
     public static void forwardLauncher(int type,String data) {
         Intent intent = new Intent();
-        intent.setClassName(CommonAppConfig.PACKAGE_NAME, "com.yunbao.shortvideo.activity.LauncherActivity");
+        intent.setClassName(CommonAppConfig.PACKAGE_NAME, "com.yunbao.fqshortvideo.activity.LauncherActivity");
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
         intent.putExtra(Constants.PUSH_TYPE, type);
         intent.putExtra(Constants.PUSH_DATA, data);

+ 176 - 6
ybvideoandroid/main/src/main/java/com/yunbao/main/activity/MainActivity.java

@@ -18,6 +18,8 @@ import android.widget.TextView;
 
 import androidx.annotation.Nullable;
 import androidx.core.content.ContextCompat;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.viewpager.widget.ViewPager;
 
 import com.alibaba.fastjson.JSON;
@@ -50,6 +52,7 @@ import com.yunbao.common.upload.UploadUtil;
 import com.yunbao.common.utils.DialogUitl;
 import com.yunbao.common.utils.L;
 import com.yunbao.common.utils.LocationUtil;
+import com.yunbao.common.utils.RouteUtil;
 import com.yunbao.common.utils.SpUtil;
 import com.yunbao.common.utils.ToastUtil;
 import com.yunbao.common.utils.VersionUtil;
@@ -71,10 +74,12 @@ import com.yunbao.main.utils.LoginUtil;
 import com.yunbao.main.views.AbsMainViewHolder;
 import com.yunbao.main.views.BonusViewHolder;
 import com.yunbao.main.views.MainCityViewHolder;
+import com.yunbao.main.views.MainHomeRecommendViewHolder;
 import com.yunbao.main.views.MainHomeViewHolder;
 import com.yunbao.main.views.MainMallViewHolder;
 import com.yunbao.main.views.MainMeViewHolder;
 import com.yunbao.main.views.MainMessageViewHolder;
+import com.yunbao.mall.activity.BuyerOrderActivity;
 import com.yunbao.video.activity.AbsVideoPlayActivity;
 import com.yunbao.video.utils.VideoRedPackTime;
 import com.yunbao.video.utils.VideoStorge;
@@ -103,6 +108,7 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
     private List<FrameLayout> mViewList;
     private MainHomeViewHolder mHomeViewHolder;
     private MainCityViewHolder mHomeCityHolder;
+    private MainHomeRecommendViewHolder mRecommendViewHolder;
     private MainMallViewHolder mHomeMallHolder;
     private MainMessageViewHolder mHomeMessageHolder;
     private MainMeViewHolder mMeViewHolder;
@@ -123,6 +129,8 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
     private Dialog mTeenagerOpenDialog;
     private View mBtnFullFunction;
     private boolean mIsBaseMode;
+    private DrawerLayout mDrawerLayout;
+    private View mDrawerMenu;
 
     @Override
     protected int getLayoutId() {
@@ -139,6 +147,11 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
         mRedPoint = findViewById(R.id.red_point);
         mRootView = (ViewGroup) findViewById(R.id.root);
         mViewPager = (ViewPager) findViewById(R.id.viewPager);
+        mDrawerLayout = findViewById(R.id.drawer_layout);
+//        mDrawerMenu = findViewById(R.id.drawer_menu);
+        mDrawerLayout = findViewById(R.id.drawer_layout);
+        // 直接从DrawerLayout中获取侧推栏视图
+        mDrawerMenu = mDrawerLayout.getChildAt(1);
         mViewPager.setOffscreenPageLimit(4);
         mViewList = new ArrayList<>();
         for (int i = 0; i < 4; i++) {
@@ -188,6 +201,9 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
         if (!EventBus.getDefault().isRegistered(this)) {
             EventBus.getDefault().register(this);
         }
+        
+        // 初始化侧推栏
+        initDrawerMenu();
         CommonAppConfig.getInstance().setLaunched(true);
         VideoRedPackTime.getInstance().clear();
         mFristLoad = true;
@@ -228,9 +244,9 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
 //            if (!TextUtils.isEmpty(cityVal) && cityVal.length() < 3) {
 //                mCityBtn.setText(cityVal);
 //            } else {
-//                mCityBtn.setText(WordUtil.getString(R.string.main_shop));
+                mCityBtn.setText(WordUtil.getString(R.string.recommend));
 //            }
-            mCityBtn.setText(WordUtil.getString(R.string.main_shop));
+//            mCityBtn.setText(WordUtil.getString(R.string.main_shop));
         }
     }
 
@@ -273,8 +289,10 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
             }
         } else if (i == R.id.btn_search) {
             SearchActivity.forward(mContext, 1);
-        } else if (i == R.id.btn_live_square) {
-            LiveSquareActivity.forward(mContext);
+        } else if (i == R.id.btn_menu) {
+            if (mDrawerLayout != null) {
+                mDrawerLayout.openDrawer(GravityCompat.START);
+            }
         }
     }
 
@@ -600,6 +618,10 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
 
     @Override
     public void onBackPressed() {
+        if (mDrawerLayout != null && mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
+            mDrawerLayout.closeDrawer(GravityCompat.START);
+            return;
+        }
         if (isLandscape()) {
             changeLandscape(false);
             return;
@@ -635,8 +657,10 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
                 } else if (position == 1) {
 //                    mHomeCityHolder = new MainCityViewHolder(mContext, parent);
 //                    vh = mHomeCityHolder;
-                    mHomeMallHolder = new MainMallViewHolder(mContext, parent);
-                    vh = mHomeMallHolder;
+//                    mHomeMallHolder = new MainMallViewHolder(mContext, parent);
+//                    vh = mHomeMallHolder;
+                    mRecommendViewHolder = new MainHomeRecommendViewHolder(mContext, parent);
+                    vh = mRecommendViewHolder;
                 } else if (position == 2) {
                     mHomeMessageHolder = new MainMessageViewHolder(mContext, parent);
                     vh = mHomeMessageHolder;
@@ -664,6 +688,8 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
         if (mBtnFullFunction != null && mBtnFullFunction.getVisibility() == View.VISIBLE) {
             mBtnFullFunction.setVisibility(View.INVISIBLE);
         }
+        // 更新侧推栏用户信息
+        updateDrawerUserInfo();
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -695,6 +721,8 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
             mRedPoint.setVisibility(View.INVISIBLE);
         }
         stopAndHideRedPackProgress();
+        // 更新侧推栏用户信息
+        updateDrawerUserInfo();
     }
 
     @Override
@@ -954,5 +982,147 @@ public class MainActivity extends AbsVideoPlayActivity implements TabButtonGroup
         }
     }
 
+    /**
+     * 初始化侧推栏
+     */
+    private void initDrawerMenu() {
+        if (mDrawerMenu == null) {
+            return;
+        }
+        
+        // 初始化用户信息
+        updateDrawerUserInfo();
+        
+        // 设置菜单项点击事件
+        View shopView = mDrawerMenu.findViewById(R.id.drawer_function_shop);
+        View historyView = mDrawerMenu.findViewById(R.id.drawer_function_history);
+        View settingsView = mDrawerMenu.findViewById(R.id.drawer_function_settings);
+        View walletView = mDrawerMenu.findViewById(R.id.drawer_function_wallet);
+        View orderView = mDrawerMenu.findViewById(R.id.drawer_function_order);
+        
+        if (shopView != null) {
+            shopView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    onDrawerMenuClick("shop");
+                }
+            });
+        }
+        
+        if (historyView != null) {
+            historyView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    onDrawerMenuClick("history");
+                }
+            });
+        }
+        
+        if (settingsView != null) {
+            settingsView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    onDrawerMenuClick("settings");
+                }
+            });
+        }
+        
+        if (walletView != null) {
+            walletView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    onDrawerMenuClick("wallet");
+                }
+            });
+        }
+        
+        if (orderView != null) {
+            orderView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    onDrawerMenuClick("order");
+                }
+            });
+        }
+    }
+    
+    /**
+     * 更新侧推栏用户信息
+     */
+    private void updateDrawerUserInfo() {
+        if (mDrawerMenu == null) {
+            return;
+        }
+        
+        TextView userName = mDrawerMenu.findViewById(R.id.drawer_user_name);
+        TextView userId = mDrawerMenu.findViewById(R.id.drawer_user_id);
+        ImageView userAvatar = mDrawerMenu.findViewById(R.id.drawer_user_avatar);
+        
+        if (CommonAppConfig.getInstance().isLogin()) {
+            String name = CommonAppConfig.getInstance().getUserBean().getUserNiceName();
+            String uid = CommonAppConfig.getInstance().getUid();
+            String avatar = CommonAppConfig.getInstance().getUserBean().getAvatar();
+            
+            if (userName != null) {
+                userName.setText(TextUtils.isEmpty(name) ? "用户昵称" : name);
+            }
+            if (userId != null) {
+                userId.setText("ID: " + (TextUtils.isEmpty(uid) ? "123456" : uid));
+            }
+            // 这里可以使用图片加载库加载头像
+            // ImgLoader.display(mContext, avatar, userAvatar);
+        } else {
+            if (userName != null) {
+                userName.setText("未登录");
+            }
+            if (userId != null) {
+                userId.setText("点击登录");
+            }
+        }
+    }
+    
+    /**
+     * 处理侧推栏菜单点击事件
+     */
+    private void onDrawerMenuClick(String menuType) {
+        // 关闭侧推栏
+        if (mDrawerLayout != null) {
+            mDrawerLayout.closeDrawer(GravityCompat.START);
+        }
+        
+        // 延迟执行菜单操作,让侧推栏先关闭
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                switch (menuType) {
+                    case "shop":
+                        // 切换到商城页面(ViewPager第2个)
+                        if (mHomeViewHolder != null) {
+                            mHomeViewHolder.setCurrentItem(2);
+                        } else {
+                            ToastUtil.show("商城功能");
+                        }
+                        break;
+                    case "history":
+                        // 跳转到观看历史页面
+                        VideoWatchRecordActivity.forward(mContext);
+                        break;
+                    case "settings":
+                        // 跳转到设置页面
+                        SettingActivity.forward(mContext);
+                        break;
+                    case "wallet":
+                        // 跳转到我的钱包页面
+                        RouteUtil.forwardMyCoin(mContext);
+                        break;
+                    case "order":
+                        // 跳转到我的订单页面
+                        BuyerOrderActivity.forward(mContext, 0);
+                        break;
+                }
+            }
+        }, 250);
+    }
+
 
 }

+ 77 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/CategoryAdapter.java

@@ -0,0 +1,77 @@
+package com.yunbao.main.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import com.yunbao.main.R;
+import com.yunbao.main.bean.CategoryBean;
+import java.util.List;
+
+public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.ViewHolder> {
+    private Context mContext;
+    private List<CategoryBean> mList;
+    private OnItemClickListener mOnItemClickListener;
+
+    public interface OnItemClickListener {
+        void onItemClick(CategoryBean item, int position);
+    }
+
+    public CategoryAdapter(Context context, List<CategoryBean> list) {
+        this.mContext = context;
+        this.mList = list;
+    }
+
+    public void setOnItemClickListener(OnItemClickListener listener) {
+        this.mOnItemClickListener = listener;
+    }
+
+    // 添加setData方法
+    public void setData(List<CategoryBean> list) {
+        this.mList = list;
+        notifyDataSetChanged();
+    }
+
+    @NonNull
+    @Override
+    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(mContext).inflate(R.layout.item_category, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+        CategoryBean item = mList.get(position);
+        holder.tvName.setText(item.getName());
+        
+        if (item.getIconRes() != 0) {
+            holder.ivIcon.setImageResource(item.getIconRes());
+        }
+        
+        holder.itemView.setOnClickListener(v -> {
+            if (mOnItemClickListener != null) {
+                mOnItemClickListener.onItemClick(item, position);
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList != null ? mList.size() : 0;
+    }
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        ImageView ivIcon;
+        TextView tvName;
+
+        ViewHolder(@NonNull View itemView) {
+            super(itemView);
+            ivIcon = itemView.findViewById(R.id.iv_icon);
+            tvName = itemView.findViewById(R.id.tv_name);
+        }
+    }
+}

+ 95 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/RankingAdapter.java

@@ -0,0 +1,95 @@
+package com.yunbao.main.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import com.yunbao.main.R;
+import com.yunbao.main.bean.RankingBean;
+import java.util.List;
+
+public class RankingAdapter extends RecyclerView.Adapter<RankingAdapter.ViewHolder> {
+    private Context mContext;
+    private List<RankingBean> mList;
+    private OnItemClickListener mOnItemClickListener;
+
+    public interface OnItemClickListener {
+        void onItemClick(RankingBean item, int position);
+    }
+
+    public RankingAdapter(Context context, List<RankingBean> list) {
+        this.mContext = context;
+        this.mList = list;
+    }
+
+    public void setOnItemClickListener(OnItemClickListener listener) {
+        this.mOnItemClickListener = listener;
+    }
+
+    // 添加setData方法
+    public void setData(List<RankingBean> list) {
+        this.mList = list;
+        notifyDataSetChanged();
+    }
+
+    @NonNull
+    @Override
+    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(mContext).inflate(R.layout.item_ranking, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+        RankingBean item = mList.get(position);
+        holder.tvName.setText(item.getName());
+        holder.tvPrice.setText("¥" + item.getPrice());
+        holder.tvRank.setText(String.valueOf(item.getRank()));
+        
+        if (item.getTag() != null && !item.getTag().isEmpty()) {
+            holder.tvTag.setVisibility(View.VISIBLE);
+            holder.tvTag.setText(item.getTag());
+        } else {
+            holder.tvTag.setVisibility(View.GONE);
+        }
+        
+        // 设置排名颜色
+        if (item.getRank() <= 3) {
+            holder.tvRank.setTextColor(mContext.getResources().getColor(android.R.color.holo_red_light));
+        } else {
+            holder.tvRank.setTextColor(mContext.getResources().getColor(android.R.color.darker_gray));
+        }
+        
+        holder.itemView.setOnClickListener(v -> {
+            if (mOnItemClickListener != null) {
+                mOnItemClickListener.onItemClick(item, position);
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList != null ? mList.size() : 0;
+    }
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        ImageView ivImage;
+        TextView tvName;
+        TextView tvPrice;
+        TextView tvRank;
+        TextView tvTag;
+
+        ViewHolder(@NonNull View itemView) {
+            super(itemView);
+            ivImage = itemView.findViewById(R.id.iv_image);
+            tvName = itemView.findViewById(R.id.tv_name);
+            tvPrice = itemView.findViewById(R.id.tv_price);
+            tvRank = itemView.findViewById(R.id.tv_rank);
+            tvTag = itemView.findViewById(R.id.tv_tag);
+        }
+    }
+}

+ 100 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/adapter/RecommendAdapter.java

@@ -0,0 +1,100 @@
+package com.yunbao.main.adapter;
+
+import android.content.Context;
+import android.graphics.Paint;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import com.yunbao.main.R;
+import com.yunbao.main.bean.RecommendBean;
+import java.util.List;
+
+public class RecommendAdapter extends RecyclerView.Adapter<RecommendAdapter.ViewHolder> {
+    private Context mContext;
+    private List<RecommendBean> mList;
+    private OnItemClickListener mOnItemClickListener;
+
+    public interface OnItemClickListener {
+        void onItemClick(RecommendBean item, int position);
+    }
+
+    public RecommendAdapter(Context context, List<RecommendBean> list) {
+        this.mContext = context;
+        this.mList = list;
+    }
+
+    public void setOnItemClickListener(OnItemClickListener listener) {
+        this.mOnItemClickListener = listener;
+    }
+
+    // 添加setData方法
+    public void setData(List<RecommendBean> list) {
+        this.mList = list;
+        notifyDataSetChanged();
+    }
+
+    @NonNull
+    @Override
+    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(mContext).inflate(R.layout.item_recommend, parent, false);
+        return new ViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+        RecommendBean item = mList.get(position);
+        holder.tvName.setText(item.getName());
+        holder.tvPrice.setText("¥" + item.getPrice());
+        
+        if (item.getOriginalPrice() != null && !item.getOriginalPrice().isEmpty()) {
+            holder.tvOriginalPrice.setVisibility(View.VISIBLE);
+            holder.tvOriginalPrice.setText("¥" + item.getOriginalPrice());
+            holder.tvOriginalPrice.setPaintFlags(holder.tvOriginalPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
+        } else {
+            holder.tvOriginalPrice.setVisibility(View.GONE);
+        }
+        
+        if (item.getTag() != null && !item.getTag().isEmpty()) {
+            holder.tvTag.setVisibility(View.VISIBLE);
+            holder.tvTag.setText(item.getTag());
+        } else {
+            holder.tvTag.setVisibility(View.GONE);
+        }
+        
+        holder.tvSales.setText(item.getSales() + "人购买");
+        
+        holder.itemView.setOnClickListener(v -> {
+            if (mOnItemClickListener != null) {
+                mOnItemClickListener.onItemClick(item, position);
+            }
+        });
+    }
+
+    @Override
+    public int getItemCount() {
+        return mList != null ? mList.size() : 0;
+    }
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        ImageView ivImage;
+        TextView tvName;
+        TextView tvPrice;
+        TextView tvOriginalPrice;
+        TextView tvTag;
+        TextView tvSales;
+
+        ViewHolder(@NonNull View itemView) {
+            super(itemView);
+            ivImage = itemView.findViewById(R.id.iv_image);
+            tvName = itemView.findViewById(R.id.tv_name);
+            tvPrice = itemView.findViewById(R.id.tv_price);
+            tvOriginalPrice = itemView.findViewById(R.id.tv_original_price);
+            tvTag = itemView.findViewById(R.id.tv_tag);
+            tvSales = itemView.findViewById(R.id.tv_sales);
+        }
+    }
+}

+ 33 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/bean/CategoryBean.java

@@ -0,0 +1,33 @@
+package com.yunbao.main.bean;
+
+public class CategoryBean {
+    private String id;
+    private String name;
+    private String iconUrl;
+    private int iconRes;
+
+    public CategoryBean(String id, String name, int iconRes) {
+        this.id = id;
+        this.name = name;
+        this.iconRes = iconRes;
+    }
+
+    public CategoryBean(String id, String name, String iconUrl) {
+        this.id = id;
+        this.name = name;
+        this.iconUrl = iconUrl;
+    }
+
+    // Getters and Setters
+    public String getId() { return id; }
+    public void setId(String id) { this.id = id; }
+    
+    public String getName() { return name; }
+    public void setName(String name) { this.name = name; }
+    
+    public String getIconUrl() { return iconUrl; }
+    public void setIconUrl(String iconUrl) { this.iconUrl = iconUrl; }
+    
+    public int getIconRes() { return iconRes; }
+    public void setIconRes(int iconRes) { this.iconRes = iconRes; }
+}

+ 38 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/bean/RankingBean.java

@@ -0,0 +1,38 @@
+package com.yunbao.main.bean;
+
+public class RankingBean {
+    private String id;
+    private String name;
+    private String imageUrl;
+    private String price;
+    private int rank;
+    private String tag;
+
+    public RankingBean(String id, String name, String imageUrl, String price, int rank, String tag) {
+        this.id = id;
+        this.name = name;
+        this.imageUrl = imageUrl;
+        this.price = price;
+        this.rank = rank;
+        this.tag = tag;
+    }
+
+    // Getters and Setters
+    public String getId() { return id; }
+    public void setId(String id) { this.id = id; }
+    
+    public String getName() { return name; }
+    public void setName(String name) { this.name = name; }
+    
+    public String getImageUrl() { return imageUrl; }
+    public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; }
+    
+    public String getPrice() { return price; }
+    public void setPrice(String price) { this.price = price; }
+    
+    public int getRank() { return rank; }
+    public void setRank(int rank) { this.rank = rank; }
+    
+    public String getTag() { return tag; }
+    public void setTag(String tag) { this.tag = tag; }
+}

+ 43 - 0
ybvideoandroid/main/src/main/java/com/yunbao/main/bean/RecommendBean.java

@@ -0,0 +1,43 @@
+package com.yunbao.main.bean;
+
+public class RecommendBean {
+    private String id;
+    private String name;
+    private String imageUrl;
+    private String price;
+    private String originalPrice;
+    private String tag;
+    private int sales;
+
+    public RecommendBean(String id, String name, String imageUrl, String price, String originalPrice, String tag, int sales) {
+        this.id = id;
+        this.name = name;
+        this.imageUrl = imageUrl;
+        this.price = price;
+        this.originalPrice = originalPrice;
+        this.tag = tag;
+        this.sales = sales;
+    }
+
+    // Getters and Setters
+    public String getId() { return id; }
+    public void setId(String id) { this.id = id; }
+    
+    public String getName() { return name; }
+    public void setName(String name) { this.name = name; }
+    
+    public String getImageUrl() { return imageUrl; }
+    public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; }
+    
+    public String getPrice() { return price; }
+    public void setPrice(String price) { this.price = price; }
+    
+    public String getOriginalPrice() { return originalPrice; }
+    public void setOriginalPrice(String originalPrice) { this.originalPrice = originalPrice; }
+    
+    public String getTag() { return tag; }
+    public void setTag(String tag) { this.tag = tag; }
+    
+    public int getSales() { return sales; }
+    public void setSales(int sales) { this.sales = sales; }
+}

+ 1 - 1
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainHomeFollowViewHolder.java

@@ -71,7 +71,7 @@ public class MainHomeFollowViewHolder extends AbsVideoMainViewHolder implements
 
             @Override
             public void loadData(int p, HttpCallback callback) {
-                MainHttpUtil.getFollowVideoList(p, callback);
+                MainHttpUtil.getRecommendVideoList(p, callback);
             }
 
             @Override

+ 33 - 20
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java

@@ -46,6 +46,8 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
     private List<FrameLayout> mViewList;
     private MagicIndicator mIndicator;
     private List<AbsMainViewHolder> mViewHolders;
+
+    private  MainShopViewHolder mShopViewHolder; // 云店
     private MainMallViewHolder mMainMallViewHolder;//商城
     private MainHomeFriendsViewHolder mFriendsViewHolder;//朋友
     private MainHomeNewsViewHolder mNewsViewHolder; // 新闻列表
@@ -90,13 +92,16 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
         mIndicator = (MagicIndicator) findViewById(R.id.indicator);
         mClassBeanList = new ArrayList<>();
 //        云店、朋友、新闻、同城、关注、发现
+        mClassBeanList.add(new ClassBean(ClassBean.VIDEO_ID, "直播"));
+        mClassBeanList.add(new ClassBean(ClassBean.MALL_ID, "商城"));
         mClassBeanList.add(new ClassBean(ClassBean.SHOP_ID, WordUtil.getString(R.string.main_shop)));
-        mClassBeanList.add(new ClassBean(ClassBean.FRIEND_ID, WordUtil.getString(R.string.main_friend)));
-        mClassBeanList.add(new ClassBean(ClassBean.NEWS_ID, WordUtil.getString(R.string.main_news)));
-        mClassBeanList.add(new ClassBean(ClassBean.CITY_ID, WordUtil.getString(R.string.main_city)));
+//        mClassBeanList.add(new ClassBean(ClassBean.SHOP_ID, WordUtil.getString(R.string.main_shop)));
+//        mClassBeanList.add(new ClassBean(ClassBean.FRIEND_ID, WordUtil.getString(R.string.main_friend)));
+//        mClassBeanList.add(new ClassBean(ClassBean.NEWS_ID, WordUtil.getString(R.string.main_news)));
+//        mClassBeanList.add(new ClassBean(ClassBean.CITY_ID, WordUtil.getString(R.string.main_city)));
 //        mClassBeanList.add(new ClassBean(ClassBean.RECOMMEND_ID, WordUtil.getString(R.string.recommend)));
 //        mClassBeanList.add(new ClassBean(ClassBean.HOT_ID, WordUtil.getString(R.string.hot)));
-        mClassBeanList.add(new ClassBean(ClassBean.FOLLOW_ID, WordUtil.getString(R.string.follow)));
+//        mClassBeanList.add(new ClassBean(ClassBean.FOLLOW_ID, WordUtil.getString(R.string.follow)));
 //        mClassBeanList.add(new ClassBean(ClassBean.DISCOVER_ID, WordUtil.getString(R.string.main_discover)));
         initData();
     }
@@ -107,7 +112,7 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
             public void onSuccess(int code, String msg, String[] info) {
                 if (code == 0) {
                     List<ClassBean> list = JSON.parseArray(Arrays.toString(info), ClassBean.class);
-                    mClassBeanList.addAll(list);
+//                    mClassBeanList.addAll(list);
                     loadView();
                     mLoadSuc = true;
                 }
@@ -177,8 +182,9 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
 //                    simplePagerTitleView.setSelectedColor(0xffffffff);
                     simplePagerTitleView.setNormalColor(0xff666666);
                     simplePagerTitleView.setSelectedColor(0xff111111);
+//                    simplePagerTitleView.setBackgroundColor(0xffffffff);
                     simplePagerTitleView.setText(mClassBeanList.get(index).getName());
-                    simplePagerTitleView.setTextSize(18);
+                    simplePagerTitleView.setTextSize(20);
                     simplePagerTitleView.getPaint().setFakeBoldText(true);
                     simplePagerTitleView.setOnClickListener(new View.OnClickListener() {
                         @Override
@@ -214,14 +220,14 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
             };
             CommonNavigator commonNavigator = new CommonNavigator(mContext);
             commonNavigator.setAdapter(mNavigatorAdapter);
-            commonNavigator.setAdjustMode(false);
-
+            commonNavigator.setAdjustMode(true);  // 改为true,让标题均匀分布
+            
             mIndicator.setNavigator(commonNavigator);
             ViewPagerHelper.bind(mIndicator, mViewPager);
         }
 //        loadPageData(0);
-        mViewPager.setCurrentItem(3, false);
-        loadPageData(3);
+        mViewPager.setCurrentItem(0, false);  // 改为索引0(直播页面)
+        loadPageData(0);  // 改为索引0
     }
 
     private void loadPageData(int position) {
@@ -240,27 +246,34 @@ public class MainHomeViewHolder extends AbsMainViewHolder {
                     mRecommendViewHolder = new MainHomeRecommendViewHolder(mContext, parent);
                 }
                 if (position == 0) {
-                    mMainMallViewHolder = new MainMallViewHolder(mContext, parent);
-                    vh = mMainMallViewHolder;
+                    mFollowViewHolder = new MainHomeFollowViewHolder(mContext, parent);
+                    vh = mFollowViewHolder;
+//                    mMainMallViewHolder = new MainMallViewHolder(mContext, parent);
+//                    vh = mMainMallViewHolder;
 //                    mRecommendViewHolder = new MainHomeRecommendViewHolder(mContext, parent);
 //                    vh = mRecommendViewHolder;
                 } else if (position == 1) {
-                    mFriendsViewHolder = new MainHomeFriendsViewHolder(mContext, parent);
-                    vh = mFriendsViewHolder;
+//                    mFriendsViewHolder = new MainHomeFriendsViewHolder(mContext, parent);
+//                    vh = mFriendsViewHolder;
+                    mMainMallViewHolder = new MainMallViewHolder(mContext, parent);
+                    vh = mMainMallViewHolder;
+
 //                }
 //                    mHotViewHolder = new MainHomeHotViewHolder(mContext, parent);
 //                    vh = mHotViewHolder;
                 } else if (position == 2) {
-                    mNewsViewHolder = new MainHomeNewsViewHolder(mContext, parent);
-                    vh = mNewsViewHolder;
+//                    mNewsViewHolder = new MainHomeNewsViewHolder(mContext, parent);
+//                    vh = mNewsViewHolder;
+                    mShopViewHolder = new MainShopViewHolder(mContext, parent);
+                    vh = mShopViewHolder;
                 } else if (position == 3) {
-                    mSameCityViewHolder = new MainHomeSameCityViewHolder(mContext, parent);
-                    vh = mSameCityViewHolder;
+//                    mSameCityViewHolder = new MainHomeSameCityViewHolder(mContext, parent);
+//                    vh = mSameCityViewHolder;
 //                    mMainMallViewHolder = new MainMallViewHolder(mContext, parent);
 //                    vh = mMainMallViewHolder;
                 } else if (position == 4) {
-                    mFollowViewHolder = new MainHomeFollowViewHolder(mContext, parent);
-                    vh = mFollowViewHolder;
+//                    mFollowViewHolder = new MainHomeFollowViewHolder(mContext, parent);
+//                    vh = mFollowViewHolder;
 //                } else if (position == 4) {
 //                    mFindViewHolder = new MainHomeFindViewHolder(mContext, parent);
 //                    vh = mFindViewHolder;

+ 501 - 17
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopRuralViewHolder.java

@@ -1,20 +1,70 @@
 package com.yunbao.main.views;
 
 import android.content.Context;
+import android.graphics.Typeface;
+import android.view.Gravity;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.HorizontalScrollView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
+
 import com.yunbao.main.R;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 /**
- * 乡村云店页面ViewHolder
- * 展示乡村地区的商品和服务
+ * 农村电商主页ViewHolder
+ * 展示地区选择、商品分类、推荐商品等功能
  */
 public class MainShopRuralViewHolder extends AbsMainViewHolder implements View.OnClickListener {
 
-    private TextView mTitleText;
-    private TextView mDescriptionText;
+    // 顶部控件
+    private LinearLayout mLocationLayout;
+    private TextView mLocationText;
+    
+    // 地区标签相关
+    private HorizontalScrollView mRegionScrollView;
+    private LinearLayout mRegionContainer;
+    private List<RegionTabItem> mRegionTabItems;
+    private int mCurrentSelectedRegion = 0;
+    
+    // 地区数据
+    private List<String> mRegionList;
+    
+    // 导航栏和ViewPager
+    private TextView mNavHome;
+    private TextView mNavAllGoods;
+    private TextView mNavReview;
+    private ViewPager2 mViewPager;
+    private ShopContentAdapter mContentAdapter;
+    private int mCurrentNavIndex = 0;
+
+    /**
+     * 地区标签项数据类
+     */
+    private static class RegionTabItem {
+        LinearLayout container;
+        TextView textView;
+        View underline;
+        String regionName;
+        int index;
+        
+        RegionTabItem(LinearLayout container, TextView textView, View underline, String regionName, int index) {
+            this.container = container;
+            this.textView = textView;
+            this.underline = underline;
+            this.regionName = regionName;
+            this.index = index;
+        }
+    }
 
     public MainShopRuralViewHolder(Context context, ViewGroup parentView) {
         super(context, parentView);
@@ -22,20 +72,260 @@ public class MainShopRuralViewHolder extends AbsMainViewHolder implements View.O
 
     @Override
     protected int getLayoutId() {
-        return R.layout.view_main_shop_rural;
+        return R.layout.item_main_shop_rural;
     }
 
     @Override
     public void init() {
-        mTitleText = findViewById(R.id.tv_title);
-        mDescriptionText = findViewById(R.id.tv_description);
+        // 初始化顶部控件
+        mLocationLayout = findViewById(R.id.ll_location);
+        mLocationText = findViewById(R.id.tv_location);
+        
+        // 初始化地区标签容器
+        mRegionScrollView = findViewById(R.id.hsv_region);
+        mRegionContainer = findViewById(R.id.ll_region_container);
+        mRegionTabItems = new ArrayList<>();
+        
+        // 初始化地区数据
+        initRegionData();
+        
+        // 动态创建地区标签
+        createRegionTabs();
+        
+        // 初始化导航栏和ViewPager
+        initNavigationTabs();
+        
+        // 初始化商品分类
+        initCategoryItems();
+        
+        // 设置点击事件
+        setClickListeners();
+        
+        // 设置示例数据
+        setupSampleData();
+    }
+
+    /**
+     * 初始化地区数据
+     */
+    private void initRegionData() {
+        // 示例地区数据,实际项目中可以从服务器获取或配置文件读取
+        mRegionList = Arrays.asList(
+            "山东", "北京", "湖北", "上海", "河南", 
+            "陕西", "四川", "广东", "江苏", "浙江",
+            "湖南", "安徽", "河北", "山西", "辽宁"
+        );
+    }
+
+    /**
+     * 动态创建地区标签
+     */
+    private void createRegionTabs() {
+        if (mRegionContainer == null || mRegionList == null) {
+            return;
+        }
+        
+        // 清空现有标签
+        mRegionContainer.removeAllViews();
+        mRegionTabItems.clear();
+        
+        for (int i = 0; i < mRegionList.size(); i++) {
+            String regionName = mRegionList.get(i);
+            RegionTabItem tabItem = createRegionTabItem(regionName, i);
+            mRegionTabItems.add(tabItem);
+            mRegionContainer.addView(tabItem.container);
+        }
+        
+        // 设置默认选中第一个
+        if (!mRegionTabItems.isEmpty()) {
+            updateRegionSelection(0);
+        }
+    }
+
+    /**
+     * 创建单个地区标签项
+     */
+    private RegionTabItem createRegionTabItem(String regionName, int index) {
+        // 创建容器
+        LinearLayout container = new LinearLayout(mContext);
+        LinearLayout.LayoutParams containerParams = new LinearLayout.LayoutParams(
+            LinearLayout.LayoutParams.WRAP_CONTENT,
+            LinearLayout.LayoutParams.WRAP_CONTENT
+        );
+        containerParams.rightMargin = dpToPx(24);
+        container.setLayoutParams(containerParams);
+        container.setOrientation(LinearLayout.VERTICAL);
+        container.setGravity(Gravity.CENTER);
+        container.setPadding(dpToPx(12), dpToPx(6), dpToPx(12), dpToPx(6));
+        container.setTag(index); // 设置标签用于点击识别
+        
+        // 创建文本
+        TextView textView = new TextView(mContext);
+        LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(
+            LinearLayout.LayoutParams.WRAP_CONTENT,
+            LinearLayout.LayoutParams.WRAP_CONTENT
+        );
+        textView.setLayoutParams(textParams);
+        textView.setText(regionName);
+        textView.setTextSize(14);
+        textView.setTextColor(0xFF999999); // 默认未选中颜色
+        
+        // 创建下划线
+        View underline = new View(mContext);
+        LinearLayout.LayoutParams lineParams = new LinearLayout.LayoutParams(
+            dpToPx(20),
+            dpToPx(2)
+        );
+        lineParams.topMargin = dpToPx(4);
+        underline.setLayoutParams(lineParams);
+        underline.setBackgroundColor(0xFF333333);
+        underline.setVisibility(View.INVISIBLE); // 默认隐藏
+        
+        // 添加到容器
+        container.addView(textView);
+        container.addView(underline);
+        
+        // 设置点击事件
+        container.setOnClickListener(this);
+        
+        return new RegionTabItem(container, textView, underline, regionName, index);
+    }
+
+    /**
+     * dp转px
+     */
+    private int dpToPx(int dp) {
+        float density = mContext.getResources().getDisplayMetrics().density;
+        return (int) (dp * density + 0.5f);
+    }
+
+    /**
+     * 更新地区选中状态
+     */
+    private void updateRegionSelection(int selectedIndex) {
+        if (selectedIndex < 0 || selectedIndex >= mRegionTabItems.size()) {
+            return;
+        }
+        
+        mCurrentSelectedRegion = selectedIndex;
+        
+        // 更新所有标签状态
+        for (int i = 0; i < mRegionTabItems.size(); i++) {
+            RegionTabItem item = mRegionTabItems.get(i);
+            if (i == selectedIndex) {
+                // 选中状态
+                item.textView.setTextColor(0xFF333333);
+                item.textView.setTypeface(null, Typeface.BOLD);
+                item.underline.setVisibility(View.VISIBLE);
+            } else {
+                // 未选中状态
+                item.textView.setTextColor(0xFF999999);
+                item.textView.setTypeface(null, Typeface.NORMAL);
+                item.underline.setVisibility(View.INVISIBLE);
+            }
+        }
+    }
+
+    /**
+     * 初始化导航栏和ViewPager
+     */
+    private void initNavigationTabs() {
+        // 获取导航栏控件
+        mNavHome = findViewById(R.id.tv_nav_home);
+        mNavAllGoods = findViewById(R.id.tv_nav_all_goods);
+        mNavReview = findViewById(R.id.tv_nav_review);
+        
+        // 获取ViewPager
+        mViewPager = findViewById(R.id.vp_content);
+        
+        // 设置ViewPager适配器
+        if (mContext instanceof FragmentActivity) {
+            mContentAdapter = new ShopContentAdapter((FragmentActivity) mContext);
+            mViewPager.setAdapter(mContentAdapter);
+            
+            // 设置ViewPager页面切换监听
+            mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
+                @Override
+                public void onPageSelected(int position) {
+                    super.onPageSelected(position);
+                    updateNavigationSelection(position);
+                }
+            });
+        }
+    }
+
+    /**
+     * 初始化商品分类项
+     */
+    private void initCategoryItems() {
+        // 商品分类项在布局中已经设置好了
+        // 可以在这里添加分类点击逻辑
+    }
+
+    /**
+     * 设置点击事件监听器
+     */
+    private void setClickListeners() {
+        if (mLocationLayout != null) {
+            mLocationLayout.setOnClickListener(this);
+        }
+        
+        // 设置导航栏点击事件
+        if (mNavHome != null) mNavHome.setOnClickListener(this);
+        if (mNavAllGoods != null) mNavAllGoods.setOnClickListener(this);
+        if (mNavReview != null) mNavReview.setOnClickListener(this);
+    }
+
+    /**
+     * 设置示例数据
+     */
+    private void setupSampleData() {
+        // 设置地区文本
+        if (mLocationText != null) {
+            mLocationText.setText("北京市");
+        }
+        
+        // 设置默认导航选中状态
+        updateNavigationSelection(0);
+    }
+
+    /**
+     * 设置地区数据(外部调用)
+     */
+    public void setRegionData(List<String> regionList) {
+        if (regionList != null && !regionList.isEmpty()) {
+            mRegionList = new ArrayList<>(regionList);
+            createRegionTabs();
+        }
+    }
 
-        // 设置初始内容
-        mTitleText.setText("乡村云店");
-        mDescriptionText.setText("为乡村地区提供优质商品和服务");
+    /**
+     * 获取当前选中的地区
+     */
+    public String getCurrentSelectedRegion() {
+        if (mCurrentSelectedRegion >= 0 && mCurrentSelectedRegion < mRegionList.size()) {
+            return mRegionList.get(mCurrentSelectedRegion);
+        }
+        return null;
+    }
 
-        // 设置点击监听
-        mTitleText.setOnClickListener(this);
+    /**
+     * 设置选中的地区
+     */
+    public void setSelectedRegion(int index) {
+        updateRegionSelection(index);
+    }
+
+    /**
+     * 设置选中的地区
+     */
+    public void setSelectedRegion(String regionName) {
+        if (mRegionList != null) {
+            int index = mRegionList.indexOf(regionName);
+            if (index >= 0) {
+                updateRegionSelection(index);
+            }
+        }
     }
 
     @Override
@@ -47,18 +337,187 @@ public class MainShopRuralViewHolder extends AbsMainViewHolder implements View.O
     }
 
     /**
-     * 加载乡村云店数据
+     * 加载农村电商数据
      */
     private void loadRuralShopData() {
-        // TODO: 实现乡村云店数据加载逻辑
-        // 例如:加载乡村特色商品、农产品等
+        // TODO: 实现农村电商数据加载逻辑
+        // 1. 加载地区列表
+        // 2. 加载推荐商品
+        // 3. 加载商品分类
+        // 4. 加载广告横幅
+        
+        // 示例:模拟数据加载完成
+        setupSampleData();
     }
 
     @Override
     public void onClick(View v) {
         int id = v.getId();
-        if (id == R.id.tv_title) {
-            // 处理标题点击事件
+        if (id == R.id.ll_location) {
+            // 点击地区选择
+            onLocationClick();
+        } else if (id == R.id.tv_nav_home) {
+            // 点击首页导航
+            switchToPage(0);
+        } else if (id == R.id.tv_nav_all_goods) {
+            // 点击全部商品导航
+            switchToPage(1);
+        } else if (id == R.id.tv_nav_review) {
+            // 点击评价导航
+            switchToPage(2);
+        } else {
+            // 检查是否是地区标签点击
+            Object tag = v.getTag();
+            if (tag instanceof Integer) {
+                int regionIndex = (Integer) tag;
+                updateRegionSelection(regionIndex);
+                onRegionClick(mRegionList.get(regionIndex));
+            }
+        }
+    }
+
+    /**
+     * 处理地区选择点击
+     */
+    private void onLocationClick() {
+        // TODO: 打开地区选择页面
+        // 例如:启动城市选择Activity
+    }
+
+    /**
+     * 处理地区标签点击
+     */
+    private void onRegionClick(String regionName) {
+        // TODO: 根据选中的地区加载对应数据
+        // 例如:刷新商品列表、更新推荐内容等
+    }
+
+    /**
+     * 切换到指定页面
+     */
+    private void switchToPage(int pageIndex) {
+        if (mViewPager != null && pageIndex >= 0 && pageIndex < 3) {
+            mViewPager.setCurrentItem(pageIndex, true);
+        }
+    }
+
+    /**
+     * 更新导航栏选中状态
+     */
+    private void updateNavigationSelection(int selectedIndex) {
+        mCurrentNavIndex = selectedIndex;
+        
+        // 重置所有导航项状态
+        resetNavigationStates();
+        
+        // 设置选中状态
+        switch (selectedIndex) {
+            case 0: // 首页
+                setNavigationSelected(mNavHome);
+                break;
+            case 1: // 全部商品
+                setNavigationSelected(mNavAllGoods);
+                break;
+            case 2: // 评价
+                setNavigationSelected(mNavReview);
+                break;
+        }
+    }
+
+    /**
+     * 重置所有导航项状态
+     */
+    private void resetNavigationStates() {
+        setNavigationUnselected(mNavHome);
+        setNavigationUnselected(mNavAllGoods);
+        setNavigationUnselected(mNavReview);
+    }
+
+    /**
+     * 设置导航项为选中状态
+     */
+    private void setNavigationSelected(TextView textView) {
+        if (textView != null) {
+            textView.setTextSize(18); // 18sp
+            textView.setTypeface(null, Typeface.BOLD);
+        }
+    }
+
+    /**
+     * 设置导航项为未选中状态
+     */
+    private void setNavigationUnselected(TextView textView) {
+        if (textView != null) {
+            textView.setTextSize(14); // 14sp
+            textView.setTypeface(null, Typeface.NORMAL);
+        }
+    }
+
+    /**
+     * ViewPager适配器
+     */
+    private static class ShopContentAdapter extends FragmentStateAdapter {
+        
+        public ShopContentAdapter(FragmentActivity fragmentActivity) {
+            super(fragmentActivity);
+        }
+
+        @Override
+        public Fragment createFragment(int position) {
+            // 根据位置创建对应的Fragment
+            switch (position) {
+                case 0:
+                    return new ShopHomeFragment(); // 首页Fragment
+                case 1:
+                    return new ShopAllGoodsFragment(); // 全部商品Fragment
+                case 2:
+                    return new ShopReviewFragment(); // 评价Fragment
+                default:
+                    return new ShopHomeFragment();
+            }
+        }
+
+        @Override
+        public int getItemCount() {
+            return 3; // 三个页面
+        }
+    }
+
+    /**
+     * 首页Fragment(示例)
+     */
+    public static class ShopHomeFragment extends Fragment {
+        @Override
+        public View onCreateView(android.view.LayoutInflater inflater, ViewGroup container, android.os.Bundle savedInstanceState) {
+            return inflater.inflate(R.layout.fragment_shop_home, container, false);
+        }
+    }
+
+    /**
+     * 全部商品Fragment(示例)
+     */
+    public static class ShopAllGoodsFragment extends Fragment {
+        @Override
+        public View onCreateView(android.view.LayoutInflater inflater, ViewGroup container, android.os.Bundle savedInstanceState) {
+            TextView textView = new TextView(getContext());
+            textView.setText("暂无商品");
+            textView.setGravity(Gravity.CENTER);
+            textView.setPadding(50, 50, 50, 50);
+            return textView;
+        }
+    }
+
+    /**
+     * 评价Fragment(示例)
+     */
+    public static class ShopReviewFragment extends Fragment {
+        @Override
+        public View onCreateView(android.view.LayoutInflater inflater, ViewGroup container, android.os.Bundle savedInstanceState) {
+            TextView textView = new TextView(getContext());
+            textView.setText("暂无评价");
+            textView.setGravity(Gravity.CENTER);
+            textView.setPadding(50, 50, 50, 50);
+            return textView;
         }
     }
 
@@ -66,5 +525,30 @@ public class MainShopRuralViewHolder extends AbsMainViewHolder implements View.O
     public void release() {
         super.release();
         // 释放资源
+        mLocationLayout = null;
+        mLocationText = null;
+        mRegionContainer = null;
+        
+        // 释放导航栏和ViewPager资源
+        mNavHome = null;
+        mNavAllGoods = null;
+        mNavReview = null;
+        
+        if (mViewPager != null) {
+            mViewPager.setAdapter(null);
+            mViewPager = null;
+        }
+        
+        mContentAdapter = null;
+        
+        if (mRegionTabItems != null) {
+            mRegionTabItems.clear();
+            mRegionTabItems = null;
+        }
+        
+        if (mRegionList != null) {
+            mRegionList.clear();
+            mRegionList = null;
+        }
     }
 }

+ 33 - 22
ybvideoandroid/main/src/main/java/com/yunbao/main/views/MainShopViewHolder.java

@@ -26,7 +26,6 @@ import java.util.List;
 
 /**
  * 商店页面ViewHolder
- * 实现乡村云店、都市云店、一键云店三个页面的ViewPager导航
  */
 public class MainShopViewHolder extends AbsMainViewHolder {
 
@@ -45,7 +44,7 @@ public class MainShopViewHolder extends AbsMainViewHolder {
     private MainShopOneClickViewHolder mOneClickViewHolder; // 一键云店
 
     // 页面标题
-    private String[] mPageTitles = {"乡村云店", "都市云店", "一云店"};
+    private String[] mPageTitles = {"乡村云店", "都市云店", "一线云店"};
 
     public MainShopViewHolder(Context context, ViewGroup parentView) {
         super(context, parentView);
@@ -58,15 +57,20 @@ public class MainShopViewHolder extends AbsMainViewHolder {
 
     @Override
     public void init() {
+        // 首先初始化页面标题
+        if (mPageTitles == null) {
+            mPageTitles = new String[]{"乡村云店", "都市云店", "一键云店"};
+        }
+        
         setStatusHeight();
-
+    
         mPagerTitleList = new ArrayList<>();
         mViewList = new ArrayList<>();
         mViewHolders = new ArrayList<>();
-
+    
         mViewPager = findViewById(R.id.viewPager);
         mIndicator = findViewById(R.id.indicator);
-
+    
         initViewPager();
         initIndicator();
     }
@@ -99,6 +103,11 @@ public class MainShopViewHolder extends AbsMainViewHolder {
      * 初始化ViewPager
      */
     private void initViewPager() {
+        // 确保 mPageTitles 已初始化
+        if (mPageTitles == null) {
+            mPageTitles = new String[]{"乡村云店", "都市云店", "一键云店"};
+        }
+        
         // 创建三个页面的FrameLayout容器
         for (int i = 0; i < mPageTitles.length; i++) {
             FrameLayout frameLayout = new FrameLayout(mContext);
@@ -108,7 +117,7 @@ public class MainShopViewHolder extends AbsMainViewHolder {
             mViewList.add(frameLayout);
             mViewHolders.add(null);
         }
-
+    
         // 设置ViewPager
         mViewPager.setOffscreenPageLimit(mPageTitles.length - 1);
         mViewPagerAdapter = new ViewPagerAdapter(mViewList);
@@ -154,7 +163,7 @@ public class MainShopViewHolder extends AbsMainViewHolder {
             public IPagerTitleView getTitleView(Context context, final int index) {
                 MainHomePagerTitleView titleView = new MainHomePagerTitleView(context);
                 titleView.setNormalColor(0xff666666);
-                titleView.setSelectedColor(0xff111111);
+                titleView.setSelectedColor(0xff333333);
                 titleView.setText(mPageTitles[index]);
                 titleView.setTextSize(18);
                 titleView.getPaint().setFakeBoldText(true);
@@ -186,7 +195,7 @@ public class MainShopViewHolder extends AbsMainViewHolder {
 
         CommonNavigator commonNavigator = new CommonNavigator(mContext);
         commonNavigator.setAdapter(mNavigatorAdapter);
-        commonNavigator.setAdjustMode(false);
+        commonNavigator.setAdjustMode(true);
 
         mIndicator.setNavigator(commonNavigator);
         ViewPagerHelper.bind(mIndicator, mViewPager);
@@ -208,20 +217,22 @@ public class MainShopViewHolder extends AbsMainViewHolder {
             }
 
             // 根据位置创建对应的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;
-            }
+//            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;
+//            }
+            mRuralViewHolder = new MainShopRuralViewHolder(mContext, parent);
+            vh = mRuralViewHolder;
 
             if (vh != null) {
                 mViewHolders.set(position, vh);

+ 4 - 0
ybvideoandroid/main/src/main/res/drawable/bg_brand_tag.xml

@@ -0,0 +1,4 @@
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#F7E740"/>
+    <corners android:radius="5dp"/>
+</shape>

+ 7 - 0
ybvideoandroid/main/src/main/res/drawable/bg_btn_logout.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#FFF5F5" />
+    <corners android:radius="8dp" />
+    <stroke android:width="1dp" android:color="#FFDDDD" />
+</shape>

+ 10 - 0
ybvideoandroid/main/src/main/res/drawable/bg_category_circle.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+
+    <solid android:color="#E8F4FD" />
+    <stroke 
+        android:width="1dp"
+        android:color="#CCE7F0" />
+
+</shape>

+ 5 - 0
ybvideoandroid/main/src/main/res/drawable/bg_circle_white.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/white" />
+</shape>

+ 9 - 0
ybvideoandroid/main/src/main/res/drawable/bg_goods_item.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/white" />
+    <corners android:radius="8dp" />
+    <stroke
+        android:width="1dp"
+        android:color="@color/gray1" />
+</shape>

+ 8 - 0
ybvideoandroid/main/src/main/res/drawable/bg_rank.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="#FF6B35" />
+    <size
+        android:width="20dp"
+        android:height="20dp" />
+</shape>

+ 6 - 0
ybvideoandroid/main/src/main/res/drawable/bg_region_tag.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#80000000" />
+    <corners android:radius="10dp" />
+</shape>

+ 4 - 0
ybvideoandroid/main/src/main/res/drawable/bg_search_box.xml

@@ -0,0 +1,4 @@
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#EDEDED"/>
+    <corners android:radius="10dp"/>
+</shape>

+ 6 - 0
ybvideoandroid/main/src/main/res/drawable/bg_system_message.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#ffffff" />
+    <corners android:radius="10dp" />
+</shape>

+ 4 - 0
ybvideoandroid/main/src/main/res/drawable/ic_shop_default.xml

@@ -0,0 +1,4 @@
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#FFFFFF"/>
+    <corners android:radius="30dp"/>
+</shape>

+ 16 - 2
ybvideoandroid/main/src/main/res/layout/activity_main.xml

@@ -1,7 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/drawer_layout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+<RelativeLayout
     android:id="@+id/root"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -47,7 +52,7 @@
                 app:tbn_text_color_unchecked="#ff999999"
                 app:tbn_text_color_white="@color/textColorBlack"
                 app:tbn_text_size="18sp"
-                app:tbn_tip="@string/main_shop"
+                app:tbn_tip="@string/recommend"
                 />
 
             <com.yunbao.common.custom.TabButton2
@@ -154,3 +159,12 @@
         tools:visibility="visible" />
 
 </RelativeLayout>
+
+    <!-- 左侧侧推栏 -->
+    <include
+        layout="@layout/drawer_menu"
+        android:layout_width="280dp"
+        android:layout_height="match_parent"
+        android:layout_gravity="start" />
+
+</androidx.drawerlayout.widget.DrawerLayout>

+ 397 - 0
ybvideoandroid/main/src/main/res/layout/drawer_menu.xml

@@ -0,0 +1,397 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="280dp"
+    android:layout_height="match_parent"
+    android:background="#EFEFEF"
+    android:orientation="vertical"
+    android:fitsSystemWindows="true">
+
+    <!-- 头部区域 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:gravity="center_vertical"
+        android:padding="16dp">
+
+        <ImageView
+            android:id="@+id/drawer_user_avatar"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:background="@drawable/bg_circle_white"
+            android:padding="2dp"
+            android:src="@mipmap/icon_profile"
+            android:scaleType="centerCrop" />
+
+        <LinearLayout
+            android:id="@+id/drawer_user_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:orientation="vertical">
+            
+            <TextView
+                android:id="@+id/drawer_user_name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="用户昵称"
+                android:textColor="#ff000000"
+                android:textSize="18sp" />
+                
+            <TextView
+                android:id="@+id/drawer_user_id"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:text="ID: 123456"
+                android:textColor="#666666"
+                android:textSize="12sp"
+                android:visibility="visible" />
+        </LinearLayout>
+        
+        <Button
+            android:id="@+id/drawer_login_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="8dp"
+            android:text="去登录"
+            android:textColor="#ff000000"
+            android:textSize="18sp"
+            android:visibility="gone" />
+
+    </LinearLayout>
+
+    <!-- 系统消息区域 -->
+    <LinearLayout
+        android:id="@+id/drawer_system_messages"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@drawable/bg_system_message"
+        android:padding="16dp">
+
+        <!-- 系统消息标题 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:paddingBottom="8dp">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="系统消息"
+                android:textColor="#333333"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/drawer_message_count"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="#FF4444"
+                android:text="99+"
+                android:textColor="@color/white"
+                android:textSize="10sp"
+                android:paddingLeft="6dp"
+                android:paddingRight="6dp"
+                android:paddingTop="2dp"
+                android:paddingBottom="2dp"
+                android:minWidth="20dp"
+                android:gravity="center" />
+
+        </LinearLayout>
+
+        <!-- 消息1 -->
+        <LinearLayout
+            android:id="@+id/drawer_message_1"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:paddingTop="4dp"
+            android:paddingBottom="4dp"
+            android:clickable="true">
+
+            <TextView
+                android:id="@+id/drawer_message_1_content"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="服务通知:作品券临期提醒"
+                android:textColor="#333333"
+                android:textSize="13sp"
+                android:maxLines="1"
+                android:ellipsize="end" />
+
+            <TextView
+                android:id="@+id/drawer_message_1_time"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dp"
+                android:text="18:13"
+                android:textColor="#999999"
+                android:textSize="11sp" />
+
+        </LinearLayout>
+
+        <!-- 消息2 -->
+        <LinearLayout
+            android:id="@+id/drawer_message_2"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:paddingTop="4dp"
+            android:paddingBottom="4dp"
+            android:clickable="true">
+
+            <TextView
+                android:id="@+id/drawer_message_2_content"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:text="创作者小助手:作品商城06.01"
+                android:textColor="#333333"
+                android:textSize="13sp"
+                android:maxLines="1"
+                android:ellipsize="end" />
+
+            <TextView
+                android:id="@+id/drawer_message_2_time"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dp"
+                android:text="一天前"
+                android:textColor="#999999"
+                android:textSize="11sp" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <!-- 间距 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="18dp" />
+
+    <!-- 常用功能区域 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@drawable/bg_system_message"
+        android:padding="16dp">
+
+        <!-- 常用功能标题 -->
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="12dp"
+            android:text="常用功能"
+            android:textColor="#333333"
+            android:textSize="14sp"
+            android:textStyle="bold" />
+
+        <!-- 常用功能网格 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <!-- 第一行 -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:layout_marginBottom="16dp">
+
+                <!-- 云店商城 -->
+                <LinearLayout
+                    android:id="@+id/drawer_function_shop"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp"
+                    android:clickable="true">
+
+                    <ImageView
+                        android:layout_width="19dp"
+                        android:layout_height="19dp"
+                        android:src="@mipmap/ic_drawer_shop"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="云店商城"
+                        android:textColor="#333333"
+                        android:textSize="13sp" />
+
+                </LinearLayout>
+
+                <!-- 观看历史 -->
+                <LinearLayout
+                    android:id="@+id/drawer_function_history"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp"
+                    android:clickable="true">
+
+                    <ImageView
+                        android:layout_width="21dp"
+                        android:layout_height="21dp"
+                        android:src="@mipmap/ic_drawer_history"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="观看历史"
+                        android:textColor="#333333"
+                        android:textSize="13sp" />
+
+                </LinearLayout>
+
+                <!-- 我的钱包 -->
+                <LinearLayout
+                    android:id="@+id/drawer_function_wallet"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp"
+                    android:clickable="true">
+
+                    <ImageView
+                        android:layout_width="21dp"
+                        android:layout_height="19dp"
+                        android:src="@mipmap/ic_drawer_wallet"
+                         />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="我的钱包"
+                        android:textColor="#333333"
+                        android:textSize="13sp" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <!-- 第二行 -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <!-- 我的订单 -->
+                <LinearLayout
+                    android:id="@+id/drawer_function_order"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp"
+                    android:clickable="true">
+
+                    <ImageView
+                        android:layout_width="18dp"
+                        android:layout_height="22dp"
+                        android:src="@mipmap/ic_drawer_order"
+                         />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="我的订单"
+                        android:textColor="#333333"
+                        android:textSize="13sp" />
+
+                </LinearLayout>
+
+                <!-- 设置 -->
+                <LinearLayout
+                    android:id="@+id/drawer_function_settings"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp"
+                    android:clickable="true">
+
+                    <ImageView
+                        android:layout_width="22dp"
+                        android:layout_height="22dp"
+                        android:src="@mipmap/ic_drawer_setting"
+                         />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="设置"
+                        android:textColor="#333333"
+                        android:textSize="13sp" />
+
+                </LinearLayout>
+
+                <!-- 二维码 -->
+                <LinearLayout
+                    android:id="@+id/drawer_function_qrcode"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp"
+                    android:clickable="true">
+
+                    <ImageView
+                        android:layout_width="22dp"
+                        android:layout_height="22dp"
+                        android:src="@mipmap/ic_drawer_qrcode"
+                         />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="二维码"
+                        android:textColor="#333333"
+                        android:textSize="13sp" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <!-- 占位空间 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1" />
+
+</LinearLayout>

+ 16 - 0
ybvideoandroid/main/src/main/res/layout/fragment_shop_all_goods.xml

@@ -0,0 +1,16 @@
+<?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"
+        android:layout_marginTop="10dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp" />
+
+</LinearLayout>

+ 476 - 0
ybvideoandroid/main/src/main/res/layout/fragment_shop_home.xml

@@ -0,0 +1,476 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:background="#F5F5F5">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <!-- 商品分类网格 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:background="#FFFFFF"
+            android:padding="12dp">
+
+            <!-- 第一行 - 排行榜和小编推荐 -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:layout_marginBottom="16dp">
+
+                <!-- 排行榜 -->
+                <LinearLayout
+                    android:id="@+id/ll_category_ranking"
+                    android:layout_width="0dp"
+                    android:layout_height="80dp"
+                    android:layout_weight="1"
+                    android:orientation="horizontal"
+                    android:background="#FFFFFF"
+                    android:padding="12dp">
+
+                    <!-- 左侧文字区域 -->
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="match_parent"
+                        android:layout_weight="1"
+                        android:orientation="vertical"
+                        android:gravity="start|center_vertical">
+
+                        <!-- 皇冠图标+排行榜 -->
+                        <LinearLayout
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal"
+                            android:gravity="center_vertical">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="👑"
+                                android:textSize="16sp"
+                                android:layout_marginEnd="4dp" />
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="排行榜"
+                                android:textColor="#333333"
+                                android:textSize="14sp"
+                                android:textStyle="bold" />
+
+                        </LinearLayout>
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="4dp"
+                            android:text="每日更新"
+                            android:textColor="#999999"
+                            android:textSize="11sp" />
+
+                    </LinearLayout>
+
+                    <!-- 右侧商品图片 -->
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:orientation="horizontal"
+                        android:gravity="center_vertical">
+
+                        <ImageView
+                            android:layout_width="28dp"
+                            android:layout_height="28dp"
+                            android:src="@mipmap/lishi1"
+                            android:layout_marginEnd="4dp" />
+
+                        <ImageView
+                            android:layout_width="28dp"
+                            android:layout_height="28dp"
+                            android:src="@mipmap/linshi2" />
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+                <!-- 分割线 -->
+                <View
+                    android:layout_width="1dp"
+                    android:layout_height="60dp"
+                    android:layout_gravity="center_vertical"
+                    android:background="#E0E0E0" />
+
+                <!-- 小编推荐 -->
+                <LinearLayout
+                    android:id="@+id/ll_category_recommend"
+                    android:layout_width="0dp"
+                    android:layout_height="80dp"
+                    android:layout_weight="1"
+                    android:orientation="horizontal"
+                    android:background="#FFFFFF"
+                    android:padding="12dp">
+
+                    <!-- 左侧文字区域 -->
+                    <LinearLayout
+                        android:layout_width="0dp"
+                        android:layout_height="match_parent"
+                        android:layout_weight="1"
+                        android:orientation="vertical"
+                        android:gravity="start|center_vertical">
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="小编推荐"
+                            android:textColor="#333333"
+                            android:textSize="14sp"
+                            android:textStyle="bold" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="4dp"
+                            android:text="精选好货"
+                            android:textColor="#999999"
+                            android:textSize="11sp" />
+
+                    </LinearLayout>
+
+                    <!-- 右侧商品图片 -->
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="match_parent"
+                        android:orientation="horizontal"
+                        android:gravity="center_vertical">
+
+                        <ImageView
+                            android:layout_width="28dp"
+                            android:layout_height="28dp"
+                            android:src="@mipmap/linshi3"
+                            android:layout_marginEnd="4dp" />
+
+                        <ImageView
+                            android:layout_width="28dp"
+                            android:layout_height="28dp"
+                            android:background="#9C27B0"
+                            android:src="@mipmap/linshi4"/>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <!-- 第二行商品网格 -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:layout_marginBottom="16dp">
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="高端生鲜"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="经典畅饮"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="全家口粮"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="鲜活生活"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="培育蔬菜"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <!-- 第三行商品网格 -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="大牌之选"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="深度当头"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="智慧必备"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="1003/国潮"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center"
+                    android:padding="8dp">
+
+                    <com.yunbao.common.custom.RatioRoundImageView
+                        android:layout_width="40dp"
+                        android:layout_height="40dp"
+                        app:riv_oval="true"
+                        android:src="@mipmap/pijiu1"
+                        />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="4dp"
+                        android:text="传奇蓝白钻"
+                        android:textColor="#333333"
+                        android:textSize="12sp" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <!-- 底部广告横幅 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="300dp"
+            android:layout_marginTop="8dp"
+            android:background="#1A237E"
+            android:orientation="vertical"
+            android:gravity="center"
+            android:padding="16dp">
+
+<!--            <TextView-->
+<!--                android:layout_width="wrap_content"-->
+<!--                android:layout_height="wrap_content"-->
+<!--                android:text="为热爱共欢聚"-->
+<!--                android:textColor="#FFFFFF"-->
+<!--                android:textSize="18sp"-->
+<!--                android:textStyle="bold" />-->
+
+<!--            <TextView-->
+<!--                android:layout_width="wrap_content"-->
+<!--                android:layout_height="wrap_content"-->
+<!--                android:layout_marginTop="4dp"-->
+<!--                android:text="领券满59减10"-->
+<!--                android:textColor="#FFD700"-->
+<!--                android:textSize="14sp" />-->
+            <com.yunbao.common.custom.RatioRoundImageView
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                app:riv_corner_radius="10dp"
+                android:src="@mipmap/pijiu1"
+                />
+
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+</ScrollView>

+ 34 - 0
ybvideoandroid/main/src/main/res/layout/item_category.xml

@@ -0,0 +1,34 @@
+<?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="wrap_content"
+    android:orientation="vertical"
+    android:gravity="center"
+    android:padding="8dp">
+
+    <!-- 圆形图片容器 -->
+    <FrameLayout
+        android:layout_width="50dp"
+        android:layout_height="50dp">
+
+        <ImageView
+            android:id="@+id/iv_icon"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop"
+            android:background="@drawable/bg_category_circle" />
+
+    </FrameLayout>
+
+    <TextView
+        android:id="@+id/tv_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="6dp"
+        android:textSize="11sp"
+        android:textColor="#333333"
+        android:maxLines="1"
+        android:ellipsize="end"
+        android:gravity="center" />
+
+</LinearLayout>

+ 225 - 0
ybvideoandroid/main/src/main/res/layout/item_main_shop_rural.xml

@@ -0,0 +1,225 @@
+<?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="wrap_content"
+    android:orientation="vertical"
+    android:background="#F5F5F5">
+
+    <!-- 顶部地区选择和搜索栏 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:padding="12dp"
+        android:background="#FFFFFF"
+        android:gravity="center_vertical">
+
+        <!-- 地区选择 -->
+        <LinearLayout
+            android:id="@+id/ll_location"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:padding="8dp">
+
+            <TextView
+                android:id="@+id/tv_location"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="北京市"
+                android:textColor="#333333"
+                android:textSize="14sp" />
+
+            <ImageView
+                android:layout_width="12dp"
+                android:layout_height="12dp"
+                android:layout_marginStart="4dp"
+                android:background="#CCCCCC" />
+
+        </LinearLayout>
+
+        <!-- 搜索框 -->
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="36dp"
+            android:layout_weight="1"
+            android:layout_marginStart="12dp"
+            android:background="#F0F0F0"
+            android:orientation="horizontal"
+            android:gravity="center_vertical"
+            android:paddingHorizontal="12dp">
+
+            <ImageView
+                android:layout_width="16dp"
+                android:layout_height="16dp"
+                android:background="#CCCCCC" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="8dp"
+                android:text="寻找好货"
+                android:textColor="#999999"
+                android:textSize="12sp" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <!-- 地区标签栏 - 可滚动,动态生成 -->
+    <HorizontalScrollView
+        android:id="@+id/hsv_region"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="#FFFFFF"
+        android:scrollbars="none"
+        android:paddingVertical="12dp">
+
+        <LinearLayout
+            android:id="@+id/ll_region_container"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:paddingHorizontal="12dp" />
+
+    </HorizontalScrollView>
+
+    <!-- 推荐商品卡片 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="#FFFFFF"
+        android:padding="12dp"
+        android:layout_marginTop="8dp"
+        android:gravity="center_vertical">
+
+        <!-- 商品图片 -->
+        <ImageView
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:src="@mipmap/pijiu1" />
+
+        <!-- 商品信息 -->
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:layout_marginStart="12dp"
+            android:orientation="vertical">
+
+            <!-- 标签和标题 -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:gravity="center_vertical">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="品牌"
+                    android:textColor="#FFFFFF"
+                    android:textSize="10sp"
+                    android:background="#FFB300"
+                    android:paddingHorizontal="4dp"
+                    android:paddingVertical="2dp" />
+
+                <TextView
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:layout_marginStart="8dp"
+                    android:text="青岛啤酒新鲜直送..."
+                    android:textColor="#333333"
+                    android:textSize="14sp"
+                    android:maxLines="1"
+                    android:ellipsize="end" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="零售价"
+                    android:textColor="#FF6B35"
+                    android:textSize="10sp"
+                    android:background="#FFF0ED"
+                    android:paddingHorizontal="4dp"
+                    android:paddingVertical="2dp" />
+
+            </LinearLayout>
+
+            <!-- 商品详情 -->
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="4dp"
+                android:text="起步价¥0 | 配送费¥5 | 19分钟 | 2600.3km"
+                android:textColor="#999999"
+                android:textSize="12sp" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <!-- 导航栏和ViewPager容器 -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:background="#FFFFFF"
+        android:layout_marginTop="8dp">
+
+        <!-- 导航栏 -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:paddingVertical="12dp"
+            android:gravity="start"
+            android:paddingStart="16dp">
+
+            <TextView
+                android:id="@+id/tv_nav_home"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="首页"
+                android:textColor="#333333"
+                android:textSize="18sp"
+                android:textStyle="bold"
+                android:layout_marginEnd="24dp"
+                android:padding="8dp" />
+
+            <TextView
+                android:id="@+id/tv_nav_all_goods"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="推荐"
+                android:textColor="#333333"
+                android:textSize="14sp"
+                android:layout_marginEnd="24dp"
+                android:padding="8dp" />
+
+            <TextView
+                android:id="@+id/tv_nav_review"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="评价"
+                android:textColor="#333333"
+                android:textSize="14sp"
+                android:padding="8dp" />
+
+        </LinearLayout>
+
+        <!-- ViewPager -->
+        <androidx.viewpager2.widget.ViewPager2
+            android:id="@+id/vp_content"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+    </LinearLayout>
+
+
+
+</LinearLayout>

+ 66 - 0
ybvideoandroid/main/src/main/res/layout/item_ranking.xml

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="120dp"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:layout_marginRight="10dp"
+    android:background="@drawable/bg_dialog"
+    android:padding="8dp">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="80dp">
+
+        <ImageView
+            android:id="@+id/iv_image"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop"
+            android:background="@drawable/bg_goods_image" />
+
+        <TextView
+            android:id="@+id/tv_rank"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:layout_gravity="top|left"
+            android:layout_margin="4dp"
+            android:background="@drawable/bg_rank"
+            android:gravity="center"
+            android:textColor="@color/white"
+            android:textSize="10sp"
+            android:textStyle="bold" />
+
+        <TextView
+            android:id="@+id/tv_tag"
+            android:layout_width="wrap_content"
+            android:layout_height="16dp"
+            android:layout_gravity="top|right"
+            android:layout_margin="4dp"
+            android:background="@drawable/bg_item_shop_status"
+            android:paddingLeft="4dp"
+            android:paddingRight="4dp"
+            android:textColor="@color/white"
+            android:textSize="10sp" />
+
+    </FrameLayout>
+
+    <TextView
+        android:id="@+id/tv_name"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="8dp"
+        android:textSize="12sp"
+        android:textColor="#333333"
+        android:maxLines="2"
+        android:ellipsize="end" />
+
+    <TextView
+        android:id="@+id/tv_price"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:textSize="14sp"
+        android:textColor="#FF6B35"
+        android:textStyle="bold" />
+
+</LinearLayout>

+ 83 - 0
ybvideoandroid/main/src/main/res/layout/item_recommend.xml

@@ -0,0 +1,83 @@
+<?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="wrap_content"
+    android:orientation="vertical"
+    android:layout_margin="5dp"
+    android:background="@drawable/bg_dialog">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="120dp">
+
+        <ImageView
+            android:id="@+id/iv_image"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop"
+            android:background="@drawable/bg_goods_image" />
+
+        <TextView
+            android:id="@+id/tv_tag"
+            android:layout_width="wrap_content"
+            android:layout_height="16dp"
+            android:layout_gravity="top|right"
+            android:layout_margin="4dp"
+            android:background="@drawable/bg_item_shop_status"
+            android:paddingLeft="4dp"
+            android:paddingRight="4dp"
+            android:textColor="@color/white"
+            android:textSize="10sp" />
+
+    </FrameLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="8dp">
+
+        <TextView
+            android:id="@+id/tv_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textSize="13sp"
+            android:textColor="#333333"
+            android:maxLines="2"
+            android:ellipsize="end" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginTop="4dp">
+
+            <TextView
+                android:id="@+id/tv_price"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textSize="14sp"
+                android:textColor="#FF6B35"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_original_price"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dp"
+                android:textSize="12sp"
+                android:textColor="#999999" />
+
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/tv_sales"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="4dp"
+            android:textSize="11sp"
+            android:textColor="#999999" />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 91 - 0
ybvideoandroid/main/src/main/res/layout/item_shop_goods_left.xml

@@ -0,0 +1,91 @@
+<?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="wrap_content"
+    android:orientation="vertical"
+    android:background="@drawable/bg_goods_item"
+    android:layout_marginRight="5dp"
+    android:layout_marginBottom="10dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <ImageView
+            android:id="@+id/thumb"
+            android:layout_width="match_parent"
+            android:layout_height="120dp"
+            android:scaleType="centerCrop"
+            android:background="@color/gray1" />
+
+        <TextView
+            android:id="@+id/region_tag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentRight="true"
+            android:layout_margin="5dp"
+            android:background="@drawable/bg_region_tag"
+            android:textColor="@color/white"
+            android:textSize="10sp"
+            android:paddingLeft="6dp"
+            android:paddingRight="6dp"
+            android:paddingTop="2dp"
+            android:paddingBottom="2dp"
+            android:visibility="gone" />
+
+    </RelativeLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="8dp">
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/textColor"
+            android:textSize="13sp"
+            android:maxLines="2"
+            android:ellipsize="end"
+            android:lineSpacingExtra="2dp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginTop="5dp"
+            android:gravity="center_vertical">
+
+            <TextView
+                android:id="@+id/price"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/origin_price"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/gray3"
+                android:textSize="11sp"
+                android:layout_marginLeft="5dp" />
+
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/sale_num"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/gray3"
+            android:textSize="11sp"
+            android:layout_marginTop="2dp" />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 91 - 0
ybvideoandroid/main/src/main/res/layout/item_shop_goods_right.xml

@@ -0,0 +1,91 @@
+<?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="wrap_content"
+    android:orientation="vertical"
+    android:background="@drawable/bg_goods_item"
+    android:layout_marginLeft="5dp"
+    android:layout_marginBottom="10dp">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <ImageView
+            android:id="@+id/thumb"
+            android:layout_width="match_parent"
+            android:layout_height="120dp"
+            android:scaleType="centerCrop"
+            android:background="@color/gray1" />
+
+        <TextView
+            android:id="@+id/region_tag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentRight="true"
+            android:layout_margin="5dp"
+            android:background="@drawable/bg_region_tag"
+            android:textColor="@color/white"
+            android:textSize="10sp"
+            android:paddingLeft="6dp"
+            android:paddingRight="6dp"
+            android:paddingTop="2dp"
+            android:paddingBottom="2dp"
+            android:visibility="gone" />
+
+    </RelativeLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:padding="8dp">
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/textColor"
+            android:textSize="13sp"
+            android:maxLines="2"
+            android:ellipsize="end"
+            android:lineSpacingExtra="2dp" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginTop="5dp"
+            android:gravity="center_vertical">
+
+            <TextView
+                android:id="@+id/price"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/origin_price"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/gray3"
+                android:textSize="11sp"
+                android:layout_marginLeft="5dp" />
+
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/sale_num"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/gray3"
+            android:textSize="11sp"
+            android:layout_marginTop="2dp" />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 2 - 1
ybvideoandroid/main/src/main/res/layout/view_main_home_recommend.xml

@@ -2,7 +2,8 @@
 <FrameLayout 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:layout_height="match_parent"
+    android:paddingBottom="70dp">
 
     <FrameLayout
         android:id="@+id/container"

+ 7 - 1
ybvideoandroid/main/src/main/res/layout/view_main_shop.xml

@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    android:background="#F5F5F5">
+    android:background="#FFFFFF">
 
     <!-- 状态栏占位 -->
     <View
@@ -14,6 +14,12 @@
         android:layout_height="0dp"
         android:background="@android:color/white" />
 
+    <!-- 为避免与MainHomeViewHolder的indicator重叠,添加顶部间距 -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="46dp"
+        android:background="@android:color/transparent" />
+
     <!-- 顶部导航栏使用MagicIndicator -->
     <net.lucode.hackware.magicindicator.MagicIndicator
         android:id="@+id/indicator"

+ 3 - 29
ybvideoandroid/main/src/main/res/layout/view_main_shop_rural.xml

@@ -2,35 +2,9 @@
 <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">
+    android:orientation="vertical">
 
-    <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" />
+    <!-- 包含农村电商的完整布局 -->
+    <include layout="@layout/item_main_shop_rural" />
 
 </LinearLayout>

BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_arrow_down.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_history.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_order.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_qrcode.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_setting.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_shop.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/ic_drawer_wallet.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/linshi2.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/linshi3.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/linshi4.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/lishi1.png


BIN
ybvideoandroid/main/src/main/res/mipmap-mdpi/pijiu1.png


+ 10 - 6
ybvideoandroid/video/src/main/java/com/yunbao/video/bean/ClassBean.java

@@ -15,12 +15,16 @@ public class ClassBean implements Parcelable {
 //    public static final int HOT_ID = -2;
 //    public static final int FOLLOW_ID = -3;
 //    public static final int SHOP_ID = -4;
-public static final int SHOP_ID = -1;
-public static final int FRIEND_ID = -2;
-public static final int NEWS_ID = -3;
-public static final int CITY_ID = -4;
-public static final int FOLLOW_ID = -5;
-public static final int DISCOVER_ID = -6;
+//public static final int SHOP_ID = -1;
+//public static final int FRIEND_ID = -2;
+//public static final int NEWS_ID = -3;
+//public static final int CITY_ID = -4;
+//public static final int FOLLOW_ID = -5;
+//public static final int DISCOVER_ID = -6;
+
+    public static final int VIDEO_ID = -1;
+    public static final int MALL_ID = -1;
+    public static final int SHOP_ID = -1;
     private int mId;
     private String mName;
     private String mDes;