视频在Android实时播放之前完成

时间:2013-10-15 11:55:32

标签: android video

  

这是视频播放课程

 public class CustomVideo extends VideoView {
        public   VideoView viewHolder ;

    public boolean flag;
    Uri video;


 public  void playVideo(final Activity activity,VideoView resource, final int path,final ImageView image1,final ImageView  image2,final ImageButton button,final ImageButton button1, int id) {

                    viewHolder=resource;

                    viewHolder = (VideoView) activity.findViewById(id);
                button.setEnabled(false);
                button.setClickable(false);
                button1.setEnabled(false);
                button1.setClickable(false);
    //          viewHolder.setZOrderOnTop(false);
    //          RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(504,279);
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                params.addRule(RelativeLayout.ALIGN_TOP, R.id.imageView_bg_plain);
                params.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.imageView_bg_plain);
                params.addRule(RelativeLayout.ALIGN_LEFT, R.id.imageView_bg_plain);
                params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.imageView_bg_plain);
                //params.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
    //          params.setMargins(0, 98, 0, 0);
                viewHolder.setLayoutParams(params);
                viewHolder.invalidate();
                viewHolder.setVisibility(View.VISIBLE);
                viewHolder.bringToFront();

                 video = Uri.parse("android.resource://" + activity.getPackageName() + "/" + path);
                // introVideo.setMediaController(mediaController);
                viewHolder.setVideoURI(video);
                viewHolder.requestFocus();
                viewHolder.start();

                viewHolder.setOnCompletionListener(new OnCompletionListener() {

                    @Override
                    public void onCompletion(final MediaPlayer mp1) {
                        // TODO Auto-generated method stub

                        button.setEnabled(true);
                        button.setClickable(true);
                        button1.setEnabled(true);
                        button1.setClickable(true);
    //                    viewHolder.setZOrderOnTop(true);
                        viewHolder.setVisibility(View.GONE);
                       image1.setVisibility(View.VISIBLE);
                        image2.setVisibility(View.VISIBLE);

                    }
                });

            }
  

这种自定义方法我呼吁在每个活动中显示视频   ,我有大约50个从这种方法播放视频的活动&类。   但问题是在实时之前完成视频。

     

