在播放视频前增加等待画面和进度提示

Android可以通过VideoView很方便的实现在线视频部分,可参见调用android api播放视频,不过该例子中的在线视频已经无法访问了。可使用这个源代码(实现了最简单的在线播放):

http://easymorse.googlecode.com/svn/tags/videoplayer-0.1/

在线播放,可能需要等待片刻才能开始,或者有些客户需要在用户观看视频前看一下广告。比如:

image

然后:

image

基本思路是,VideoView放在一个FrameLayout中,因为FrameLayout是重叠放置视图组件的,再放一个ImageView和ProgressBar,然后注册VideoView的setOnPreparedListener监听器,当视频加载完毕后,让进图条和待机图片消失。

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_width="fill_parent"
    android:gravity="center" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:layout_width="fill_parent"
        android:gravity="center" android:layout_height="fill_parent">
        <VideoView android:id="@+id/videoView" android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
        android:gravity="center" android:layout_height="fill_parent">
        <ImageView android:id="@+id/image" android:layout_height="wrap_content"
            android:layout_width="wrap_content" />
    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
        android:gravity="center|bottom" android:layout_height="fill_parent">
        <ProgressBar android:id="@+id/progress"
            android:layout_height="wrap_content" android:layout_width="wrap_content" />
    </LinearLayout>
</FrameLayout>

 

有关监听器的代码:

package com.easymorse.videoplayer;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.ProgressBar;
import android.widget.VideoView;

public class MediaPlayerActivity extends Activity {
    private VideoView videoView;

    private ImageView imageView;
    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.video);

        this.videoView = (VideoView) this.findViewById(R.id.videoView);
        this.imageView = (ImageView) this.findViewById(R.id.image);
        this.imageView.setImageResource(R.drawable.ad);
        this.progressBar=(ProgressBar) this.findViewById(R.id.progress);

        MediaController controller = new MediaController(this);
        this.videoView.setMediaController(controller);
        this.videoView.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                progressBar.setVisibility(View.GONE);
                imageView.setVisibility(View.GONE);
                mp.start();
            }
        });

        videoView
                .setVideoURI(Uri
                        .parse("http://wangjun.easymorse.com/wp-content/video/mp4/tuzi.3gp"));
    }
}

 

源代码见:

http://easymorse.googlecode.com/svn/tags/videoplayer-0.2/

PDF格式創作    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply