我尝试从远程网址播放视频&它工作正常,现在的问题是视频开始自动播放,我希望视频显示像YouTube视频,中间有一个播放按钮。点击该视频应该播放。
public class Tabs extends Activity {
TabHost th;
VideoView video;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Create tabs using XML
video=(VideoView) findViewById(R.id.VideoView);
String path1="http://www.w3schools.com/html5/movie.mp4";
MediaController mc = new MediaController(this);
mc.setAnchorView(video);
mc.setMediaPlayer(video);
Uri uri=Uri.parse(path1);
video.setMediaController(mc);
video.setVideoURI(uri);
video.start();
}
}
这是我的代码完全正常,但视频会自动开始播放,我需要它才能显示第一个场景,如YouTube视频,中间有一个播放按钮。点击该视频应该开始播放。此外,它应该显示视频的缩略图
答案 0 :(得分:1)
在onCreate
中设置视频播放器和网址,并通过实施onClickListener
进行实际播放。
在您的示例中(请记住导入缺少的包并创建ID为buttonStart
的按钮):
public class Test extends Activity {
TabHost th;
VideoView video;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create tabs using XML
video = (VideoView) findViewById(R.id.VideoView);
String path1 = "http://www.w3schools.com/html5/movie.mp4";
MediaController mc = new MediaController(this);
mc.setAnchorView(video);
mc.setMediaPlayer(video);
Uri uri = Uri.parse(path1);
video.setMediaController(mc);
video.setVideoURI(uri);
Button buttonStart = (Button) findViewById(R.id.buttonStart);
buttonStart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
video.start();
}
});
}
}
至于显示缩略图,如果你有它的URL,你可以启动一个异步任务,它将检索远程图像并将其覆盖在视频播放器上(使用FrameLayout
来实现覆盖视图)。然后在覆盖图像上设置onClickListener(请参阅有关按钮的完成方式的代码,ImageView
可以遵循相同的逻辑)。只需确保设置ImageView to be clickable。
答案 1 :(得分:0)
写video.start();在你的按钮onClick Listener。
感谢。
答案 2 :(得分:0)
您可以添加按钮并为其添加监听器,而不是在onCreate
方法上进行流式传输,而在其点击事件中,您可以直播视频
答案 3 :(得分:0)
好的,因为我在ColorWP的帮助下工作了(非常感谢)我想我会发布我所做的:
这是我的xml,我使用Frame Layout重叠缩略图和&播放图片。
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="292dp"
android:layout_height="100dp"
android:layout_x="7dp"
android:layout_y="16dp"
android:text="" />
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="281dp"
android:layout_x="1dp"
android:layout_y="138dp"
>
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<VideoView
android:id="@+id/svid"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ImageView
android:id="@+id/simg"
android:layout_width="187dp"
android:layout_height="137dp"
android:src="@drawable/ic_action_search"
android:layout_centerInParent="true" />
<ImageView
android:id="@+id/playimg"
android:layout_width="100dp"
android:layout_height="87dp"
android:src="@drawable/animated_loading"
android:layout_centerInParent="true"
/>
</RelativeLayout>
</FrameLayout>
在代码中我所做的就是在播放图像上设置了一个ClickListener,所以当用户在屏幕上按下播放图像时我使用了video.start()。这很完美:)
以下是我的代码摘录:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.single);
vid=(VideoView) findViewById(R.id.svid);
iv=(ImageView) findViewById(R.id.simg);
ip=(ImageView) findViewById(R.id.playimg);
t=(TextView) findViewById(R.id.textView1);
final ProgressDialog pd=new ProgressDialog(SingleItem.this);
link="http://www.w3schools.com/html5/movie.mp4";
String path1=link;
MediaController mc = new MediaController(this);
mc.setAnchorView(vid);
mc.setMediaPlayer(vid);
uri=Uri.parse(path1);
vid.setMediaController(mc);
vid.setVideoURI(uri);
vid.requestFocus();
loadImage(thumb);
ip.setClickable(true);
ip.setImageResource(R.drawable.play);
// ip.setVisibility(ImageView.INVISIBLE);
vid.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
//ip.setVisibility(ImageView.VISIBLE);
pd.dismiss();
}
});
ip.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
vid.start();
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("Loading Video...");
pd.setIndeterminate(false);
pd.setCancelable(true);
pd.show();
if(vid.isPlaying()){
iv.setVisibility(ImageView.INVISIBLE);
ip.setVisibility(ImageView.INVISIBLE);
}else{
iv.setVisibility(ImageView.VISIBLE);
ip.setVisibility(ImageView.VISIBLE);
}
}
});
希望这会有所帮助:)