package com.ysvideo.zhibo.app.ui.video.adapter;
|
|
import android.app.Activity;
|
import android.content.Intent;
|
import android.graphics.Canvas;
|
import android.graphics.Rect;
|
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 com.bumptech.glide.Glide;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.request.RequestOptions;
|
import com.ysvideo.zhibo.app.R;
|
import com.ysvideo.zhibo.app.entity.video.VideoInfo;
|
import com.ysvideo.zhibo.app.ui.video.VideoDetailActivity;
|
import com.ysvideo.zhibo.lib.common.util.common.DimenUtils;
|
import com.ysvideo.zhibo.lib.common.util.common.StringUtils;
|
import com.ysvideo.zhibo.lib.common.widget.RatioLayout;
|
|
import java.util.List;
|
|
import androidx.annotation.NonNull;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
|
|
/**
|
* 一列视频样式
|
*/
|
public class VideoAlbumAdapter extends RecyclerView.Adapter {
|
|
private List<VideoInfo> contentList;
|
|
private Activity mContext;
|
|
private LayoutInflater inflater;
|
|
private final static int TYPE_ALBUM = 1;
|
private final static int TYPE_SHORT_VIDEO = 2;
|
|
|
RecyclerView.ItemDecoration itemDecorationRow = new RecyclerView.ItemDecoration() {
|
@Override
|
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
|
super.onDraw(c, parent, state);
|
}
|
|
@Override
|
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
|
super.onDrawOver(c, parent, state);
|
}
|
|
@Override
|
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
|
super.getItemOffsets(outRect, view, parent, state);
|
int index = parent.getChildAdapterPosition(view);
|
int total = parent.getAdapter().getItemCount();
|
int minWidth = DimenUtils.dipToPixels(15, view.getContext());
|
if (index == total - 1) {
|
outRect.right = minWidth;
|
}
|
outRect.left = minWidth;
|
}
|
};
|
|
|
public void initRecyclerViewDisplayWidthRow1(RecyclerView rv) {
|
LinearLayoutManager layoutManager = new LinearLayoutManager(rv.getContext());
|
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
|
rv.setLayoutManager(layoutManager);
|
for (int i = 0; i < rv.getItemDecorationCount(); i++) {
|
rv.removeItemDecoration(rv.getItemDecorationAt(i));
|
i--;
|
}
|
int padding = 0;
|
padding += rv.getPaddingLeft();
|
padding += rv.getPaddingRight();
|
rv.addItemDecoration(itemDecorationRow);
|
}
|
|
|
public VideoAlbumAdapter(Activity context, List<VideoInfo> contentList) {
|
this.contentList = contentList;
|
mContext = context;
|
inflater = LayoutInflater.from(context);
|
}
|
|
@NonNull
|
@Override
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
if (viewType == TYPE_ALBUM) {
|
return new VideoAlbumHolder(inflater.inflate(R.layout.item_recommend_album, parent, false));
|
} else if (viewType == TYPE_SHORT_VIDEO) {
|
return new ShortVideoViewHolder(inflater.inflate(R.layout.item_mine_watch_history, parent, false));
|
}
|
return null;
|
}
|
|
@Override
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
final VideoInfo videoInfo = contentList.get(position);
|
if (holder instanceof VideoAlbumHolder) {
|
VideoAlbumHolder viewHolder = (VideoAlbumHolder) holder;
|
try {
|
Glide.with(mContext).load(videoInfo.getPicture()).transition(withCrossFade()).placeholder(R.drawable.ic_default_cover).into(viewHolder.iv_poster);
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
}
|
viewHolder.tv_name.setText(videoInfo.getName() + "");
|
viewHolder.tv_tag.setText(StringUtils.isEmpty(videoInfo.getTag()) ? "" : videoInfo.getTag());
|
viewHolder.view.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
myClick(videoInfo, v);
|
}
|
});
|
|
} else if (holder instanceof ShortVideoViewHolder) {
|
ShortVideoViewHolder shortVideoViewHolder = (ShortVideoViewHolder) holder;
|
shortVideoViewHolder.tv_name.setText(videoInfo.getName());
|
float ratio = 0.63f;
|
shortVideoViewHolder.rl_pic.setRatio(ratio);
|
ViewGroup.LayoutParams params1 = shortVideoViewHolder.view_bg.getLayoutParams();
|
params1.height = (int) (params1.width * ratio);
|
|
|
shortVideoViewHolder.iv_pic.post(new Runnable() {
|
@Override
|
public void run() {
|
String defaultPicture = videoInfo.getHpicture();
|
|
if (StringUtils.isEmpty(defaultPicture)) {
|
Glide.with(mContext).load(videoInfo.getPicture()).transition(withCrossFade())
|
.apply(new RequestOptions().centerCrop().placeholder(R.drawable.shape_default_cover).diskCacheStrategy(DiskCacheStrategy.ALL))
|
.into(shortVideoViewHolder.iv_pic);
|
} else {
|
Glide.with(mContext).load(defaultPicture).transition(withCrossFade())
|
.apply(new RequestOptions().centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL))
|
.into(shortVideoViewHolder.iv_pic);
|
}
|
}
|
});
|
|
shortVideoViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
myClick(videoInfo, v);
|
}
|
});
|
}
|
}
|
|
@Override
|
public int getItemCount() {
|
int count = contentList.size();
|
return count;
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
int contentType = contentList.get(position).getContentType();
|
if (contentType == 1) {
|
return TYPE_ALBUM;
|
} else {
|
return TYPE_SHORT_VIDEO;
|
}
|
|
}
|
|
|
private void myClick(VideoInfo info, final View v) {
|
Intent intent = new Intent(v.getContext(), VideoDetailActivity.class);
|
intent.putExtra("video_info", info);
|
v.getContext().startActivity(intent);
|
}
|
|
class VideoAlbumHolder extends RecyclerView.ViewHolder {
|
View view;
|
TextView tv_name;
|
LinearLayout ll_label;
|
TextView tv_tag;
|
LinearLayout ll_score;
|
ImageView iv_poster;
|
|
|
public VideoAlbumHolder(View view) {
|
super(view);
|
this.view = view;
|
tv_name = view.findViewById(R.id.tv_name);
|
ll_label = view.findViewById(R.id.ll_label);
|
tv_tag = view.findViewById(R.id.tv_tag);
|
ll_score = view.findViewById(R.id.ll_score);
|
iv_poster = view.findViewById(R.id.iv_poster);
|
}
|
}
|
|
class ShortVideoViewHolder extends RecyclerView.ViewHolder {
|
public RatioLayout rl_pic;
|
public ImageView iv_pic;
|
public TextView tv_name;
|
public View view_bg;
|
|
public ShortVideoViewHolder(@NonNull View itemView) {
|
super(itemView);
|
rl_pic = itemView.findViewById(R.id.rl_pic);
|
iv_pic = itemView.findViewById(R.id.iv_pic);
|
tv_name = itemView.findViewById(R.id.tv_name);
|
view_bg = itemView.findViewById(R.id.view_bg);
|
}
|
}
|
|
|
}
|