123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- package com.edufound.reader.adapter;
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Color;
- import android.graphics.Rect;
- import android.graphics.drawable.GradientDrawable;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.CompoundButton;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.Switch;
- import android.widget.TextView;
- import com.edufound.reader.R;
- import com.edufound.reader.activity.WebActivity;
- import com.edufound.reader.bean.ChannelCodeEnum;
- import com.edufound.reader.bean.CommentListBean;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.HttpResultDataListBean;
- import com.edufound.reader.bean.UserRecordBean;
- import com.edufound.reader.cusview.AutoPollRecyclerView;
- import com.edufound.reader.cusview.RvListJzvdStd;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.EfunboxUtil;
- import com.edufound.reader.util.GlideUtils;
- import com.edufound.reader.util.OkHttpClient;
- import com.edufound.reader.util.ShapeCreator;
- import com.edufound.reader.util.SizeUtils;
- import com.edufound.reader.videoutil.JZMediaIjk;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import java.io.IOException;
- import java.util.List;
- import androidx.annotation.NonNull;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import cn.jzvd.JZDataSource;
- import cn.jzvd.Jzvd;
- import cn.jzvd.JzvdStd;
- public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {
- private LayoutInflater mLayoutInflater;
- private Activity mContext;
- private List<UserRecordBean> mListData;
- public SlideVideoAdapter(Activity context, @NonNull List<UserRecordBean> data) {
- mContext = context;
- mLayoutInflater = LayoutInflater.from(context);
- this.mListData = data;
- }
- public void addMored(List<UserRecordBean> listData) {
- mListData.addAll(listData);
- }
- public String getItemType(int position) {
- return mListData.get(position).getUserRead().getType();
- }
- @NonNull
- @Override
- public VideoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- return new VideoHolder(mContext, mLayoutInflater.inflate(R.layout.adapter_item_slidevideo, parent, false));
- }
- @Override
- public void onBindViewHolder(@NonNull VideoHolder holder, int position) {
- // holder.mVideo.setUp(new JZDataSource(mListData.get(position).getUserRead().getVideoPath()), JzvdStd.SCREEN_FULLSCREEN);
- holder.mVideo.setUp(new JZDataSource(mListData.get(position).getUserRead().getVideoPath()), JzvdStd.SCREEN_FULLSCREEN, JZMediaIjk.class, mListData.get(position).getUserRead().getId());
- if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
- GlideUtils.loadImageSizeKipMemoryCache(mContext, mListData.get(position).getUserRead().getCoverImg(), holder.mVideo.posterImageView);
- }
- holder.mVideo.startPreloading();
- /**
- * type=READ(用户朗读的)
- * type=EXAMPLE(官方的)
- * */
- holder.mItemView.setTag(mListData.get(position).getUserRead().getType());
- holder.itemView.setTag(mListData.get(position).getUserRead().getType());
- if (mListData.get(position).getUserRead().getType().equals("READ") || mListData.get(position).getUserRead().getType().equals("EXAMPLE")) {
- // AAA代替EXAMPLE
- holder.initDanMu(mListData.get(position).getUserRead().getId());
- holder.mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
- if (b) {
- holder.mMarqueen.setVisibility(View.VISIBLE);
- holder.mMarqueen.start();
- } else {
- holder.mMarqueen.setVisibility(View.INVISIBLE);
- holder.mMarqueen.stop();
- }
- }
- });
- } else if (mListData.get(position).getUserRead().getType().equals("AA")) {
- //这里修改成新的type。就可以使用了
- holder.mSwitch.setVisibility(View.INVISIBLE);
- holder.mEventBtn.setVisibility(View.VISIBLE);
- holder.mEventBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- EfunboxUtil.toWebFlowerActivity(mContext);
- }
- });
- TextView textView = new TextView(mContext);
- textView.setLayoutParams(new LinearLayout.LayoutParams(SizeUtils.dp2px(mContext, 200), LinearLayout.LayoutParams.MATCH_PARENT));
- //左上圆角
- holder.mTagLayout.removeAllViews();
- ShapeCreator.create()
- .setCornerRadiusLT(50)
- .setCornerRadiusRB(50)
- .setSolidColor(mContext.getResources().getColor(R.color.grassgreen))
- .into(textView);
- holder.mTagLayout.addView(textView);
- holder.mTagLayout.setVisibility(View.VISIBLE);
- } else {
- }
- // holder.mVideo.posterImageView.setImageURI(Uri.parse(mListData.get(position).videoUrl));
- }
- @Override
- public void onViewDetachedFromWindow(@NonNull VideoHolder holder) {
- super.onViewDetachedFromWindow(holder);
- // holder.mSwitch.setChecked(false);
- }
- @Override
- public int getItemCount() {
- return mListData.size();
- }
- @Override
- public int getItemViewType(int position) {
- return position;
- }
- }
- class VideoHolder extends RecyclerView.ViewHolder {
- public View mItemView;
- public RvListJzvdStd mVideo;
- public AutoPollRecyclerView mMarqueen;
- public Switch mSwitch;
- public ImageView mEventBtn;
- public LinearLayout mTagLayout;
- public Activity mContext;
- public VideoHolder(Activity context, @NonNull View itemView) {
- super(itemView);
- mContext = context;
- mItemView = itemView;
- mVideo = itemView.findViewById((R.id.slidevideo_video));
- mSwitch = itemView.findViewById(R.id.slidevideo_video_switch);
- mEventBtn = itemView.findViewById(R.id.adapter_item_slidevideo_event_btn);
- mTagLayout = itemView.findViewById(R.id.adapter_item_slidevideo_tagLayout);
- mTagLayout.setVisibility(View.GONE);
- mEventBtn.setVisibility(View.GONE);
- mSwitch.setVisibility(View.INVISIBLE);
- // if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
- mMarqueen = itemView.findViewById(R.id.slidevideo_video_marqueen);
- mSwitch.setChecked(false);
- if (mSwitch.isChecked()) {
- mMarqueen.setVisibility(View.VISIBLE);
- mMarqueen.start();
- } else {
- mMarqueen.setVisibility(View.INVISIBLE);
- mMarqueen.stop();
- }
- // }
- }
- public void initDanMu(String exampleId) {
- OkHttpClient.doGetAsync(mContext, new HttpInfo.Builder().setUrl(Consts.getFinalApi() + "/posts/list").addParam("columnId", exampleId).addParam("pageNo", String.valueOf(1)).addParam("pageSize", "1000"), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<HttpResultDataListBean<CommentListBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<HttpResultDataListBean<CommentListBean>>>() {
- }.getType());
- if (bean.getData().getList() == null || bean.getData().getList().size() == 0) {
- Logger.e("没有弹幕");
- mSwitch.setVisibility(View.INVISIBLE);
- return;
- }
- mSwitch.setVisibility(View.VISIBLE);
- SlideVideoDanMarqueenAdapter adapter = new SlideVideoDanMarqueenAdapter(mContext, bean.getData().getList());
- mMarqueen.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
- mMarqueen.addItemDecoration(new SpacesItemDecoration(SizeUtils.dp2px(mContext, 23)));
- mMarqueen.setAdapter(adapter);
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取弹幕失败:" + info.getRetDetail());
- }
- });
- }
- }
- class SpacesItemDecoration extends RecyclerView.ItemDecoration {
- private int space;
- public SpacesItemDecoration(int space) {
- this.space = space;
- }
- @Override
- public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
- outRect.left = space;
- outRect.right = space;
- // outRect.bottom = space;
- // Add top margin only for the first item to avoid double space between items
- }
- }
|