diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java b/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java index 4c6614b6..abb0e7dc 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/base/CommonAppContext.java @@ -161,7 +161,7 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio //设置mqtt环境 false 测试环境 true 正式环境 // ExternalResConstants.INSTANCE.setIS_MQTT_RELEASE(false); //设置http环境 false 测试环境 true 正式环境 - ExternalResConstants.INSTANCE.setIS_HTTP_RELEASE(true); + ExternalResConstants.INSTANCE.setIS_HTTP_RELEASE(false); currentEnvironment = ExternalResConstants.INSTANCE.HTTP_PATH(); initialization(); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftBoxBean.java b/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftBoxBean.java index adf4c50d..acece401 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftBoxBean.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/GiftBoxBean.java @@ -61,7 +61,7 @@ public class GiftBoxBean { private int task_type_id; private String task_type_name; - + private int is_lock;//锁:0 不开启锁 1 开启锁 @Data public static class DailyTasksBean { diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/DailyTasksActivity.java b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/DailyTasksActivity.java index 8ad3c90d..9f23d0e1 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/DailyTasksActivity.java +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/DailyTasksActivity.java @@ -5,13 +5,23 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.text.TextUtils; +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.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager2.widget.ViewPager2; import com.alibaba.android.arouter.facade.annotation.Route; import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.LogUtils; +import com.google.android.material.tabs.TabLayout; +import com.google.android.material.tabs.TabLayoutMediator; import com.xscm.modulemain.Application; import com.xscm.modulemain.R; import com.xscm.modulemain.activity.room.activity.RoomActivity; @@ -40,7 +50,9 @@ import com.xscm.moduleutil.utils.SpUtil; import org.json.JSONObject; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; @@ -57,14 +69,15 @@ import kotlin.jvm.functions.Function0; public class DailyTasksActivity extends BaseMvpActivity implements DailyTasksConacts.View { private TaskBoxAdapter mTaskBoxAdapter; - private TaskSectionAdapter mTaskDataAdapter; - - private TaskDataAdapter taskDataAdapter; private List taskList = new ArrayList<>(); private boolean isJoinRoom = false; + private ViewPager2Adapter viewPager2Adapter; + + private int currentTab = 0; + @Override protected DailyTasksPresenter bindPresenter() { return new DailyTasksPresenter(this, this); @@ -97,13 +110,22 @@ public class DailyTasksActivity extends BaseMvpActivity { + Intent intent = new Intent(this, WebViewActivity.class); + intent.putExtra("url", WebUrlConstants.INSTANCE.getWEB_RULES_URL()); + intent.putExtra("title", "规则 "); + startActivity(intent); + }); + + mTaskBoxAdapter.setOnItemClickListener(position -> { + GiftBoxBean.GiftBean item = mTaskBoxAdapter.getItem(position); + MvpPre.dailyTasksOpenBox(item.getId()); + }); + + viewPager2Adapter = new ViewPager2Adapter(taskList, new ViewPager2Adapter.OnItemClickListener() { @Override - public void onItemClick(GiftBoxBean.TaskDataBean taskItem, GiftBoxBean.TaskDataBean.DailyTasksBean item) { + public void onItemClick(int position, GiftBoxBean.TaskDataBean taskItem, GiftBoxBean.TaskDataBean.DailyTasksBean item) { LogUtils.e("taskStatus:" + item.toString() + "\n taskItem:" + taskItem.toString()); switch (item.getTask_status()) { case 1://未开始 @@ -121,22 +143,56 @@ public class DailyTasksActivity extends BaseMvpActivity { - Intent intent = new Intent(this, WebViewActivity.class); - intent.putExtra("url", WebUrlConstants.INSTANCE.getWEB_RULES_URL()); - intent.putExtra("title", "规则 "); - startActivity(intent); + // 2. 设置 ViewPager2 的页面变化监听(联动 TabLayout) + mBinding.viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + // 更新 TabLayout 的选中状态 + TabLayout.Tab selectedTab = mBinding.tabTitle.getTabAt(position); + if (selectedTab != null) { + selectedTab.select(); + } + } }); - mTaskBoxAdapter.setOnItemClickListener(position -> { - GiftBoxBean.GiftBean item = mTaskBoxAdapter.getItem(position); - MvpPre.dailyTasksOpenBox(item.getId()); + mBinding.tabTitle.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + View customView = tab.getCustomView(); + if (customView != null) { + TextView textView = customView.findViewById(R.id.tabText); + ImageView iconView = customView.findViewById(R.id.tabIcon); + iconView.setImageResource(R.mipmap.icon_task_select_lock); + textView.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.black)); + } + mBinding.viewPager2.setCurrentItem(tab.getPosition()); + currentTab = tab.getPosition(); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + View customView = tab.getCustomView(); + if (customView != null) { + TextView textView = customView.findViewById(R.id.tabText); + ImageView iconView = customView.findViewById(R.id.tabIcon); + iconView.setImageResource(R.mipmap.icon_task_select_unlock); + textView.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.colorBlack45)); + } + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } }); + } + public void isShowLoading(boolean b) { if (b) { mBinding.coolWaitView.setVisibility(View.VISIBLE); @@ -156,14 +212,40 @@ public class DailyTasksActivity extends BaseMvpActivity !task.getTask_list().isEmpty()) - .forEach(taskList::add); + mBinding.tabTitle.removeAllTabs(); - mTaskDataAdapter.notifyDataSetChanged(); + for (int i = 0; i < taskList.size(); i++) { + GiftBoxBean.TaskDataBean taskItem = taskList.get(i); + TabLayout.Tab tab = mBinding.tabTitle.newTab(); + View customView = getLayoutInflater().inflate(R.layout.custom_task_tab, null); + + TextView textView = customView.findViewById(R.id.tabText); + ImageView iconView = customView.findViewById(R.id.tabIcon); + + textView.setText(taskItem.getTask_type_name()); + if (taskItem.getIs_lock() == 1) { + if (i == 0) { + iconView.setImageResource(R.mipmap.icon_task_select_lock); + } else { + iconView.setImageResource(R.mipmap.icon_task_select_unlock); + } + } else { + iconView.setVisibility(View.GONE); + } + tab.setCustomView(customView); + mBinding.tabTitle.addTab(tab); + } + // 4. 默认选中第一个 Tab(可选) + mBinding.tabTitle.post(() -> { + if (mBinding.tabTitle.getTabCount() > currentTab) { + mBinding.tabTitle.selectTab(mBinding.tabTitle.getTabAt(currentTab)); + } + }); + + viewPager2Adapter.notifyDataSetChanged(); } private void taskStatus1(GiftBoxBean.TaskDataBean.DailyTasksBean item) { @@ -283,5 +365,65 @@ public class DailyTasksActivity extends BaseMvpActivity { + private List taskList; + private OnItemClickListener onItemClickListener; + public ViewPager2Adapter(List taskList, OnItemClickListener onItemClickListener) { + this.taskList = taskList; + this.onItemClickListener = onItemClickListener; + } + + @NonNull + @Override + public ViewPager2Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycleview_task, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ViewPager2Adapter.ViewHolder holder, int position) { + holder.recyclerView.setLayoutManager(new GridLayoutManager(DailyTasksActivity.this, 1)); + + TaskDataAdapter adapter = new TaskDataAdapter(); + holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder.itemView.getContext())); + holder.recyclerView.setAdapter(adapter); + adapter.setNewData(taskList.get(position).getTask_list()); + if (taskList.get(position).getIs_lock() == 1) { + View emptyView = LayoutInflater.from(DailyTasksActivity.this).inflate(R.layout.empty_img_layout, null, false); + ImageView ivEmpty = emptyView.findViewById(R.id.image_empty); + if (taskList.get(position).getTask_type_name().contains("师徒")) { + ivEmpty.setImageResource(R.mipmap.icon_ts_lock_show_bg); + } else if (taskList.get(position).getTask_type_name().contains("情侣")) { + ivEmpty.setImageResource(R.mipmap.icon_cp_lock_show_bg); + } + adapter.setEmptyView(emptyView); + } + + adapter.setItemClickLitener((view, position1, item) -> { + if (onItemClickListener != null) { + onItemClickListener.onItemClick(position, taskList.get(position), item); + } + }); + + } + + @Override + public int getItemCount() { + return taskList.size(); + } + + static class ViewHolder extends RecyclerView.ViewHolder { + public RecyclerView recyclerView; + + public ViewHolder(@NonNull View itemView) { + super(itemView); + recyclerView = itemView.findViewById(R.id.recycle_view); + } + } + + interface OnItemClickListener { + void onItemClick(int position, GiftBoxBean.TaskDataBean taskItem, GiftBoxBean.TaskDataBean.DailyTasksBean item); + } + } } \ No newline at end of file diff --git a/MainModule/src/main/res/layout/activity_daily_tasks.xml b/MainModule/src/main/res/layout/activity_daily_tasks.xml index 570a6a60..da6f6d6b 100644 --- a/MainModule/src/main/res/layout/activity_daily_tasks.xml +++ b/MainModule/src/main/res/layout/activity_daily_tasks.xml @@ -28,18 +28,18 @@ + android:layout_marginEnd="@dimen/dp_16" + android:layout_marginBottom="@dimen/dp_12"> + android:src="@mipmap/task_t" /> + android:paddingBottom="@dimen/dp_100" + android:visibility="gone" /> + + + + + + + diff --git a/MainModule/src/main/res/layout/custom_task_tab.xml b/MainModule/src/main/res/layout/custom_task_tab.xml new file mode 100644 index 00000000..bf527488 --- /dev/null +++ b/MainModule/src/main/res/layout/custom_task_tab.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/empty_img_layout.xml b/MainModule/src/main/res/layout/empty_img_layout.xml new file mode 100644 index 00000000..6d2900f3 --- /dev/null +++ b/MainModule/src/main/res/layout/empty_img_layout.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/MainModule/src/main/res/layout/item_recycleview_task.xml b/MainModule/src/main/res/layout/item_recycleview_task.xml new file mode 100644 index 00000000..b6e0b14c --- /dev/null +++ b/MainModule/src/main/res/layout/item_recycleview_task.xml @@ -0,0 +1,8 @@ + + + diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_cp_lock_show_bg.png b/MainModule/src/main/res/mipmap-hdpi/icon_cp_lock_show_bg.png new file mode 100644 index 00000000..94c0c78b Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_cp_lock_show_bg.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_task_select_lock.png b/MainModule/src/main/res/mipmap-hdpi/icon_task_select_lock.png new file mode 100644 index 00000000..25724682 Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_task_select_lock.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_task_select_unlock.png b/MainModule/src/main/res/mipmap-hdpi/icon_task_select_unlock.png new file mode 100644 index 00000000..a1eb2324 Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_task_select_unlock.png differ diff --git a/MainModule/src/main/res/mipmap-hdpi/icon_ts_lock_show_bg.png b/MainModule/src/main/res/mipmap-hdpi/icon_ts_lock_show_bg.png new file mode 100644 index 00000000..9f40ec5d Binary files /dev/null and b/MainModule/src/main/res/mipmap-hdpi/icon_ts_lock_show_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_cp_lock_show_bg.png b/MainModule/src/main/res/mipmap-xhdpi/icon_cp_lock_show_bg.png new file mode 100644 index 00000000..d02307e3 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_cp_lock_show_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_task_select_lock.png b/MainModule/src/main/res/mipmap-xhdpi/icon_task_select_lock.png new file mode 100644 index 00000000..76899f0e Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_task_select_lock.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_task_select_unlock.png b/MainModule/src/main/res/mipmap-xhdpi/icon_task_select_unlock.png new file mode 100644 index 00000000..57713ce8 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_task_select_unlock.png differ diff --git a/MainModule/src/main/res/mipmap-xhdpi/icon_ts_lock_show_bg.png b/MainModule/src/main/res/mipmap-xhdpi/icon_ts_lock_show_bg.png new file mode 100644 index 00000000..6b16e590 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xhdpi/icon_ts_lock_show_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_cp_lock_show_bg.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_cp_lock_show_bg.png new file mode 100644 index 00000000..0bdf5928 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_cp_lock_show_bg.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_lock.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_lock.png new file mode 100644 index 00000000..5115b1bf Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_lock.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_unlock.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_unlock.png new file mode 100644 index 00000000..844815a0 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_unlock.png differ diff --git a/MainModule/src/main/res/mipmap-xxhdpi/icon_ts_lock_show_bg.png b/MainModule/src/main/res/mipmap-xxhdpi/icon_ts_lock_show_bg.png new file mode 100644 index 00000000..4eac3c81 Binary files /dev/null and b/MainModule/src/main/res/mipmap-xxhdpi/icon_ts_lock_show_bg.png differ