任务修改。

This commit is contained in:
2025-12-16 14:44:48 +08:00
parent 72a7eecbcd
commit 4b356a6ce4
19 changed files with 249 additions and 30 deletions

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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<DailyTasksPresenter, ActivityDailyTasksBinding> implements DailyTasksConacts.View {
private TaskBoxAdapter mTaskBoxAdapter;
private TaskSectionAdapter mTaskDataAdapter;
private TaskDataAdapter taskDataAdapter;
private List<GiftBoxBean.TaskDataBean> 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<DailyTasksPresenter, Act
mBinding.rvTask.setLayoutManager(new GridLayoutManager(this, 2, GridLayoutManager.VERTICAL, false));
mBinding.rvTask.setAdapter(mTaskBoxAdapter);
mBinding.rvTaskToday.setLayoutManager(new GridLayoutManager(this, 1));
mTaskDataAdapter = new TaskSectionAdapter(taskList);
mBinding.rvTaskToday.setAdapter(mTaskDataAdapter);
mTaskDataAdapter.setOnItemClickListener(new TaskSectionAdapter.OnItemClickListener() {
mBinding.imGz.setOnClickListener(v -> {
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<DailyTasksPresenter, Act
}
}
});
mBinding.viewPager2.setAdapter(viewPager2Adapter);
mBinding.imGz.setOnClickListener(v -> {
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<DailyTasksPresenter, Act
public void setGiftBox(GiftBoxBean giftBoxBean) {
mBinding.tvTitle.setText("今日累计充值获得金币:" + (giftBoxBean.getUser_gold() != null ? giftBoxBean.getUser_gold() : "0"));
mTaskBoxAdapter.setNewData(giftBoxBean.getGift_box_list());
taskList.clear();
taskList.addAll(giftBoxBean.getTasks());
giftBoxBean.getTasks().stream()
.filter(task -> !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<DailyTasksPresenter, Act
}
}
class ViewPager2Adapter extends RecyclerView.Adapter<ViewPager2Adapter.ViewHolder> {
private List<GiftBoxBean.TaskDataBean> taskList;
private OnItemClickListener onItemClickListener;
public ViewPager2Adapter(List<GiftBoxBean.TaskDataBean> 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);
}
}
}

View File

@@ -28,18 +28,18 @@
<RelativeLayout
android:id="@+id/rl_top"
android:layout_marginBottom="@dimen/dp_12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_16">
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginBottom="@dimen/dp_12">
<ImageView
android:layout_width="match_parent"
android:src="@mipmap/task_t"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:layout_height="wrap_content"/>
android:src="@mipmap/task_t" />
<TextView
android:id="@+id/tv_title"
@@ -68,10 +68,36 @@
android:id="@+id/rv_task_today"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingStart="@dimen/dp_16"
android:paddingEnd="@dimen/dp_16"
android:clipToPadding="false"
android:paddingBottom="@dimen/dp_100" />
android:paddingBottom="@dimen/dp_100"
android:visibility="gone" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_title"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_34"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_16"
app:tabIndicatorColor="@color/transparent"
app:tabIndicatorFullWidth="false"
app:tabIndicatorGravity="bottom"
app:tabIndicatorHeight="@dimen/dp_2"
app:tabMinWidth="@dimen/dp_30"
app:tabMode="scrollable"
android:textSize="@dimen/sp_16"
app:tabSelectedTextColor="@color/black"
app:tabTextColor="@color/colorBlack45" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager2"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorBlack45"
android:textSize="@dimen/sp_14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="任务" />
<ImageView
android:id="@+id/tabIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_task_select_unlock"
app:layout_constraintBottom_toBottomOf="@id/tabText"
app:layout_constraintStart_toEndOf="@id/tabText"
app:layout_constraintTop_toTopOf="@id/tabText" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<ImageView
android:id="@+id/image_empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycle_view"
android:paddingHorizontal="@dimen/dp_12"
android:layout_width="match_parent"
android:layout_height="match_parent" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB