Tutorial de desarrollo de software de transmisión en vivo: establezca recompensas de tareas en el código fuente del sistema de transmisión en vivo

El desarrollo de software de transmisión en vivo es uno de los tipos más populares de desarrollo de software social de video. Las plataformas de transmisión en vivo también son una de las plataformas en línea más populares para los jóvenes. Para aumentar la adherencia del usuario, muchas plataformas de transmisión en vivo han introducido funciones de recompensa de tareas. ¿Cómo se logra esto? ?
A continuación, tome el código fuente del sistema de transmisión en vivo de leopardo nublado como ejemplo para mostrarle cómo desarrollar un mecanismo completo de recompensa de tareas en el software de transmisión en vivo.

Recompensas de tareas en el código fuente del sistema de transmisión en vivo
Como se muestra en la figura anterior, el código fuente del sistema de transmisión en vivo de leopardo nublado ha agregado dos entradas de "tareas diarias" en la sala en vivo y la página de inicio personal, respectivamente. Después de hacer clic para ingresar, puede ver el estado de finalización y las condiciones de finalización de las tareas diarias, y el usuario puede ser dirigido Realice las actividades correspondientes y reciba las recompensas correspondientes por las tareas completadas. Todas las tareas se actualizan cada 24 horas.

El código fuente del sistema de transmisión en vivo para realizar recompensas de tareas es el siguiente:

public class DailyTaskActivity extends AbsActivity {
    
    

    @Override
    protected int getLayoutId() {
    
    
        return R.layout.activity_daily_task;
    }

    @Override
    protected void main() {
    
    
        setTitle(WordUtil.getString(R.string.daily_task));
        LiveHttpUtil.getDailyTask("", 0, new HttpCallback() {
    
    
            @Override
            public void onSuccess(int code, String msg, String[] info) {
    
    
                if (code == 0 && info.length > 0) {
    
    
                    JSONObject obj = JSON.parseObject(info[0]);
                    TextView tip = findViewById(R.id.tip);
                    tip.setText(obj.getString("tip_m"));
                    RecyclerView recyclerView = findViewById(R.id.recyclerView);
                    recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
                    List<DailyTaskBean> list = JSON.parseArray(obj.getString("list"), DailyTaskBean.class);
                    recyclerView.setAdapter(new DailyTaskAdapter(mContext, list));
                }
            }
        });
    }


    @Override
    protected void onDestroy() {
    
    
        LiveHttpUtil.cancel(LiveHttpConsts.GET_DAILY_TASK);
        LiveHttpUtil.cancel(LiveHttpConsts.DAILY_TASK_REWARD);
        super.onDestroy();
    }
}
public class DailyTaskDialogFragment extends AbsDialogFragment {
    
    

    private String mLiveUid;

    @Override
    protected int getLayoutId() {
    
    
        return R.layout.dialog_daily_task;
    }

    @Override
    protected int getDialogStyle() {
    
    
        return R.style.dialog;
    }

    @Override
    protected boolean canCancel() {
    
    
        return true;
    }

    @Override
    protected void setWindowAttributes(Window window) {
    
    
        WindowManager.LayoutParams params = window.getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        params.horizontalMargin = 0.1f;
        params.verticalMargin = 0.1f;
        window.setAttributes(params);
    }



    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    
    
        super.onActivityCreated(savedInstanceState);
        findViewById(R.id.btn_close).setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                dismiss();
            }
        });
        LiveHttpUtil.getDailyTask(mLiveUid, 1, new HttpCallback() {
    
    
            @Override
            public void onSuccess(int code, String msg, String[] info) {
    
    
                if (code == 0 && info.length > 0) {
    
    
                    JSONObject obj = JSON.parseObject(info[0]);
                    TextView tip = findViewById(R.id.tip);
                    tip.setText(obj.getString("tip_m"));
                    RecyclerView recyclerView = findViewById(R.id.recyclerView);
                    recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
                    List<DailyTaskBean> list = JSON.parseArray(obj.getString("list"), DailyTaskBean.class);
                    recyclerView.setAdapter(new DailyTaskAdapter(mContext, list));
                }
            }
        });
    }
```c

```c

Inserte la descripción de la imagen aquí


    public void setLiveUid(String liveUid) {
        mLiveUid = liveUid;
    }

    @Override
    public void onDestroy() {
        LiveHttpUtil.cancel(LiveHttpConsts.GET_DAILY_TASK);
        LiveHttpUtil.cancel(LiveHttpConsts.DAILY_TASK_REWARD);
        super.onDestroy();
    }
}

