diff --git a/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java new file mode 100644 index 000000000..b159fcad1 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/bean/LiveTaskModel.java @@ -0,0 +1,71 @@ +package com.yunbao.common.bean; + + +public class LiveTaskModel extends BaseModel { + public static final int TASK_TYPE_TIP=0; + public static final int TASK_TYPE_ITEM=1; + + int type; + String title; + int hot; + int xp; + int taskTarget; + int task; + boolean complete; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getHot() { + return hot; + } + + public void setHot(int hot) { + this.hot = hot; + } + + public int getXp() { + return xp; + } + + public void setXp(int xp) { + this.xp = xp; + } + + public int getTaskTarget() { + return taskTarget; + } + + public void setTaskTarget(int taskTarget) { + this.taskTarget = taskTarget; + } + + public int getTask() { + return task; + } + + public void setTask(int task) { + this.task = task; + } + + public boolean isComplete() { + return complete; + } + + public void setComplete(boolean complete) { + this.complete = complete; + } +} diff --git a/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java new file mode 100644 index 000000000..150ca86e7 --- /dev/null +++ b/common/src/main/java/com/yunbao/common/dialog/AbsDialogPopupWindow.java @@ -0,0 +1,33 @@ +package com.yunbao.common.dialog; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.lxj.xpopup.XPopup; +import com.lxj.xpopup.core.BottomPopupView; + + +public abstract class AbsDialogPopupWindow extends BottomPopupView { + private final Context mContext; + + public AbsDialogPopupWindow(@NonNull Context context) { + super(context); + this.mContext = context; + } + + public abstract void buildDialog(XPopup.Builder builder); + public abstract int bindLayoutId(); + + @Override + protected int getImplLayoutId() { + return bindLayoutId(); + } + + public void showDialog() { + XPopup.Builder builder = new XPopup.Builder(mContext); + builder.isDestroyOnDismiss(true); + buildDialog(builder); + builder.asCustom(this).show(); + } +} diff --git a/config.gradle b/config.gradle index 66e026ffe..00ea7a5b8 100644 --- a/config.gradle +++ b/config.gradle @@ -9,10 +9,9 @@ ext { ] manifestPlaceholders = [ //正式 - - serverHost : "https://napi.yaoulive.com", -// -// serverHost : "https://ceshi.yaoulive.com", +// serverHost : "https://napi.yaoulive.com", + //测试 + serverHost : "https://ceshi.yaoulive.com", //腾讯地图 txMapAppKey : "EOZBZ-ASLCU-4XPV3-BDCHZ-4E3Q7-H4BWB", diff --git a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java index 9ec322ca1..7d0ad33b5 100644 --- a/live/src/main/java/com/yunbao/live/activity/LiveActivity.java +++ b/live/src/main/java/com/yunbao/live/activity/LiveActivity.java @@ -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); diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java new file mode 100644 index 000000000..0e58c2e75 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/LiveDataInfoRecyclerAdapter.java @@ -0,0 +1,66 @@ +package com.yunbao.live.adapter; + +import android.content.Context; +import android.text.Html; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.yunbao.live.R; +import com.yunbao.live.bean.LiveDataInfoModel; + +import java.util.List; + +public class LiveDataInfoRecyclerAdapter extends RecyclerView.Adapter { + private Context mContext; + private List list; + + public LiveDataInfoRecyclerAdapter(Context mContext) { + this.mContext = mContext; + } + + public void setList(List list) { + this.list = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public LiveDataHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new LiveDataHolder(LayoutInflater.from(mContext).inflate(R.layout.item_live_data, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull LiveDataHolder holder, int position) { + holder.setData(list.get(position)); + } + + @Override + public int getItemCount() { + return list.size(); + } + + public static class LiveDataHolder extends RecyclerView.ViewHolder { + private TextView title, data; + + public LiveDataHolder(@NonNull View itemView) { + super(itemView); + title = itemView.findViewById(R.id.item_title); + data = itemView.findViewById(R.id.item_data); + } + + public void setData(LiveDataInfoModel model) { + if (model.getColor() != null) { + data.setText(Html.fromHtml("" + model.getData() + "")); + } else { + data.setText(model.getData()); + } + title.setText(model.getTitle()); + } + + } +} diff --git a/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java b/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java new file mode 100644 index 000000000..c9d1d4ac2 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/adapter/LiveTaskRecyclerAdapter.java @@ -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 { + + private Context mContext; + private List tasks; + + public LiveTaskRecyclerAdapter(Context mContext) { + this.mContext = mContext; + } + + public void setTasks(List 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(""+ WordUtil.getString(R.string.live_task_item_hot) +"  " + task.getHot() + "")); + xp.setText(Html.fromHtml(""+WordUtil.getString(R.string.live_task_item_xp)+"  " + task.getXp() + "")); + } + } +} diff --git a/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java b/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java new file mode 100644 index 000000000..80f3f283a --- /dev/null +++ b/live/src/main/java/com/yunbao/live/bean/LiveDataInfoModel.java @@ -0,0 +1,33 @@ +package com.yunbao.live.bean; + +import com.yunbao.common.bean.BaseModel; + +public class LiveDataInfoModel extends BaseModel { + private String color; + private String title; + private String data; + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java new file mode 100644 index 000000000..87392a0fb --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveDataInfoDialog.java @@ -0,0 +1,65 @@ +package com.yunbao.live.dialog; + +import android.content.Context; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.lxj.xpopup.XPopup; +import com.yunbao.common.dialog.AbsDialogPopupWindow; +import com.yunbao.live.R; +import com.yunbao.live.adapter.LiveDataInfoRecyclerAdapter; +import com.yunbao.live.bean.LiveDataInfoModel; + + +import java.util.ArrayList; +import java.util.List; + +public class LiveDataInfoDialog extends AbsDialogPopupWindow { + private ImageView img; + private RecyclerView recyclerView; + private LiveDataInfoRecyclerAdapter adapter; + private List list; + + public LiveDataInfoDialog(@NonNull Context context) { + super(context); + } + + + @Override + public void buildDialog(XPopup.Builder builder) { + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_live_data; + } + + @Override + protected void onCreate() { + super.onCreate(); + img = findViewById(R.id.live_data_img); + img.setImageResource(R.mipmap.icon_free_pk_waring); + recyclerView = findViewById(R.id.live_data_list); + adapter = new LiveDataInfoRecyclerAdapter(getContext()); + recyclerView.setAdapter(adapter); + initData(); + } + + private void initData() { + list = new ArrayList<>(); + for (int i = 0; i < 8; i++) { + LiveDataInfoModel model = new LiveDataInfoModel(); + if (i == 0) { + model.setColor("#00FFFF"); + } else if (i == 1) { + model.setColor("#FFF69F"); + } + model.setTitle("标题:" + i); + model.setData("数据:" + i); + list.add(model); + } + adapter.setList(list); + } +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java new file mode 100644 index 000000000..f044839df --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskDialog.java @@ -0,0 +1,201 @@ +package com.yunbao.live.dialog; + +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.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 + public int bindLayoutId() { + return R.layout.dialog_live_task; + } + + @Override + protected void onCreate() { + super.onCreate(); + initView(); + } + + + 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 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); + } + + } + +} diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java b/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java new file mode 100644 index 000000000..1b6423f49 --- /dev/null +++ b/live/src/main/java/com/yunbao/live/dialog/LiveTaskInfoDialog.java @@ -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 + public void buildDialog(XPopup.Builder builder) { + + } + + @Override + public int bindLayoutId() { + return R.layout.dialog_live_task_info; + } + + @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()); + } +} diff --git a/live/src/main/res/drawable/background_151515.xml b/live/src/main/res/drawable/background_151515.xml new file mode 100644 index 000000000..cd3ed4522 --- /dev/null +++ b/live/src/main/res/drawable/background_151515.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/live/src/main/res/drawable/background_595959.xml b/live/src/main/res/drawable/background_595959.xml new file mode 100644 index 000000000..c90524801 --- /dev/null +++ b/live/src/main/res/drawable/background_595959.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/drawable/background_6cbe53.xml b/live/src/main/res/drawable/background_6cbe53.xml new file mode 100644 index 000000000..47302db9d --- /dev/null +++ b/live/src/main/res/drawable/background_6cbe53.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_live_data.xml b/live/src/main/res/layout/dialog_live_data.xml new file mode 100644 index 000000000..d381e7a2e --- /dev/null +++ b/live/src/main/res/layout/dialog_live_data.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_live_task.xml b/live/src/main/res/layout/dialog_live_task.xml new file mode 100644 index 000000000..02e632c14 --- /dev/null +++ b/live/src/main/res/layout/dialog_live_task.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/dialog_live_task_info.xml b/live/src/main/res/layout/dialog_live_task_info.xml new file mode 100644 index 000000000..178791b53 --- /dev/null +++ b/live/src/main/res/layout/dialog_live_task_info.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_live_data.xml b/live/src/main/res/layout/item_live_data.xml new file mode 100644 index 000000000..f46e318f4 --- /dev/null +++ b/live/src/main/res/layout/item_live_data.xml @@ -0,0 +1,44 @@ + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/layout/item_live_task.xml b/live/src/main/res/layout/item_live_task.xml new file mode 100644 index 000000000..8208faf8f --- /dev/null +++ b/live/src/main/res/layout/item_live_task.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_hot.png b/live/src/main/res/mipmap-xhdpi/dialog_task_hot.png new file mode 100644 index 000000000..5f1599659 Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/dialog_task_hot.png differ diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_info.png b/live/src/main/res/mipmap-xhdpi/dialog_task_info.png new file mode 100644 index 000000000..7627e345e Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/dialog_task_info.png differ diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_new_star.png b/live/src/main/res/mipmap-xhdpi/dialog_task_new_star.png new file mode 100644 index 000000000..6673b3e89 Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/dialog_task_new_star.png differ diff --git a/live/src/main/res/mipmap-xhdpi/dialog_task_star.png b/live/src/main/res/mipmap-xhdpi/dialog_task_star.png new file mode 100644 index 000000000..fee098e1b Binary files /dev/null and b/live/src/main/res/mipmap-xhdpi/dialog_task_star.png differ diff --git a/live/src/main/res/values-en/strings.xml b/live/src/main/res/values-en/strings.xml index a6cc2d9aa..eb96a0f00 100644 --- a/live/src/main/res/values-en/strings.xml +++ b/live/src/main/res/values-en/strings.xml @@ -18,4 +18,17 @@ Only those who have the room code can watch Submit The number of voices has reached 3, and no more can be added. + 當日連續開播時長(分鐘) + 當日累計PK次數(不限模式) + 直播互動 + 粉絲增漲 + 主播任務特別說明 + 所有主播在開播後,即可獲得一系列的當日任務,當根據相應的要求完成任務後,主播即可在第二天開播後,獲得前一天的任務獎勵。 + ● 所有任務數值將由系統進行實時計算,如因個人手機電腦設備問題、網絡問題或是沒有正常進行下播導致數據出現錯誤等問題,為此相關主播可進行聯系相關平臺工作人員或是在線客服,進行反饋,待相關部分確認後,將會再進行補償處理。\n● 所有任務數據的正常結算周期將會在每日的淩晨6點進行結算,若開播時間超過淩晨6點,將會出現獎勵無法正常結算的情況,請知悉。\n● 當主播規範分低於90時,主播任務中心的所有獎勵,將僅能獲得50%的,當主播規範分低於80以下時,將無法獲得主播任務獎勵。 + 已完成 + 未完成 + 直播熱度 + 主播經驗 + 本場直播數據統計 + 歷史數據可在主播中心查看 \ No newline at end of file diff --git a/live/src/main/res/values/strings.xml b/live/src/main/res/values/strings.xml index c994ee24a..981f1095a 100644 --- a/live/src/main/res/values/strings.xml +++ b/live/src/main/res/values/strings.xml @@ -49,6 +49,17 @@ 請輸入您要pk的主播昵稱或id 對方正在PK中 PK次數已用完 - - + 當日連續開播時長(分鐘) + 當日累計PK次數(不限模式) + 直播互動 + 粉絲增漲 + 主播任務特別說明 + 所有主播在開播後,即可獲得一系列的當日任務,當根據相應的要求完成任務後,主播即可在第二天開播後,獲得前一天的任務獎勵。 + ● 所有任務數值將由系統進行實時計算,如因個人手機電腦設備問題、網絡問題或是沒有正常進行下播導致數據出現錯誤等問題,為此相關主播可進行聯系相關平臺工作人員或是在線客服,進行反饋,待相關部分確認後,將會再進行補償處理。\n● 所有任務數據的正常結算周期將會在每日的淩晨6點進行結算,若開播時間超過淩晨6點,將會出現獎勵無法正常結算的情況,請知悉。\n● 當主播規範分低於90時,主播任務中心的所有獎勵,將僅能獲得50%的,當主播規範分低於80以下時,將無法獲得主播任務獎勵。 + 已完成 + 未完成 + 直播熱度 + 主播經驗 + 本場直播數據統計 + 歷史數據可在主播中心查看 diff --git a/main/src/main/java/com/yunbao/main/activity/TestActivity.java b/main/src/main/java/com/yunbao/main/activity/TestActivity.java index d4094b529..e62419001 100644 --- a/main/src/main/java/com/yunbao/main/activity/TestActivity.java +++ b/main/src/main/java/com/yunbao/main/activity/TestActivity.java @@ -1,23 +1,60 @@ package com.yunbao.main.activity; +import android.content.Intent; import android.os.Bundle; +import android.os.Environment; import android.text.SpannableStringBuilder; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ListView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; -import com.yunbao.main.R; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.live.dialog.LiveDataInfoDialog; +import com.yunbao.live.dialog.LiveTaskDialog; + + +import java.io.File; public class TestActivity extends AppCompatActivity { private TextView contextLayout; + private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_test); - contextLayout = findViewById(R.id.context_layout); - SpannableStringBuilder builder = new SpannableStringBuilder(); + listView = new ListView(this); + setContentView(listView); + String[] strs = new String[]{ + "弹出主播任务", + "直播數據" + }; + + listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, strs)); + listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + switch (position) { + case 0: + new LiveTaskDialog(TestActivity.this).showDialog(); + break; + case 1: + new LiveDataInfoDialog(TestActivity.this).showDialog(); + break; + + } + } + }); + } + + @Override + protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { + super.onActivityResult(requestCode, resultCode, data); } } \ No newline at end of file diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index 4cc0b3327..a6ec4e727 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -1,6 +1,7 @@ package com.yunbao.main.views; import android.content.Context; +import android.content.Intent; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -11,6 +12,7 @@ import com.yunbao.common.utils.WordUtil; import com.yunbao.live.dialog.LiveRobotSettingDialogFragment; import com.yunbao.main.R; import com.yunbao.main.activity.MainActivity; +import com.yunbao.main.activity.TestActivity; /** * Created by cxf on 2018/9/22. @@ -38,6 +40,10 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder { super.init(); img_trophy = (ImageView) findViewById(R.id.img_trophy); + img_trophy.setOnLongClickListener(v -> { + mContext.startActivity(new Intent(mContext, TestActivity.class)); + return true; + }); ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy);