这两天公司要让做一个播放视频的小Demo,于是网上学习了下VideoView的使用方法。

先看布局文件,很简单 就是一个VideoView和两个ImageView

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context="${relativePackage}.${activityClass}" >
  6.  
  7. <VideoView
  8. android:id="@+id/videoView1"
  9. android:layout_width="match_parent"
  10. android:layout_height="500dp"
  11. android:layout_alignParentLeft="true"
  12. android:layout_alignParentTop="true" />
  13.  
  14. <ImageView
  15. android:id="@+id/image1"
  16. android:layout_width="160dp"
  17. android:layout_height="140dp"
  18. android:layout_below="@id/videoView1"
  19. android:src="@drawable/ic_launcher" />
  20.  
  21. <ImageView
  22. android:layout_width="160dp"
  23. android:layout_height="140dp"
  24. android:layout_below="@id/videoView1"
  25. android:layout_toRightOf="@id/image1"
  26. android:src="@drawable/ic_launcher" />
  27.  
  28. </RelativeLayout>

然后是MainActivity

这里面有一个搜索内存文件的方法

  1. package com.nick.videodemo;
  2.  
  3. import java.io.File;
  4.  
  5. import android.app.Activity;
  6. import android.media.MediaPlayer;
  7. import android.media.MediaPlayer.OnCompletionListener;
  8. import android.media.MediaPlayer.OnPreparedListener;
  9. import android.os.Bundle;
  10. import android.os.Environment;
  11. import android.widget.MediaController;
  12. import android.widget.VideoView;
  13.  
  14. public class MainActivity extends Activity {
  15.  
  16. private VideoView mVideoView;
  17. MediaController mediaController;
  18. private File file;
  19. private String key = "test.mp4"; // 关键字
  20. private File file1;
  21. private String pathString;
  22.  
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. mVideoView = (VideoView) findViewById(R.id.videoView1);
  28. mediaController = new MediaController(this);
  29. mVideoView.setMediaController(mediaController);
  30. file = new File(Environment.getExternalStorageDirectory().getPath());
  31. toSearchFiles(file);
  32. file1 = new File(pathString);
  33. if (file1.exists()) {
  34. mVideoView.setVideoPath(file1.getAbsolutePath());
  35. mediaController.setMediaPlayer(mVideoView);
  36. mVideoView.requestFocus();
  37. mVideoView.start();
  38. mVideoView.setOnPreparedListener(new OnPreparedListener() {
  39.  
  40. @Override
  41. public void onPrepared(MediaPlayer mp) {
  42. mp.start();
  43. mp.setLooping(true);
  44. }
  45. });
  46. mVideoView.setOnCompletionListener(new OnCompletionListener() {
  47.  
  48. @Override
  49. public void onCompletion(MediaPlayer mp) {
  50. mVideoView.setVideoPath(file1.getAbsolutePath());
  51. mVideoView.start();
  52. }
  53. });
  54. }
  55. }
  56.  
  57. /**
  58. * 遍历 Files
  59. *
  60. * @param file
  61. */
  62. public void toSearchFiles(File file) {
  63. File[] files = file.listFiles();
  64. for (File tf : files) {
  65. if (tf.isDirectory()) {
  66. toSearchFiles(tf);
  67. } else {
  68. try {
  69. if (tf.getName().indexOf(key) > -1) {
  70. pathString = tf.getPath();
  71. }
  72. } catch (Exception e) {
  73. }
  74. }
  75. }
  76. }
  77. }
  1. mediaController = new MediaController(this); 是设置播放时候的控制器,比如快进暂停等。
    这里面最主要的代码还是
  1. 34        mVideoView.setVideoPath(file1.getAbsolutePath());
  2. 35 mediaController.setMediaPlayer(mVideoView);
  3. 36 mVideoView.requestFocus();
  4. 37 mVideoView.start();
    这个是把文件的路径赋给VideoView然后让mediacontroller控制这个VideoView,后面使其多的焦点并播放。
    循环播放:
  1. 46 mVideoView.setOnCompletionListener(new OnCompletionListener() {
  2. 47
  3. 48 @Override
  4. 49 public void onCompletion(MediaPlayer mp) {
  5. 50 mVideoView.setVideoPath(file1.getAbsolutePath());
  6. 51 mVideoView.start();
  7. 52 }
  8. 53 });
  9. 54 }
    这个是给VideoView设置播放完成后的监听器,如果播放完成则重新开始。
  10.  
  11. 上面就是简单地VideoView的使用方法,记录下方便以后学习和使用。
  1.  