public class DailyTaskAdapter extends RefreshAdapter<DailyTaskBean> {

    private View.OnClickListener mOnClickListener;
    private String mStatus0;
    private String mStatus1;
    private String mStatus2;
    private int mColor0;
    private int mColor1;
    private Drawable mDrawable0;
    private Drawable mDrawable1;

    public DailyTaskAdapter(Context context, List<DailyTaskBean> list) {
        super(context, list);
        mOnClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = (int) v.getTag();
                DailyTaskBean bean = mList.get(position);
                if (bean.getStatus() == 1) {//可领取
                    final int finalPosition = position;
                    final DailyTaskBean finalBean = bean;
                    LiveHttpUtil.dailyTaskReward(bean.getId(), new HttpCallback() {
                        @Override
                        public void onSuccess(int code, String msg, String[] info) {
                            if (code == 0) {
                                finalBean.setStatus(2);
                                notifyItemChanged(finalPosition, Constants.PAYLOAD);
                            }
                            ToastUtil.show(msg);
                        }
                    });
                }
            }
        };
        mStatus0 = WordUtil.getString(R.string.daily_task_0);
        mStatus1 = WordUtil.getString(R.string.daily_task_1);
        mStatus2 = WordUtil.getString(R.string.daily_task_2);
        mColor0 = ContextCompat.getColor(mContext, R.color.gray3);
        mColor1 = ContextCompat.getColor(mContext, R.color.white);
        mDrawable0 = ContextCompat.getDrawable(mContext, R.drawable.bg_daily_task_03);
        mDrawable1 = ContextCompat.getDrawable(mContext, R.drawable.bg_daily_task_04);
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return new Vh(mInflater.inflate(R.layout.item_daily_task, viewGroup, false));
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder vh, int i) {

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder vh, int i, @NonNull List payloads) {
        Object payload = payloads.size() > 0 ? payloads.get(0) : null;
        ((Vh) vh).setData(mList.get(i), i, payload);
    }

    class Vh extends RecyclerView.ViewHolder {

        TextView mTitle;
        TextView mTip;
        TextView mStatus;
        View mLine;

        public Vh(@NonNull View itemView) {
            super(itemView);
            mTitle = itemView.findViewById(R.id.title);
            mTip = itemView.findViewById(R.id.tip);
            mStatus = itemView.findViewById(R.id.btn_status);
            mLine = itemView.findViewById(R.id.line);
            mStatus.setOnClickListener(mOnClickListener);
        }

        void setData(DailyTaskBean bean, int position, Object payload) {
            if (payload == null) {
                mTitle.setText(bean.getTitle());
                mTip.setText(bean.getTip());
                mStatus.setTag(position);
                if (position == mList.size() - 1) {
                    if (mLine.getVisibility() == View.VISIBLE) {
                        mLine.setVisibility(View.INVISIBLE);
                    }
                } else {
                    if (mLine.getVisibility() != View.VISIBLE) {
                        mLine.setVisibility(View.VISIBLE);
                    }
                }
            }
            int status = bean.getStatus();
            if (status == 0) {
                mStatus.setText(mStatus0);
                mStatus.setBackground(null);
                mStatus.setTextColor(mColor0);
            } else {
                if (status == 1) {
                    mStatus.setText(mStatus1);
                    mStatus.setBackground(mDrawable1);
                } else {
                    mStatus.setText(mStatus2);
                    mStatus.setBackground(mDrawable0);
                }
                mStatus.setTextColor(mColor1);
            }
        }
    }
}

De esta manera, la función de tarea diaria se realiza en el código fuente del sistema de transmisión en vivo. Ahora la industria de desarrollo de software de transmisión en vivo nacional tiene una gran cantidad de talentos, y siempre hay muchas funciones interesantes lanzadas. Little Cloud Leopard liberará gradualmente un código fuente de transmisión en vivo para compartir con usted en el futuro, por favor esperar.

Descargo de responsabilidad: Este artículo del autor: original oficial de Clouded Leopard Technology, reproducido, indique la fuente y el autor.

Supongo que te gusta

Origin blog.csdn.net/yun_bao_2144899870/article/details/109290508
Recomendado
Clasificación