前言

  本章内容是android.widget.MediaController,版本为Android 2.3 r1,翻译来自"唐明",再次感谢"唐明" !期待你一起参与Android 中文API的翻译,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://goo.gl/6vJQl

正文

  一、结构

public class MediaController extends FrameLayout

java.lang.Object

android.view.View

android.view.ViewGroup

android.widget.FrameLayout

android.widget.MediaController

  二、类概述

    

  一个包含媒体播放器(MediaPlayer)控件的视图。包含了一些典型的按钮,像"播放(Play)/暂停(Pause)", "倒带(Rewind)", "快进(Fast Forward)"与进度滑动器(progress slider)。它管理媒体播放器(MediaController)的状态以保持控件的同步。

  通过编程来实例化使用这个类。这个媒体控制器将创建一个具有默认设置的控件,并把它们放到一个窗口里漂浮在你的应用程序上。具体来说,这些控件会漂浮在通过setAnchorView()指定的视图上。如果这个窗口空闲3秒那么它将消失,直到用户触摸这个视图的时候重现。

  当媒体控制器是在一个XML布局资源文件中创建的时候,像show()和 hide()这些函数是无效的。媒体播放器将根据这些规则去显示和隐藏:

      * 在调用setPrevNextListeners()函数之前,"previous"和 "next"按钮都是隐藏的。

      * 如果setPrevNextListeners()函数被调用但传入的监听器参数是null,那么"previous"和 "next"按钮是可见的但是处于禁用状态。
      *"rewind" 和 "fastforward"按钮是显示的,如果不需要可以使用构造函数MediaController(Context, boolean)将boolean设置为false。

  三、公共方法

  public boolean dispatchKeyEvent (KeyEvent event)

  在焦点路径上分发按钮事件到下一个视图。该路径从视图树的顶端遍历到当前获得焦点的视图。如果当前视图已获得焦点,就分发给自身。否则,就分发到下一个节点的焦点路径上。这个方法也可以激发任何一个按键消息监听器。

  参数

  event       被分发的事件

  返回值

  如果这个事件被处理了返回true,否则返回false。

  public void hide ()

  从屏幕中移除控制器。

  public boolean isShowing ()

  (译者注:判断媒体控制器是否处于可见状态。)

  public void onFinishInflate ()

  XML文件加载视图完成时调用。这个函数在加载的最后阶段被调用,所有的子视图已经被添加。

  即使子类重写了onFinishInflate方法,也应该始终确保调用父类方法,以便我们调用。

  public boolean onTouchEvent (MotionEvent event)

  实现这个方法来处理触摸屏幕引发的事件。

  参数

  event       动作事件

  返回值

  如果这个事件被处理了返回true,否则返回false。

  public boolean onTrackballEvent (MotionEvent ev)

  实现这个方法处理轨迹球的动作事件,轨迹球相对运动的最后一个事件能用MotionEvent.getX() 和 MotionEvent.getY()函数获取。这些都是标准化的,用1表示用户按下一个DPAD按键。(因此他们将经常使用小数值表示,为轨迹球提供更多的的细微运动信息) (译者注:DPAD按键事件: KeyEvent.KEYCODE_DPAD_CENTER(居中)、KeyEvent.KEYCODE_DPAD_DOWN(向下)、KeyEvent.KEYCODE_DPAD_LEFT(向左)、KeyEvent.KEYCODE_DPAD_RIGHT(向右)、KeyEvent.KEYCODE_DPAD_UP(向上)作比较。分别表示居中、下移、左移、右移、上移的操作。 相关链接:onTrackBallEvent方法简介

  参数

ev    动作事件

  返回值

  如果这个事件被处理了返回true,否则返回false。

  public void setAnchorView (View view)

  设置这个控制器绑定(anchor/锚)到一个视图上。例如可以是一个VideoView对象,或者是你的activity的主视图。

  参数

  view  将视图来绑定控制器时可见

  public void setEnabled (boolean enabled)

  设置视图对象的有效状态。这也可以改变子类的有效状态。

  参数

  enabled 如果要让这个视图对象可用就设置为true,否则设置为false。

  public void setMediaPlayer (MediaController.MediaPlayerControl player)

  (译者注:把这个媒体控制器设置到VideoView对象上。)

  public void setPrevNextListeners (View.OnClickListener next, View.OnClickListener prev)

  (译者注:设置"previous"和 "next"按钮的监听器函数。)

  public void show (int timeout)

  在屏幕上显示这个控制器。它将在闲置’超时 (timeout)’毫秒到达后自动消失。

  参数

  timeout 这个参数以毫秒为单位。如果设置为0将一直显示到调用hide()函数为止。

  public void show ()

    在屏幕上显示这个控制器。它将在3秒以后自动消失。

  四、补充

  文章精选

  [推荐][Android学习指南]Android多媒体(Media)

      调用android api播放视频

       Customize android VideoView (ii)

MediaController的更多相关文章

  1. Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器

    效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在Su ...

  2. 关于mediacontroller的一些好的文章

    1. Vitamio中文API文档(3)—— MediaController http://www.cnblogs.com/over140/archive/2012/08/30/2663733.htm ...

  3. vitamio MediaController总是显示在底部的问题

    前面一直用腾讯的x5 tas来播放视频,但是体验效果不好,不能设置播放页,无法获取用户对视频的学习情况,百度了下,发现好多人在使用vitamio,最新版本是5.0的,下载可能要花费点时间,官网上竟然没 ...

  4. HTML5笔记2——HTML5音/视频标签详解

    音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...

  5. 【Android】 修复ijkPlayer进行m3u8 hls流播放时seek进度条拖动不准确的问题

    项目中使用的播放器是ijkPlayer,发现播放切片特点的hls流(m3u8格式的视频)拖动seekBar的时候会莫名的跳转或者seek不到准确的位置,发现网友也遇到了同样的问题,ijk的开发者也说明 ...

  6. Android studio

      情况一: 描述:写Android app时,出现activity对应的layout预览图所显示的activity是有标题栏的,但是运行该app,无论是模拟器还是真机,却出现没有了标题栏的情况,而自 ...

  7. Android实现播放视频

    转载:http://www.bdqn.cn/news/201311/12100.shtml 使用VideoView播放视频 VideoView,用于播放一段视频媒体,它继承了SurfaceView,位 ...

  8. android视频播放器

    RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetworks公司提交的 ...

  9. HTML5 video标签播放视频下载原理

    HTML5 video https://github.com/remy/html5demos/blob/master/demos/video.html <video preload=" ...

随机推荐

  1. PHP单例模式编写

    今天来点基础的设计模式: 如何利用单例模式实现一个数据库中间层 class Db{ static private $_instance; //当前数据库连接实例 static public funct ...

  2. 何谓Dandy?它是一种着装风格

    何谓Dandy?它是一种着装风格_女性_腾讯网 何谓Dandy?它是一种着装风格 2012年02月17日09:47腾讯专稿我要评论(0) 字号:T|T   何谓Dandyism?它是一种风格,词根Da ...

  3. ios控制器modal跳转

    1. http://www.cnblogs.com/smileEvday/archive/2012/05/29/presentModalViewController.html 2012年5月- Pre ...

  4. sql server中将一个表中的部分数据插入到另一个表中

    可以通过存储过程完成,也可以通过在库名上右击“新建查询”执行.语句其实基本相同. 1. 存储过程: CREATE PROCEDURE pro1 as insert into tableB (field ...

  5. javascript必知必会之prototype

    本博客所有内容采用 Creative Commons Licenses 许可使用. 引用本内容时,请保留 朱涛, 出处 ,并且 非商业 . 点击 RSS 进行订阅.(推荐使用 google reade ...

  6. tnsping慢的问题解决

    1.检查网络ping主机或IP是否正常,DNS是否设置正确 2. 检查防火墙设置 3.检查listener.log日志,查看是否有大量连接连入. 4.检查listener.log日志文件是否过大,如果 ...

  7. 解决Qt4.8.6+VS2010运行程序提示 FTH: (6512): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes

    这个问题偶尔碰到两次,现在又遇上了,解决办法如下: 打开注册表,设置HKLM\Software\Microsoft\FTH\Enabled 为0 打开CMD,运行Rundll32.exe fthsvc ...

  8. Ubuntu 12.04 wireless networks : devices not ready (firmware missing)解决办法

    今天装了Ubuntu12.04之后,发现无线不能用. 用iwconfig查看,wlan0 项后面有内容,但是在本该显示无线列表的地方显示的是 “ wireless networks : devices ...

  9. android Mvp简单实用

    View 对应于Activity,负责View的绘制以及与用户交互Model 依然是业务逻辑和实体模型Presenter 负责完成View于Model间的交互 模拟客户端的登录操作,并实现登录成功与登 ...

  10. Python中关于try...finally的一些疑问

    最近看Vamei的Python文章,其中一篇讲异常处理的,原本看完没啥疑惑,或许是自己想的简单了. 看到评论,一个园友的问题引起我的兴趣. 他的问题是 def func(x): try: return ...