我正在为我正在开发的应用程序使用 VideoView
和 MediaController
。我只是想让 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 ?
最佳答案
控制 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/