我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@drawable/letter_lesson_screen2"
    android:id="@+id/rid"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    tools:context=".Letter_lesson1_activity" >
    <RelativeLayout
        android:background="@drawable/bar_alphabet"
        android:id="@+id/bar_alphabet"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_height="40dp"
        android:layout_width="match_parent"
        android:paddingTop="7dp" >
        <LinearLayout
            android:id="@+id/linelay_bar_alphabet"
            android:layout_alignBottom="@+id/bar_alphabet"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:orientation="horizontal" >
        </LinearLayout>
    </RelativeLayout>
    <RelativeLayout
        android:background="@drawable/toolbar"
        android:id="@+id/toolbar"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_height="35dp"
        android:layout_width="fill_parent"
        android:paddingLeft="15dp"
        android:paddingRight="15dp" >
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imagebutton_back"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/but_back" />
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imgbutton_help"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/help1" />
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imgbutton_home"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/home" />
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imageButton_letter_pervious"
            android:layout_alignParentTop="true"
            android:layout_height="30dp"
            android:layout_marginRight="29dp"
            android:layout_toLeftOf="@+id/imgbutton_help"
            android:layout_width="30dp"
            android:scaleType="fitXY"
            android:src="@drawable/previous" />
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imageButton_letter_next"
            android:layout_alignParentTop="true"
            android:layout_height="30dp"
            android:layout_marginLeft="25dp"
            android:layout_toRightOf="@+id/imgbutton_help"
            android:layout_width="30dp"
            android:scaleType="fitXY"
            android:src="@drawable/next" />
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imageButton_letter_rewind"
            android:layout_alignTop="@+id/imgbutton_help"
            android:layout_height="wrap_content"
            android:layout_marginRight="30dp"
            android:layout_toLeftOf="@+id/imageButton_letter_pervious"
            android:layout_width="wrap_content"
            android:src="@drawable/back" />
        <ImageButton
            android:background="@android:color/transparent"
            android:id="@+id/imageButton_letter_forward"
            android:layout_alignParentTop="true"
            android:layout_height="wrap_content"
            android:layout_marginLeft="28dp"
            android:layout_toRightOf="@+id/imageButton_letter_next"
            android:layout_width="wrap_content"
            android:src="@drawable/fwd" />
    </RelativeLayout>
    <VideoView
        android:id="@+id/videoView1"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_height="276dp"
        android:layout_width="500dp" />
    <VideoView
        android:id="@+id/videoView2"
        android:layout_alignTop="@+id/videoView1"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true"
        android:layout_height="276dp"
        android:layout_width="500dp" />
    <VideoView
        android:id="@+id/videoView_letter"
        android:layout_centerVertical="true"
        android:layout_height="150dp"
        android:layout_marginBottom="155dp"
        android:layout_marginLeft="180dp"
        android:layout_marginTop="148dp"
        android:layout_width="100dp" />
    <ImageView
        android:id="@+id/imageView_bg_plain"
        android:layout_centerHorizontal="true"
        android:layout_height="279dp"
        android:layout_marginTop="98dp"
        android:layout_width="504dp"
        android:scaleType="fitXY"
        android:src="@drawable/bg_line" />
    <ImageView
        android:id="@+id/imageView_letter"
        android:layout_centerHorizontal="true"
        android:layout_height="100dp"
        android:layout_marginTop="180dp"
        android:layout_width="wrap_content"
        android:src="@drawable/b_letter" />
    <ImageView
        android:id="@+id/imageView_bg_lines"
        android:layout_centerHorizontal="true"
        android:layout_height="279dp"
        android:layout_marginTop="98dp"
        android:layout_width="504dp"
        android:scaleType="fitXY"
        android:src="@drawable/bg_line" />
    <ImageView
        android:id="@+id/imageView_letter_image"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/ball" />
    <ImageView
        android:id="@+id/imageView_cons"
        android:layout_centerHorizontal="true"
        android:layout_height="130dp"
        android:layout_marginTop="145dp"
        android:layout_width="150dp"
        android:src="@drawable/b_cons" />
    <ImageView
        android:id="@+id/imageView_2letter"
        android:layout_height="130dp"
        android:layout_marginLeft="150dp"
        android:layout_marginTop="145dp"
        android:layout_width="wrap_content"
        android:src="@drawable/b_cons" />
    <ImageView
        android:id="@+id/img_help"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:onClick="onclick"
        android:scaleType="fitXY"
        android:src="@drawable/helpscreen1"
        android:visibility="gone" />
    <ImageView
        android:id="@+id/imageView_2_letter"
        android:layout_height="70dp"
        android:layout_marginTop="210dp"
        android:layout_toRightOf="@+id/imageView_cons"
        android:layout_width="wrap_content"
        android:src="@drawable/bb" />
</RelativeLayout>
请尽快给我灵魂,谢谢。

1 个答案:

答案 0 :(得分:1)

尝试使用VideoView.setOnPreparedListener,然后从那里开始播放视频。

虽然我发现实现自己的视频VideoView更好的解决方案,只需创建自己的MediaPlayer,将SurfaceView绑定到它,如果需要添加MediaController,我创建自己的按钮控件以及搜索栏。创建自己的持有者(你可以从SurfaceView获得它)并将你的Callback转换为持有者。

只是谷歌这种方法获取更多信息,有一些很好的教程,我发现它比这个VideoView shizzle更可行。此外,您可以使用MediaPlayer中的setDataSource,但您无法在VideoView上使用。

无论哪种方式,如果你使用我提到的方法或你已经使用的方法,remmeber使用prepare()方法