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,这个之后整理好了再上传,今天把学习的节操(又叫饺子)播放器的学习分享下,希望对需要的朋友们有所帮助。
阅读全文
0 0
- JZVD播放器的使用
- 播放器的。。。使用
- android播放器的使用
- 音乐播放器和视频播放器的使用
- TQ2440下面的madplay播放器使用,能播放MP3
- 【视频播放】Jplayer视频播放器的使用
- 使用vitaimo搭建可以播放组播流的播放器
- 16、使用jQuery的html5player播放器,进行播放
- 使用免费的flash播放器哈哈
- JavaME 声音播放器的使用
- 使用ffmpeg+SDL的简单播放器
- Raspbian中的OMXPlayer播放器的使用
- jwpalyer网页播放器的使用
- 音乐播放器中Service的使用:
- CYC-AVPlayer播放器的简单使用
- 音乐播放器的简单入门使用
- 音乐播放器中Service的使用
- Android的音乐播放器使用service
- JMS------zookeeper的简单安装
- ORACLE快速插入一千万初始数据和删除重复数据
- C/C++中的字节对齐
- mui初级入门教程(四)— 再谈webview,从小白变“大神”!
- eclipse 中的System.out.println("-----------")快捷键设置问题
- JZVD播放器的使用
- 接口测试标准化模板
- 什么是webhook
- typeof和instanceof的作用和区别
- 本地通知的使用
- Oracle-intersect-minus等日常函数
- Jmeter微型压力测试
- ArrayList源码阅读笔记
- RTTI