package com.lcjian.library.video;
|
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.graphics.Color;
|
import android.support.annotation.NonNull;
|
import android.text.TextUtils;
|
import android.view.Gravity;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.WindowManager;
|
import android.widget.BaseAdapter;
|
import android.widget.GridView;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
|
import com.lcjian.lcjianlibrary.R;
|
import com.lcjian.library.util.common.DimenUtils;
|
|
import java.util.List;
|
|
public class VideoEpisodeDialog extends Dialog {
|
|
private IDialogClick dialogClick;
|
|
|
public VideoEpisodeDialog(@NonNull Context context) {
|
super(context);
|
}
|
|
public VideoEpisodeDialog(@NonNull Context context, int themeResId) {
|
super(context, themeResId);
|
}
|
|
public static class Builder {
|
|
private IDialogClick dialogClick;
|
|
private List<VideoEpisode> episodeList;
|
|
private int position;
|
|
private Activity activity;
|
|
private int showType;// 1-小方格 2-长条
|
|
private MyAdapter adapter;
|
|
public Builder setDialogClick(IDialogClick dialogClick) {
|
this.dialogClick = dialogClick;
|
return this;
|
}
|
|
/**
|
* @param videoEpisodes
|
* @param position
|
* @param showType 1-长条 2-小方格
|
* @return
|
*/
|
public Builder setEpisodes(List<VideoEpisode> videoEpisodes, int position, int showType) {
|
this.episodeList = videoEpisodes;
|
this.position = position;
|
this.showType = showType;
|
return this;
|
}
|
|
public VideoEpisodeDialog build(Activity context) {
|
this.activity = context;
|
final VideoEpisodeDialog videoLoadingDialog = new VideoEpisodeDialog(context, R.style.Dialog);
|
View view = LayoutInflater.from(context).inflate(R.layout.item_player_episode, null);
|
|
ImageView iv_close = view.findViewById(R.id.iv_close);
|
GridView gv_episode = view.findViewById(R.id.gv_episode);
|
iv_close.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (dialogClick != null)
|
dialogClick.close();
|
}
|
});
|
|
if (showType == 2) {
|
gv_episode.setNumColumns(4);
|
} else {
|
gv_episode.setNumColumns(1);
|
}
|
|
adapter = new MyAdapter();
|
gv_episode.setAdapter(adapter);
|
gv_episode.setSelection(position);
|
|
videoLoadingDialog.setContentView(view);
|
WindowManager.LayoutParams params = videoLoadingDialog.getWindow()
|
.getAttributes();
|
params.width = DimenUtils.dip2px(activity, 220);
|
params.height = WindowManager.LayoutParams.MATCH_PARENT; //WindowManager.LayoutParams.MATCH_PARENT; //DimenUtils.getScreenWidth(activity);
|
videoLoadingDialog.getWindow().setAttributes(params);
|
|
//防止被状态栏占用高度
|
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
| View.SYSTEM_UI_FLAG_IMMERSIVE
|
| View.SYSTEM_UI_FLAG_FULLSCREEN;
|
videoLoadingDialog.getWindow().getDecorView().setSystemUiVisibility(uiOptions);
|
|
videoLoadingDialog.getWindow().setGravity(Gravity.RIGHT);//设置显示在右侧
|
videoLoadingDialog.setCanceledOnTouchOutside(true);
|
return videoLoadingDialog;
|
}
|
|
class MyAdapter extends BaseAdapter {
|
|
@Override
|
public int getCount() {
|
return episodeList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return episodeList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
final VideoEpisode videoEpisode = episodeList.get(position);
|
TextView textView = new TextView(activity);
|
textView.setGravity(Gravity.CENTER);
|
textView.setMaxLines(1);
|
textView.setTextColor(Color.WHITE);
|
textView.setEllipsize(TextUtils.TruncateAt.END);
|
if (showType == 2) {
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(DimenUtils.dip2px(activity, 35), DimenUtils.dip2px(activity, 35));
|
textView.setLayoutParams(params);
|
} else {
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DimenUtils.dip2px(activity, 35));
|
textView.setLayoutParams(params);
|
}
|
if (position == Builder.this.position) {
|
textView.setBackgroundResource(R.drawable.shape_player_episode_highlight);
|
} else {
|
textView.setBackgroundResource(R.drawable.shape_player_episode);
|
}
|
|
textView.setText(videoEpisode.getTag());
|
|
final boolean canClick = position != Builder.this.position;
|
|
textView.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (canClick) {
|
Builder.this.position = position;
|
notifyDataSetChanged();
|
if (dialogClick != null)
|
dialogClick.selectEpisode(position, videoEpisode);
|
}
|
}
|
});
|
|
return textView;
|
}
|
}
|
|
}
|
|
|
interface IDialogClick {
|
//选集
|
public void selectEpisode(int p, VideoEpisode ve);
|
|
//关闭弹框
|
public void close();
|
|
}
|
|
}
|