Android开发之视频播放器

  • 一、效果图
  • 二、build.gradle中导入依赖
  • 三、主布局文件(activity_video)
  • 四、布局文件(video_item)
  • 五、布局文件(activity_play)
  • 六、布局文件(main_title_bar)
  • 七、java文件(VideoActivity)
  • 八、VideoAdapter
  • 九、PlayActivity
  • 十、Video
  • 十二、res文件夹下新建raw文件夹,将准备好的视频导入进去。注意:视频名称统一为sp+数字(从0开始一次增加),扩展名为.mp4。
  • 十三、在AndroidManifest.xml中申请权限
  • 十四、资源下载地址:[Android开发之视频播放器](https://download.csdn.net/download/qq_61963074/86501044)

今天教大家做一个简单的视频播放器hh

一、效果图

二、build.gradle中导入依赖

  implementation'com.android.support:recyclerview-v7:28.0.0'

三、主布局文件(activity_video)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"><TextViewandroid:text="中医药视频"android:textColor="#00007f"android:textSize="40sp"android:textStyle="bold"android:layout_gravity="center"android:layout_width="wrap_content"android:layout_height="wrap_content"/><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerview"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

四、布局文件(video_item)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:orientation="horizontal"android:layout_height="wrap_content"><ImageViewandroid:src="@drawable/sp2"android:layout_width="40dp"android:layout_height="40dp"android:layout_marginLeft="5dp"android:layout_marginTop="5dp"/><TextViewandroid:id="@+id/video_name"android:text="视频的名字"android:textColor="#000000"android:textSize="25sp"android:textStyle="bold"android:layout_gravity="center"android:layout_marginLeft="5dp"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

五、布局文件(activity_play)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"><include layout="@layout/main_title_bar"/><TextViewandroid:id="@+id/my_videoname"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="视频名称"android:textStyle="bold"android:textSize="30sp"android:textColor="#00008F"android:layout_gravity="center"android:layout_marginTop="30dp"/><VideoViewandroid:layout_width="match_parent"android:layout_height="400dp"android:id="@+id/my_videoview"/>
</LinearLayout>

六、布局文件(main_title_bar)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/title_bar"android:layout_width="match_parent"android:layout_height="45dp"android:background="@android:color/transparent"><TextViewandroid:id="@+id/tv_back"android:layout_width="45dp"android:layout_height="45dp"android:layout_alignParentLeft="true"android:background="@drawable/go_back_selector" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv_main_title"android:textColor="@android:color/white"android:textSize="20sp"android:text="@string/tingyilundao"android:textStyle="bold"android:layout_centerInParent="true"/><TextViewandroid:id="@+id/tv_save"android:layout_width="wrap_content"android:layout_height="35dp"android:layout_alignParentRight="true"android:layout_marginTop="10dp"android:layout_marginRight="20dp"android:layout_centerVertical="true"android:gravity="center"android:textSize="20sp"android:textColor="@android:color/white"android:text="@string/btn_save"android:visibility="gone" /><!--通过android:visibility="gone”属性,将TextView控件设置为隐藏状态--></RelativeLayout>

七、java文件(VideoActivity)

package com.example.activity;import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;import com.example.R;
import com.example.adapter.VideoAdapter;
import com.example.bean.Video;import java.util.ArrayList;
import java.util.List;
public class VideoActivity extends AppCompatActivity {//定义对象RecyclerView recyclerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_video);initView();//控件初始化initData();//数据初始化}private void initView() {recyclerView=findViewById(R.id.recyclerview);}private void initData() {//准备视频数据List<Video> videolist=new ArrayList<>();Video firstvideo=new Video("科学","http://vfx.mtime.cn/Video/2019/03/19/mp4/190319222227698228.mp4");videolist.add(firstvideo);Video secondvideo=new Video("护佑生命的脊梁","android.resource://"+getPackageName()+"/"+R.raw.sp1);videolist.add(secondvideo);//2、本工程中的视频Video thirdvideo=new Video("故事","android.resource://"+getPackageName()+"/"+R.raw.sp2);videolist.add(thirdvideo);Video fourthvideo=new Video("宣传片","android.resource://"+getPackageName()+"/"+R.raw.sp3);videolist.add(fourthvideo);Video fifthvideo=new Video("如何治疗高血压","android.resource://"+getPackageName()+"/"+R.raw.sp4);videolist.add(fifthvideo);Video sixthvideo=new Video("寻春","android.resource://"+getPackageName()+"/"+R.raw.sp5);videolist.add(sixthvideo);Video seventhvideo=new Video("宣传片","android.resource://"+getPackageName()+"/"+R.raw.sp6);videolist.add(seventhvideo);Video eighthvideo=new Video("宣传片","android.resource://"+getPackageName()+"/"+R.raw.sp7);videolist.add(eighthvideo);Video ninthvideo=new Video("中华抗击疫情","android.resource://"+getPackageName()+"/"+R.raw.sp8);videolist.add(ninthvideo);Video eleventhvideo=new Video("宣传片","android.resource://"+getPackageName()+"/"+R.raw.sp9);videolist.add(eleventhvideo);Video twelfthvideo=new Video("我们","android.resource://"+getPackageName()+"/"+R.raw.sp11);videolist.add(twelfthvideo);Video thirteenthvideo=new Video("宣传","android.resource://"+getPackageName()+"/"+R.raw.sp12);videolist.add(thirteenthvideo);Video fourteenthvideo=new Video("宣传","android.resource://"+getPackageName()+"/"+R.raw.sp13);videolist.add(fourteenthvideo);Video fifteenthvideo=new Video("药方","android.resource://"+getPackageName()+"/"+R.raw.sp14);videolist.add(fifteenthvideo);Video sixteenthvideo=new Video("国际化","android.resource://"+getPackageName()+"/"+R.raw.sp15);videolist.add(sixteenthvideo);//适配器VideoAdapter adapter=new VideoAdapter(videolist);//让数据显示到 recyclerview 控件上StaggeredGridLayoutManager layoutManager=new StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.VERTICAL);recyclerView.setLayoutManager(layoutManager);recyclerView.setAdapter(adapter);}}

八、VideoAdapter

package com.example.adapter;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;import com.example.R;
import com.example.activity.PlayActivity;
import com.example.bean.Video;import java.util.List;
public class VideoAdapter extendsRecyclerView.Adapter<VideoAdapter.ViewHolder> {private List<Video> videolist;public VideoAdapter(List<Video> videolist) {this.videolist = videolist;}//方法 1:用于创建 ViewHolder 实例@NonNull@Overridepublic VideoAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.video_item,parent,false);final ViewHolder holder=new ViewHolder(view);holder.videoview.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//单击任意视频跳转到播放界面int position=holder.getAdapterPosition();Video video =videolist.get(position);String myvideoname=video.getVideoName();String myvideoUrl=video.getVideoUrl();Intent intent=new Intent(view.getContext(),PlayActivity.class);intent.putExtra("videoname",myvideoname);intent.putExtra("videourl",myvideoUrl);view.getContext().startActivity(intent);}});return holder;}//方法 2:用于对 Recyclerview 中子项的数据进行赋值的@Overridepublic void onBindViewHolder(@NonNull VideoAdapter.ViewHolder holder, int position) {Video video=videolist.get(position);holder.video_name.setText(video.getVideoName());}//方法 3:返回 Recyclerview 中数据源长度@Overridepublic int getItemCount() {return videolist.size();}public class ViewHolder extends RecyclerView.ViewHolder {TextView video_name;View videoview;public ViewHolder(@NonNull View view) {super(view);video_name=view.findViewById(R.id.video_name);videoview=view;}}
}

九、PlayActivity

package com.example.activity;import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.MediaController;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.VideoView;import androidx.appcompat.app.AppCompatActivity;import com.example.R;
public class PlayActivity extends AppCompatActivity {//定义对象private TextView my_videoname;private VideoView my_videoview; //视频播放器private MediaController mediaController;//定义媒体控制柄private TextView tv_main_title;//标题private TextView tv_back;      //返回按钮private RelativeLayout rl_title_bar;//标题布局@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_play);initView();//控件初始化initData();//数据初始化}private void initView() {my_videoname=findViewById(R.id.my_videoname);my_videoview=findViewById(R.id.my_videoview);mediaController=new MediaController(this);tv_main_title=(TextView)findViewById(R.id.tv_main_title);tv_main_title.setText("视频");rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);tv_back = ((TextView) findViewById(R.id.tv_back));rl_title_bar.setBackgroundColor(Color.parseColor("#30b4ff"));//返回按钮的点击事件tv_back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubPlayActivity.this.finish();}});}private void initData() {//1、获取从音乐列表传过来的视频名称和视频地址String myvideoname=getIntent().getStringExtra("videoname");String myvideourl=getIntent().getStringExtra("videourl");//2、将视频名称显示在文本框中,将视频地址关联到播放器中my_videoname.setText(myvideoname);my_videoview.setVideoPath(myvideourl);//视频播放器和媒体控制柄关联起来my_videoview.setMediaController(mediaController);//媒体控制柄和视频播放器关联起来mediaController.setMediaPlayer(my_videoview);//3、启动视频播放器播放视频my_videoview.start();}
}

十、Video

package com.example.bean;
public class Video {private String videoName;private String videoUrl;public String getVideoName() {return videoName;}public String getVideoUrl() {return videoUrl;}public Video(String videoName, String videoUrl) {this.videoName = videoName;this.videoUrl = videoUrl;}
}

十二、res文件夹下新建raw文件夹,将准备好的视频导入进去。注意:视频名称统一为sp+数字(从0开始一次增加),扩展名为.mp4。

十三、在AndroidManifest.xml中申请权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.INTERNET"/>

十四、资源下载地址:Android开发之视频播放器

至此,结束!

Android开发之视频播放器相关推荐

  1. 开源安卓Android流媒体音视频播放器实现声音自动停止、恢复、一键静音功能源码

    本文转自EasyDarwin团队John的博客:http://blog.csdn.net/jyt0551/article/details/60802145 我们在开发安卓Android流媒体音视频播放 ...

  2. Android学习6——视频播放器

    一.学习目标 1.综合应用课程知识. 2.掌握 App 开发流程及相关工具. 3.设计一个基于 Android 平台的简单视频播放器. 二.环境 1.JDK-15.0.2 以上 2.Android S ...

  3. android系统更新视频播放器,基于的Android系统地视频播放器.doc

    本科毕业设计(论文) 基于Android系统的视频播放器Through the implementation of video player based on Android platform 致 谢 ...

  4. android 实现视频播放功能,Android项目实现视频播放器

    本文实例为大家分享了Android项目实现视频播放器的具体代码,供大家参考,具体内容如下 VideoView控件是播放视频用的,借助它可以完成一个简易的视频播放器. ①在activity_main.x ...

  5. 基于QtAv及ffmpeg开发的视频播放器

    基于QtAv及ffmpeg开发的视频播放器 主要功能: 本地媒体文件播放,支持切换上一个下一个文件,暂停/恢复,快放/慢放,音量控制 全屏/取消全屏 播放列表,列表缩略图 播放进度,进度条展示缩略图 ...

  6. 基于MATLAB开发的视频播放器

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 基于MATLAB开发的视频播放器 2.仿真效果 matlab2022a仿真结果如下:

  7. 嵌入式Qt 开发一个视频播放器

    上篇文章:嵌入式 Qt开发一个音乐播放器,使用Qt制作了一个音乐播放器,并在OK3568开发板上进行了运行测试,实际测试效果还不错. 本篇继续来实现一个Qt视频播放器软件,可以实现视频列表的显示与选择 ...

  8. 手机上的android版本下载视频播放器,ZZPlayer手机版下载

    软件标签: 视频播放器 ZZPlayer是一款视频播放器,支持多种播放格式,也是猪猪影院专用播放器基于准视频点播内核的多功能.个性化的播放器软件.且所有的操作都可以直接在屏幕上完成,兼容性做得非常不错 ...

  9. Android开发 VideoView视频播放详解

    前言 VideoView是Android主要的视频播放View,它其实是对MediaPlayer的再次封装.如果你已经了解过MediaPlayer在使用VideoView是十分简单的.如果你想先了解M ...

最新文章

  1. java培训机构如何选择适合自己的
  2. 带边框有点击事件的表格
  3. 如何用一句话证明你学过 NLP ?
  4. 怎么样尽可能多的学习
  5. SpringBoot+AOP实现多数据源动态切换
  6. SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志(转)...
  7. HDU 2064:汉诺塔III
  8. 《看聊天记录都学不会C#?太菜了吧》(2)C#那么简单我为何之前还学C语言?
  9. Java生鲜电商平台-团购模块设计与架构
  10. 02、Windows Phone 套接字(Socket)实战之服务器端设计
  11. python函数的使用方法_Python函数使用
  12. Ext入门学习系列(二)弹出窗体
  13. 有关8086必须记住的几个数(持续更新)
  14. 使用后缀自动机求后缀数组
  15. 怎么计算算法复杂度 big O
  16. 剑指offer-数值的整数次方
  17. JmeterTCP返回响应码500
  18. js设置cookie,包含多个name
  19. ROS中gazebo工具学习(使用gazebo加载机器人模型)
  20. 微信小程序:map组件所在页面加载慢,长时间白屏的问题

热门文章

  1. 【无标题】Ds1302驱动代码编写并在Lcd1602液晶显示
  2. linux 多线程 semaphore ,Linux下多线程编程-Pthread和Semaphore使用.doc
  3. 起码我们曾经爱过,不是吗
  4. 物理服务器与云服务器的区别
  5. 两个妙招教你怎么拍照识别植物,增长见识
  6. 如何将WORD转换成EXCEL
  7. android模拟器如何输入中文,不能输入中文
  8. 微信小程序---倒计时
  9. 古龙108将,喜欢古龙的来看啦
  10. 笑对过往、活在当下、期盼未来