JZVD播放器的使用

来源:互联网 发布:淘宝网的盈利模式答案 编辑:程序博客网 时间:2024/06/10 07:40

节操播放器在github的地址:https://github.com/gitwangyang/JZVDDemo

上面的地址是供用户参考的,我借鉴其中内容抽出我需要的一部分做出类似今日头条上视频的功能,如下图:

这里写图片描述

1、布局:

1)主布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.dota.musicapp.activity.VideoActivity">    <include        layout="@layout/app_bar_title"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerview_video"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:scrollbars="none" /></LinearLayout>

2)RecyclerView的子项item布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="210dp"    android:orientation="vertical">    <cn.jzvd.JZVideoPlayerStandard        android:id="@+id/videoplayer"        android:layout_width="match_parent"        android:layout_height="160dp" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="50dp"        android:orientation="horizontal"        android:padding="4dp">        <TextView            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="3"            android:maxLines="2"            android:singleLine="true"            android:text="短片说明" />        <TextView            android:id="@+id/tv_good_point"            android:drawableTop="@drawable/good_point_false"            android:gravity="center"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="点赞数" />        <TextView            android:id="@+id/tv_comment"            android:drawableTop="@drawable/comment_number"            android:gravity="center"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="评论数" />        <ImageView            android:id="@+id/iv_three_point"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="0.5"            android:scaleType="centerInside"            android:src="@drawable/three_point" />    </LinearLayout></LinearLayout>

2、主线程代码:

/** * 视频播放短片 * 参考网址:http://blog.csdn.net/cjm2484836553/article/details/78420172 */public class VideoActivity extends AppCompatActivity implements View.OnClickListener {    private RecyclerView recyclerView;    private RecyclerViewVideoAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_video);        setHeaderName("视频短片", this, true);        initData();        initUI();    }    private void initData() {        recyclerView = (RecyclerView) findViewById(R.id.recyclerview_video);    }    private void initUI() {        recyclerView.setLayoutManager(new LinearLayoutManager(this));        adapter = new RecyclerViewVideoAdapter(this);        recyclerView.setAdapter(adapter);        recyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {            @Override            public void onChildViewAttachedToWindow(View view) {            }            @Override            public void onChildViewDetachedFromWindow(View view) {                JZVideoPlayer jzvd = (JZVideoPlayer) view.findViewById(R.id.videoplayer);                if (jzvd != null && jzvd.getCurrentUrl().equals(JZMediaManager.CURRENT_PLAYING_URL)) {                    JZVideoPlayer.releaseAllVideos();                }            }        });    }    @Override    public void onBackPressed() {        if (JZVideoPlayer.backPress()) {            return;        }        super.onBackPressed();    }    @Override    public void onPause() {        super.onPause();        JZVideoPlayer.releaseAllVideos();    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case android.R.id.home:                finish();                break;        }        return super.onOptionsItemSelected(item);    }    @Override    protected void onDestroy() {        super.onDestroy();        VideoActivity.this.finish();    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.header_back:                VideoActivity.this.finish();                break;        }    }}

3、适配器代码:

public class RecyclerViewVideoAdapter extends RecyclerView.Adapter<RecyclerViewVideoAdapter.MyViewHolder> implements View.OnClickListener {    public static final String TAG = "AdapterRecyclerViewVideo";    int[] videoIndexs = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};    private Context context;    public RecyclerViewVideoAdapter(Context context) {        this.context = context;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_videoview, parent, false));        return holder;    }    @SuppressLint("LongLogTag")    @Override    public void onBindViewHolder(final MyViewHolder holder, int position) {        Log.i(TAG, "onBindViewHolder [" + holder.jzVideoPlayer.hashCode() + "] position=" + position);        holder.jzVideoPlayer.setUp(                VideoConstant.videoUrls[0][position], JZVideoPlayer.SCREEN_WINDOW_LIST,                VideoConstant.videoTitles[0][position]);        Picasso.with(holder.jzVideoPlayer.getContext())                .load(VideoConstant.videoThumbs[0][position])                .into(holder.jzVideoPlayer.thumbImageView);        //点赞        holder.tv_good_point.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Drawable topDrawable_good_point = view.getResources().getDrawable(R.drawable.good_point_true);                if (topDrawable_good_point != null) {                    topDrawable_good_point.setBounds(0,0,topDrawable_good_point.getMinimumWidth(),topDrawable_good_point.getMinimumHeight());                }                holder.tv_good_point.setCompoundDrawables(null,topDrawable_good_point,null,null);            }        });        holder.tv_comment.setOnClickListener(this);        holder.iv_three_point.setOnClickListener(this);    }    @Override    public int getItemCount() {        return videoIndexs.length;    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.tv_comment://评论                break;            case R.id.iv_three_point://分享                break;        }    }    class MyViewHolder extends RecyclerView.ViewHolder {        private JZVideoPlayerStandard jzVideoPlayer;        private TextView tv_good_point,tv_comment;        private ImageView iv_three_point;        public MyViewHolder(View itemView) {            super(itemView);            jzVideoPlayer = (JZVideoPlayerStandard) itemView.findViewById(R.id.videoplayer);            tv_good_point = (TextView) itemView.findViewById(R.id.tv_good_point);            tv_comment = (TextView) itemView.findViewById(R.id.tv_comment);            iv_three_point = (ImageView) itemView.findViewById(R.id.iv_three_point);        }    }}

4、最后,别忘记在注册表中注册该Activity和添加相应的权限

之前学习播放器的时候用SurfaceView,这个之后整理好了再上传,今天把学习的节操(又叫饺子)播放器的学习分享下,希望对需要的朋友们有所帮助。

原创粉丝点击