Android VideoView的更多相关文章

  1. Android VideoView简单播放视频

    给Android VideoView一个文件目录,就可以直接播放智能设备中的视频文件,现在以播放事先用手机拍好并重命名的视频文件test.mp4为例.(1) 需要在布局文件中写一个ViedoView: ...

  2. Android VideoView播放视频

    今天介绍一下Android的视频播放控件VideoView,下面介绍一下VideoView的使用步骤: 1.在界面布局中定义VideoView组件,或者在程序中创建VideoView组件. 2.调用V ...

  3. Android VideoView使用小记

    在Android中播放视频一般采用VideoView,当然也可以自己使用MediaPlayer+SurfaceView,但是比较麻烦.这里记录一些我使用VideoView时的疑惑 1.如何监听播放完成 ...

  4. Android VideoView播放网络视频简介(转)

    最近项目中用到了很多视频播放的地方,不管是聊天发送的视频消息,还是类似内涵段子的视频列表,都会涉及这些知识,不过网上的知识都很零散,一会找缓存方法,一会找预览图片的方法,一会找视频动态修改尺寸的方法, ...

  5. Android VideoView无法播放网络视频

    今天学习Android播放视频和音频,其中在练习播放视频的时候无法播放网络视频,网络视频是别人发布在网上的,但是把视频放在本地是可以的,最后推测是没有开放网络的访问权限的问题,果然开放了之后就能正常访 ...

  6. Android videoview循环播放视频

    如何在一个activity里实现videoview对一个文件夹下的所有视频文件顺序循环播放,当切换界面时暂停, 切换回来继续原来的视频播放呢.所谓的 自动循环播放就是监听到视频播放结束之后继续重新播放 ...

  7. Android ——VideoView禁止"无法播放该视频"弹窗

    我们在使用videoView播放视频时,如果获取内容失败.网址不对.或者视频格式不对等,会弹出“无法播放该视频”的弹窗,阻塞用户使用. 这种情况,如果在一些自助服务类场合下,弹窗会造成十分不友好的用户 ...

  8. Android VideoView未解决,动态读取权限、BottomNavigationView的用法

    昨天想写的,但是因为Video的毛病,是真找不出为啥了.百度也没用,学长也不清楚. 百度了那么久,大概得出结论,电脑的视频是不能用它来播放的... ..经过两天的奋斗,我居然搞定了,我的视频终于出来了 ...

  9. android videoView 加载等待

    final Handler handler = new Handler(); Runnable runnable = new Runnable() { public void run() { int ...

随机推荐

  1. 8个经典的HTML5游戏在线试玩及源码学习

    原文地址:http://www.oschina.net/news/32364/html5-games 游戏,毫无疑问是拿来供大家娱乐玩耍的,这也无可厚非,但是,今天给大家分享的8个HTML5游戏,在好 ...

  2. Unity3D内存释放

    Unity3D内存释放 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resourc ...

  3. GCD - Extreme (II)

    uva11424: 题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gc ...

  4. 几个国外FMX网站 good

    FireMonkey X –  Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...

  5. Kernel-Scheduler implementation

    2033 const struct sched_class rt_sched_class = { 2034 .next = &fair_sched_class, 2035 .enqueue_t ...

  6. 【模拟】Codeforces 710A King Moves

    题目链接: http://codeforces.com/problemset/problem/710/A 题目大意: 国际象棋标准8X8棋盘,国王能往周围8个方向走.输入国王的位置,输出当前国王能往几 ...

  7. 【模拟】Codeforces 671A Recycling Bottles

    题目链接: http://codeforces.com/problemset/problem/671/A 题目大意: A和B在一张二维平面上,平面上有N个垃圾,垃圾桶只有一个在T,问把所有垃圾全扔进垃 ...

  8. C++使用模版技术将任意类型的数据转为某个类型的数据

    将任意类型(int, float, 自定义的数据类型等等)的数据转换的某个类型C中储存,可以通过 将类型C的构造函数写成模版函数的形式,在C中将可以接收任意类型数据.如: class C{ templ ...

  9. STRUCTS 2 LABLE

    {LJ?Dragon}[标题]structs2标签的作用 {LJ?Dragon}[Diary]2017年,愉快的开始:离别不一定总伤感,虽然只是安慰着自己......... 问与答 问题 在Strut ...

  10. Java同步工具类总结

    先谈谈闭锁和栅栏的区别: 1.关键区别在于,所有线程必须同时到达栅栏位置,才能继续执行. 2.闭锁用于等待某一个事件的发生,举例:CountDownLatch中await方法等待计数器为零时,所有事件 ...