JZVD播放器的使用

节操播放器在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,这个之后整理好了再上传,今天把学习的节操(又叫饺子)播放器的学习分享下,希望对需要的朋友们有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值