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 } }