android mediacontroller自定义,android MediaController

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)

实现这个方法处理轨迹球的动作事件,轨迹球相对运动的最后一个事件能用和 函数获取。这些都是标准化的,用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

秒以后自动消失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中的MediaController是一个UI组件,可以控制视频播放的进度、音量等,同时也可以自定义它的外观和行为。下面是自定义MediaController的步骤: 1. 创建新的布局文件 在res/layout目录下创建一个新的布局文件(例如:custom_media_controller.xml),用来定义你自己的MediaController的布局。 2. 定义MediaController的布局 在布局文件中定义MediaController的布局,可以使用各种布局控件,如Button、SeekBar等。 ``` <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageButton android:id="@+id/media_controller_play_pause_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_play_arrow_black_24dp"/> <SeekBar android:id="@+id/media_controller_seek_bar" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"/> <TextView android:id="@+id/media_controller_time_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="00:00"/> </LinearLayout> ``` 以上代码创建了一个水平方向的LinearLayout,包含一个播放/暂停按钮、一个SeekBar和一个显示时间的TextView。 3. 创建自定义MediaController类 创建一个新的Java类,继承自MediaController类,用于加载自定义的布局和处理控件的事件。 ``` public class CustomMediaController extends MediaController { private ImageButton playPauseButton; private SeekBar seekBar; private TextView timeTextView; public CustomMediaController(Context context) { super(context); } @Override public void setAnchorView(View view) { super.setAnchorView(view); // 加载自定义布局 View customView = LayoutInflater.from(getContext()).inflate(R.layout.custom_media_controller, null); addView(customView); // 初始化控件 playPauseButton = (ImageButton) customView.findViewById(R.id.media_controller_play_pause_button); seekBar = (SeekBar) customView.findViewById(R.id.media_controller_seek_bar); timeTextView = (TextView) customView.findViewById(R.id.media_controller_time_text); // 处理控件的事件 playPauseButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (isPlaying()) { pause(); playPauseButton.setImageResource(R.drawable.ic_play_arrow_black_24dp); } else { start(); playPauseButton.setImageResource(R.drawable.ic_pause_black_24dp); } } }); seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { seekTo(progress); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { // do nothing } @Override public void onStopTrackingTouch(SeekBar seekBar) { // do nothing } }); } @Override public void show() { super.show(); // 更新SeekBar的进度和时间 seekBar.setMax(getDuration()); seekBar.setProgress(getCurrentPosition()); timeTextView.setText(formatTime(getCurrentPosition()) + " / " + formatTime(getDuration())); } @Override public void hide() { super.hide(); } private String formatTime(int time) { int seconds = time / 1000; int minutes = seconds / 60; int remainingSeconds = seconds % 60; return String.format("%02d:%02d", minutes, remainingSeconds); } } ``` 4. 使用自定义MediaController 使用自定义MediaController只需要将其设置给VideoView即可。 ``` VideoView videoView = (VideoView) findViewById(R.id.videoView); CustomMediaController mediaController = new CustomMediaController(this); videoView.setMediaController(mediaController); mediaController.setAnchorView(videoView); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值