新增主播任务对话框模块
This commit is contained in:
@@ -866,7 +866,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
|
||||
|
||||
private void showTaskDialog() {
|
||||
final Dialog dialog = new Dialog(LiveActivity.this, com.yunbao.live.R.style.dialog);
|
||||
dialog.setContentView(R.layout.dialog_task);
|
||||
dialog.setContentView(R.layout.dialog_live_task);
|
||||
dialog.setCancelable(true);
|
||||
dialog.setCanceledOnTouchOutside(true);
|
||||
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.yunbao.live.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.yunbao.common.bean.LiveTaskModel;
|
||||
import com.yunbao.common.utils.DpUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.live.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LiveTaskRecyclerAdapter extends RecyclerView.Adapter<LiveTaskRecyclerAdapter.TaskHolder> {
|
||||
|
||||
private Context mContext;
|
||||
private List<LiveTaskModel> tasks;
|
||||
|
||||
public LiveTaskRecyclerAdapter(Context mContext) {
|
||||
this.mContext = mContext;
|
||||
}
|
||||
|
||||
public void setTasks(List<LiveTaskModel> tasks) {
|
||||
this.tasks = tasks;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public TaskHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
if (viewType == LiveTaskModel.TASK_TYPE_TIP) {
|
||||
return new TaskHolder(new TextView(mContext));
|
||||
} else {
|
||||
return new TaskHolder(LayoutInflater.from(mContext).inflate(R.layout.item_live_task, parent, false));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return tasks.get(position).getType();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull TaskHolder holder, int position) {
|
||||
holder.setDate(tasks.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return tasks.size();
|
||||
}
|
||||
|
||||
|
||||
public static class TaskHolder extends RecyclerView.ViewHolder {
|
||||
private TextView title;
|
||||
private TextView complete;
|
||||
private TextView hot;
|
||||
private TextView xp;
|
||||
private ImageView hotIcon;
|
||||
private ImageView xpIcon;
|
||||
|
||||
public TaskHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
if (itemView instanceof TextView) {
|
||||
title = (TextView) itemView;
|
||||
title.setTextColor(Color.parseColor("#B3B3B3"));
|
||||
title.setTextSize(12);
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
params.setMarginStart(DpUtil.dp2px(27));
|
||||
params.setMargins(DpUtil.dp2px(27), DpUtil.dp2px(16), 0, DpUtil.dp2px(16));
|
||||
title.setLayoutParams(params);
|
||||
} else {
|
||||
title = itemView.findViewById(R.id.item_task_title);
|
||||
complete = itemView.findViewById(R.id.item_task_complete);
|
||||
hot = itemView.findViewById(R.id.item_task_hot);
|
||||
xp = itemView.findViewById(R.id.item_task_xp);
|
||||
hotIcon = itemView.findViewById(R.id.item_task_hot_img);
|
||||
xpIcon = itemView.findViewById(R.id.item_task_xp_img);
|
||||
hotIcon.setImageResource(R.mipmap.dialog_task_hot);
|
||||
xpIcon.setImageResource(R.mipmap.dialog_task_star);
|
||||
}
|
||||
}
|
||||
|
||||
public void setDate(LiveTaskModel task) {
|
||||
title.setText(task.getTitle());
|
||||
if (task.getType() == LiveTaskModel.TASK_TYPE_TIP) {
|
||||
return;
|
||||
}
|
||||
complete.setText(task.isComplete() ? R.string.live_task_item_complete_true : R.string.live_task_item_complete_false);
|
||||
complete.setBackgroundResource(task.isComplete() ? R.drawable.background_6cbe53 : R.drawable.background_595959);
|
||||
hot.setText(Html.fromHtml("<font color='#B3B3B3'>"+ WordUtil.getString(R.string.live_task_item_hot) +"</font>  <font color='#F09FC2'>" + task.getHot() + "</font>"));
|
||||
xp.setText(Html.fromHtml("<font color='#B3B3B3'>"+WordUtil.getString(R.string.live_task_item_xp)+"</font>  <font color='#FFF69F'>" + task.getXp() + "</font>"));
|
||||
}
|
||||
}
|
||||
}
|
||||
202
live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java
Normal file
202
live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java
Normal file
@@ -0,0 +1,202 @@
|
||||
package com.yunbao.live.dialog;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
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.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import com.google.android.material.tabs.TabLayoutMediator;
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.yunbao.common.bean.LiveTaskModel;
|
||||
import com.yunbao.common.dialog.AbsDialogPopupWindow;
|
||||
import com.yunbao.common.utils.ToastUtil;
|
||||
import com.yunbao.common.utils.WordUtil;
|
||||
import com.yunbao.live.R;
|
||||
import com.yunbao.live.adapter.LiveTaskRecyclerAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 主播直播任务弹框
|
||||
*/
|
||||
public class LiveTaskDialog extends AbsDialogPopupWindow {
|
||||
private TextView newStarTime;
|
||||
private ImageView newStarImg;
|
||||
private ImageView taskInfoImg;
|
||||
private ImageView tipImg;
|
||||
private TabLayout tabLayout;
|
||||
|
||||
private ViewPager2 viewPager;
|
||||
|
||||
|
||||
private TabLayoutMediator mediator;
|
||||
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public LiveTaskDialog(Context context) {
|
||||
super(context);
|
||||
this.mContext = context;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildDialog(XPopup.Builder builder) {
|
||||
builder.enableDrag(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
initView();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.dialog_live_task;
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
newStarTime = findViewById(R.id.task_new_star_time);
|
||||
newStarImg = findViewById(R.id.live_task_banner1);
|
||||
taskInfoImg = findViewById(R.id.live_task_banner2);
|
||||
tipImg = findViewById(R.id.live_task_tip);
|
||||
tabLayout = findViewById(R.id.live_task_menu);
|
||||
viewPager = findViewById(R.id.live_task_viewpager);
|
||||
|
||||
newStarTime.setText("新秀主播時效截止至 2023/1/01 12:00");
|
||||
|
||||
initImgView();
|
||||
initTabLayout();
|
||||
|
||||
}
|
||||
|
||||
private void initImgView() {
|
||||
newStarImg.setImageResource(R.mipmap.dialog_task_new_star);
|
||||
taskInfoImg.setImageResource(R.mipmap.dialog_task_info);
|
||||
tipImg.setImageResource(R.mipmap.icon_guize);
|
||||
tipImg.setOnClickListener(v -> new LiveTaskInfoDialog(mContext).showDialog());
|
||||
}
|
||||
|
||||
private void initTabLayout() {
|
||||
TabLayout.Tab liveTaskTag = tabLayout.newTab();
|
||||
TabLayout.Tab userTaskTag = tabLayout.newTab();
|
||||
liveTaskTag.setText(R.string.live_task_tab1);
|
||||
userTaskTag.setText(R.string.live_task_tab2);
|
||||
tabLayout.addTab(liveTaskTag);
|
||||
tabLayout.addTab(userTaskTag);
|
||||
|
||||
viewPager.setAdapter(new FragmentStateAdapter(((AppCompatActivity) mContext).getSupportFragmentManager(), getLifecycle()) {
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Fragment createFragment(int position) {
|
||||
TaskFragment fragment = new TaskFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("position", position);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
mediator = new TabLayoutMediator(tabLayout, viewPager, true, new TabLayoutMediator.TabConfigurationStrategy() {
|
||||
@Override
|
||||
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
|
||||
if (position == 0) {
|
||||
tab.setText(R.string.live_task_tab1);
|
||||
} else {
|
||||
tab.setText(R.string.live_task_tab2);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
mediator.attach();
|
||||
}
|
||||
|
||||
|
||||
public static class TaskFragment extends Fragment {
|
||||
private RecyclerView taskList;
|
||||
private LiveTaskRecyclerAdapter adapter;
|
||||
private List<LiveTaskModel> tasks;
|
||||
private int position;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return new RecyclerView(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
this.position = getArguments().getInt("position", -1);
|
||||
taskList = (RecyclerView) view;
|
||||
initTaskList();
|
||||
createTask();
|
||||
}
|
||||
|
||||
private void initTaskList() {
|
||||
adapter = new LiveTaskRecyclerAdapter(getContext());
|
||||
taskList.setAdapter(adapter);
|
||||
taskList.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false));
|
||||
}
|
||||
|
||||
private void createTask() {
|
||||
tasks = new ArrayList<>();
|
||||
for (int i = 0; i < 4; i++) {
|
||||
LiveTaskModel model = new LiveTaskModel();
|
||||
if (i == 0) {
|
||||
model.setType(LiveTaskModel.TASK_TYPE_TIP);
|
||||
model.setTitle(WordUtil.getString(R.string.live_task_no1));
|
||||
} else {
|
||||
model.setType(LiveTaskModel.TASK_TYPE_ITEM);
|
||||
model.setTitle("开播测试标题");
|
||||
}
|
||||
model.setTask(30);
|
||||
model.setXp(3000);
|
||||
model.setHot(5000);
|
||||
tasks.add(model);
|
||||
|
||||
}
|
||||
for (int i = 0; i < 4; i++) {
|
||||
LiveTaskModel model = new LiveTaskModel();
|
||||
if (i == 0) {
|
||||
model.setType(LiveTaskModel.TASK_TYPE_TIP);
|
||||
model.setTitle(WordUtil.getString(R.string.live_task_no2));
|
||||
} else {
|
||||
model.setType(LiveTaskModel.TASK_TYPE_ITEM);
|
||||
model.setTitle("PK测试标题");
|
||||
}
|
||||
model.setTask(30);
|
||||
model.setXp(3000);
|
||||
model.setHot(5000);
|
||||
tasks.add(model);
|
||||
|
||||
}
|
||||
adapter.setTasks(tasks);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.yunbao.live.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.lxj.xpopup.XPopup;
|
||||
import com.yunbao.common.dialog.AbsDialogPopupWindow;
|
||||
import com.yunbao.live.R;
|
||||
|
||||
public class LiveTaskInfoDialog extends AbsDialogPopupWindow {
|
||||
public LiveTaskInfoDialog(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getImplLayoutId() {
|
||||
return R.layout.dialog_live_task_info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildDialog(XPopup.Builder builder) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
ImageView back = findViewById(R.id.live_task_info_back);
|
||||
back.setImageResource(R.mipmap.icon_back);
|
||||
back.setOnClickListener(v -> dismiss());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user