任务修改。
@@ -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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
|
||||
27
MainModule/src/main/res/layout/custom_task_tab.xml
Normal 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>
|
||||
16
MainModule/src/main/res/layout/empty_img_layout.xml
Normal 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>
|
||||
8
MainModule/src/main/res/layout/item_recycleview_task.xml
Normal 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" />
|
||||
|
||||
BIN
MainModule/src/main/res/mipmap-hdpi/icon_cp_lock_show_bg.png
Normal file
|
After Width: | Height: | Size: 352 KiB |
BIN
MainModule/src/main/res/mipmap-hdpi/icon_task_select_lock.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
MainModule/src/main/res/mipmap-hdpi/icon_task_select_unlock.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
MainModule/src/main/res/mipmap-hdpi/icon_ts_lock_show_bg.png
Normal file
|
After Width: | Height: | Size: 342 KiB |
BIN
MainModule/src/main/res/mipmap-xhdpi/icon_cp_lock_show_bg.png
Normal file
|
After Width: | Height: | Size: 565 KiB |
BIN
MainModule/src/main/res/mipmap-xhdpi/icon_task_select_lock.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
MainModule/src/main/res/mipmap-xhdpi/icon_task_select_unlock.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
MainModule/src/main/res/mipmap-xhdpi/icon_ts_lock_show_bg.png
Normal file
|
After Width: | Height: | Size: 551 KiB |
BIN
MainModule/src/main/res/mipmap-xxhdpi/icon_cp_lock_show_bg.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
MainModule/src/main/res/mipmap-xxhdpi/icon_task_select_lock.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
BIN
MainModule/src/main/res/mipmap-xxhdpi/icon_ts_lock_show_bg.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |