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.
我不太清楚为什么你的代码不能正常工作,但是我可以从我的一个项目中提供一个例子,在那里我给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)
我希望这可以对你有所帮助,直到有人能够回答你的问题:-)
| 归档时间: |
|
| 查看次数: |
13736 次 |
| 最近记录: |