I am using a VideoView
and the MediaController
for an app I am working on. I simply wanted to have the MediaController
appear on top of my VideoView
but apparently you can't do that very easily. I attempted to use the setAnchorView
method to my VideoView
id, but that didn't work. No matter what I do, the MediaController
is always at the bottom of my screen.
With that said, I did some research and it looks as if I go about extending MediaController
, I can change position and other properties. I have created a new class:
package com.dop.mobilevforum;
import android.content.Context;
import android.widget.MediaController;
public class VFPlayer extends MediaController
{
public VFPlayer(Context context)
{
super(context);
}
}
and in my parent class:
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);
}
It the above is working, my default MediaController
still pops up and has all the same functionality. The question is now, how do I go about actually repositioning the controller from inside my VFPlayer
class?
The preferred way to control the location of the MediaController is via setAnchorView. Unfortunately, the VideoView seems to override this value to be the parent view of itself whenever a new video is loaded. To counter act this, a class like the following should work
public class ConstantAnchorMediaController extends MediaController
{
public ConstantAnchorMediaController(Context context, View anchor)
{
super(context);
super.setAnchorView(anchor);
}
@Override
public void setAnchorView(View view)
{
// Do nothing
}
}
Once you do that, you can use this MediaController to set the Anchor to whichever view you desire without worrying about your VideoView changing it. After that, its just a matter of getting a view in the right place to anchor it too.