android - 为 android 扩展 MediaController

标签 android subclass mediacontroller

我正在为我正在开发的应用程序使用 VideoViewMediaController。我只是想让 MediaController 出现在我的 VideoView 之上,但显然你不能很容易地做到这一点。我试图对我的 VideoView id 使用 setAnchorView 方法,但这没有用。无论我做什么,MediaController 始终位于屏幕底部。

话虽如此,我做了一些研究,看起来好像我要扩展 MediaController,我可以更改位置和其他属性。我创建了一个新类:

package com.dop.mobilevforum;

import android.content.Context;
import android.widget.MediaController;

public class VFPlayer extends MediaController
{
    public VFPlayer(Context context)
    {
        super(context);
    }
}

在我的父类中:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.vforum);

    controller  = new VFPlayer(this);
    vidPlayer   = (VideoView) findViewById(R.id.vidPlayer);
    vidPlayer.setMediaController(controller);
}

如果上面的工作正常,我的默认 MediaController 仍然弹出并具有所有相同的功能。现在的问题是,如何从我的 VFPlayer 类中实际重新定位 Controller ?

enter image description here

最佳答案

控制 MediaController 位置的首选方法是通过 setAnchorView .不幸的是,每当加载新视频时,VideoView 似乎都会覆盖此值使其成为其自身的父 View 。为了解决这个问题,像下面这样的类应该可以工作

public class ConstantAnchorMediaController extends MediaController
{

    public ConstantAnchorMediaController(Context context, View anchor)
    {
        super(context);
        super.setAnchorView(anchor);
    }

    @Override
    public void setAnchorView(View view)
    {
        // Do nothing
    }
}

完成后,您可以使用此 MediaController 将 anchor 设置为您想要的任何 View ,而不必担心 VideoView 会更改它。在那之后,只需在正确的位置获得一个 View 来锚定它。

关于android - 为 android 扩展 MediaController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881272/

相关文章:

java - 使用 PircBot 向 IRC channel 发送消息

java - 音频文件无法使用 mediaController 播放?

java - 如何在 Firebase 中获取特定的 PushID?

android - 将 Jsoup 请求转换为 retrofit2

c++ - 在子类之外实现函数导致未知错误

android - 我正在尝试创建一个媒体 Controller 来控制我的音频文件

android - 以编程方式更改 MediaController 图标

java - 组织.gradle.process.internal.ExecException : Process 'command finished with non-zero exit value 1

android - 当列名相同时,如何表示与 Android Room 的 "many to many"关系?

python - 什么时候调用 Python 的 super().__init__()?