前言

  本章内容是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. openjpa框架入门_项目 database 启动project 初始化(三)

    mysql数据库安装好,这里不多说,现在来执行sql脚本 http://download.csdn.net/detail/shenhonglei1234/6019677 将下载好的脚本后缀名“open ...

  2. Spring再学习

    一.主要版本变更 框架最早发布于2004年,其后发布了几个重大的版本更新:在Spring 2.0中提供对XML命名空间和AspectJ的支持:Spring 2.5中新增了注解驱动的配置:在Spring ...

  3. java 解析 xml (DOM方法全)

    Java 处理 XML 的三种主流技术及介绍 http://www.ibm.com/developerworks/cn/xml/dm-1208gub/ 这篇文章讲的比较详细,下面我主要介绍 dom方法 ...

  4. 简易实现 TextView单行文本水平触摸滑动效果

    为了方便查看,已使用markdown编辑形成新博文. 本文Mardown地址 近期做应用的时候实用到TextView单行长文本,当文本内容过长时候又想实现触摸水平滑动效果. 网上找了非常多,都没有看到 ...

  5. 【LeetCode】 Populating Next Right Pointers in Each Node 全然二叉树

    题目:Populating Next Right Pointers in Each Node <span style="font-size:18px;">/* * Le ...

  6. 《JavaScript 闯关记》

    为何写作此课程 stone 主要负责基于 Web 的企业内部管理系统的开发,虽然能够熟练地使用 JavaScript,但随着对 JavaScript 的理解越来越深,才发现自己尚未掌握其精髓. 201 ...

  7. UVA 1374 Power Calculus

    题意: 给出m,问对n最少进行几次操作.n初始为1,能得到m.操作1位将n平方.操作2为将n除以之前出现的n值中的任意一个. 分析: 其实是关于指数的操作,即从1到m最少的步数.我们可以先确定最少步数 ...

  8. 跳转APP(app之间互相通信)

    摘要 步骤: 1,添加URL Types项 2,配置URL Scheme 3,其他应用的跳转 4,参数的接收   开发IOS项目的时候,有可能会遇到两个APP应用相互调用的需求,比如说:支付宝支付.. ...

  9. C# 5 break continue 球员成绩 彩票 选班长

        二.新课: 1.break与continue. 这两个关键字一般放在循环的花括号里面使用. break--结束整个循环. continue--结束本次循环,进入下次循环. break的案例: ...

  10. HTML8表单验证

    表单验证: 一.非空验证: 1.内容是不是空的. 判断值的长度是不是0.length属性.压缩空格的函数.   2.内容是不是改变了.   二.对比验证: 1.验证两个控件值的关系(相同,大小)   ...