将VideoView添加到XML布局

use*_*421 6 android video-streaming

我想以编程方式将VideoView添加到LinearLayout.LinearLayout的id为"main".

参考这个问题视频流和Android,我能够让视频显示和播放,但如果我想动态创建一个新的VideoView并将其添加到布局怎么办?

这是我试图以编程方式"复制"的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent">
<VideoView android:id="@+id/your_video_view"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

以下是我尝试以编程方式完成相同操作的方法:

VideoView videoView = new VideoView(this);
LinearLayout layout = (LinearLayout)findViewById(R.id.main);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layout.addView(videoView, params);
Run Code Online (Sandbox Code Playgroud)

问题是视频根本没有出现!使用XML声明的VideoView,一切正常,但从程序上来说,它根本不起作用.

为了清楚起见,我不希望在编程时以XML文件中定义VideoView.

Las*_*son 6

我不太清楚为什么你的代码不能正常工作,但是我可以从我的一个项目中提供一个例子,在那里我给VideoView充气并将它添加到一个置于LinearLayout内的FrameLayout.我通过MediaController控制我的视频.

这是我的FrameLayout的XML:

<FrameLayout
    android:id="@+id/videoFrameLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

在res/layout中,我有一个只包含VideoView的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<VideoView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/your_video_view"
android:layout_height="fill_parent"
android:layout_width="fill_parent" />
Run Code Online (Sandbox Code Playgroud)

要以编程方式添加它,我们需要一个inflater和框架:

inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
videoFrame = (FrameLayout)findViewById(R.id.videoFrameLayout);
Run Code Online (Sandbox Code Playgroud)

当我想显示视频并播放时,我使用以下代码:

videoView = (VideoView) inflater.inflate(R.layout.your_video_view, null);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoPath(FilePathHere);
videoFrame.addView(videoView);
videoView.start();
Run Code Online (Sandbox Code Playgroud)

我希望这可以对你有所帮助,直到有人能够回答你的问题:-)