在开发中,用到了视频播放的功能,看到网上现成的开源的Vitamio已经很成熟了。就本着拿来主义直接实用了。
但是播放中实用的进度条的位置有时候跟自己需求不是那么一致。
下面是教程
1.首先修改Vitamio中MediaController类,在此类中新加一个构造函数,代码如下:
public MediaController(Context context,boolean fromXml,View container) {
super(context);
initController(context);
mFromXml = fromXml;
mRoot = makeControllerView();<br> //这个地方的FrameLayout.LayoutpParams是因为布局文件中要把MediaController的视图作为childView加到一个FrameLayout中去
FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);//想怎样布局MediaController就尽情的发挥这个LayoutParams吧
p.gravity = Gravity.BOTTOM;
mRoot.setLayoutParams(p);
((FrameLayout)container).addView(mRoot);
}
此方法中用到的所有字段都是本来就有的,没有新加任何代码
2.定义播放视频的XML布局文件,代码如下:
<FrameLayout
android:id="@+id/ll"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/black"
android:orientation="vertical" >
<io.vov.vitamio.widget.CenterLayout
android:id="@+id/cl"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/black" >
<io.vov.vitamio.widget.VideoView
android:id="@+id/vv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</io.vov.vitamio.widget.CenterLayout>
</LinearLayout>
</FrameLayout>
3.Activity中使用
/**
*第一个参数:当前上下文
*第二个参数:一定要为TRUE,就是为了在MediaController中执行某些代码
*第三个参数:把控制器添加到哪个View中去
*/
MediaController mc = new MediaController(this,true,llVideo);
vv.setMediaController(mc);
mc.setVisibility(View.GONE);//此操作是为了解决打开视频的时候控制条不走动,需要点击下视频才走动的问题。这样默认情况下用户看不到进度条,当点击视频的时候就可以看到正在走动的进度条了。
原文地址: http://www.cnblogs.com/MrZz/p/4031991.html