5

我正在使用一个VideoViewMediaController 我正在开发的应用程序。我只是想让它MediaController出现在我的上面,VideoView但显然你不能很容易地做到这一点。我试图将这个setAnchorView方法用于我的VideoViewid,但没有奏效。无论我做什么,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课堂上实际重新定位控制器?

在此处输入图像描述

4

3 回答 3

17

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

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 设置为你想要的任何视图,而不用担心你的 VideoView 会改变它。在那之后,它只是在正确的位置获得一个视图来锚定它。

于 2011-10-27T15:43:27.517 回答
1

您应该能够覆盖

android.view.View.OnLayout(boolean, int, int, int, int)

VFPlayer 类中的方法。从这里将视图/小部件放在您想要的位置。

于 2011-10-27T15:30:05.893 回答
1

几个月前我学到的关于 Android 的知识是这样的:

当困难来临时,制作你自己的组件

我的意思是,这很容易使您的组件布局,宽度为 4 或 5 个 ImageButtons/Buttons,并将它们链接到 VideoView 组件功能(或 SurfaceView 以获得更好的控制)。

一些 VideoView 函数(摘自此处):

start() -> To start a video play
pause() -> To pause it
seekTo(int msec) -> To go the exactly place , using it with a SeekBar
...

然后您可以使用按钮制作一些布局,以便将它们放在您想要的位置,而不会尝试扩展像 V 这样的刚性组件。

于 2011-10-27T15:42:29.387 回答