视频播放(VideoView)

这里的视频播放使用的是VideoView来进行播放,主要功能就是播放、暂停、前一个视频、后一个视频等功能。

(1) Xml布局实现

<LinearLayout
    android:id="@+id/viewQushi"
    android:clickable="true"
    android:layout_width="match_parent"
    android:layout_height="220dp"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:gravity="center_horizontal"
    android:orientation="vertical"
>

    <VideoView
        android:id="@+id/video"
        android:layout_width="match_parent"
        android:layout_height="150dp"
/>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:layout_marginTop="2dip"
        android:visibility="gone"
        android:layout_marginBottom="2dip"
>
        <TextView
            android:id="@+id/has_played"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="00:00:00"
/>
        <SeekBar
            android:id="@+id/seekbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="15dip"
            android:paddingRight="5dip"
            android:layout_marginLeft="10dip"
            android:layout_marginRight="10dip"
            android:layout_weight="1"
/>
        <TextView
            android:id="@+id/duration"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="00:00:00"
/>
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:background="#D7EFF2"
>

        <com.sn.controlers.SNImageView
            android:id="@+id/proVideo"
            android:layout_width="18dp"
            android:layout_height="18dp"
            android:scaleType="fitXY"
            android:layout_marginLeft="40dp"
            android:layout_alignParentLeft="true"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:adjustViewBounds="true"
            app:image="@drawable/pro"
/>

        <com.sn.controlers.SNImageView
            android:id="@+id/playVideo"
            android:layout_width="18dp"
            android:layout_height="18dp"
            android:scaleType="fitXY"
            android:layout_centerInParent="true"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:adjustViewBounds="true"
/>

        <com.sn.controlers.SNImageView
            android:id="@+id/nextVideo"
            android:layout_width="18dp"
            android:layout_height="18dp"
            android:scaleType="fitXY"
            android:layout_marginRight="40dp"
            android:layout_alignParentRight="true"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:adjustViewBounds="true"
            app:image="@drawable/next"
/>

    </RelativeLayout>
</LinearLayout>

 

(2) Java代码实现

public class VideoDetailsActivity extends SmartActivity{
    public static final String STRING_VIDEO_DETAILS="STRING_VIDEO_DETAILS";

    SNManager $;
    VideoView video;
    ImageView proVideo,playVideo,nextVideo;
    int flag=0;
    int proTag=0;
    int currentPosition=0;
    lianyungang lianyungang;
    String uri = "";
    ImageView tv_head_left,tv_head_img,right_image;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_details);
        $=SNManager.instence(this);
        initTitle();
        video = (VideoView) findViewById(R.id.video);
        lianyungang=getLianyungangVideoName();
        uri = "android.resource://" + this.getPackageName() + "/" ;

        proVideo=(ImageView)this.findViewById(R.id.proVideo);
        playVideo=(ImageView)this.findViewById(R.id.playVideo);
        playVideo.setBackgroundResource(R.drawable.pause);
        nextVideo=(ImageView)this.findViewById(R.id.nextVideo);

        playVideoViewVideo(setVideoName());

        playVideo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initPlayClickData();
            }
        });

        proTag=Integer.parseInt(lianyungang.getVideoTag());
        proVideo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(proTag==0){
                    proTag=7;
                }
                ProPlay(proTag--);
                currentPosition=proTag;
            }
        });
        nextVideo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(proTag==7){
                    proTag=0;
                }
                NextPlay(proTag++);
                currentPosition=proTag;
            }
        });
    }

    public void initTitle(){
        tv_head_left=(ImageView)this.findViewById(R.id.tv_head_left);
        tv_head_img=(ImageView)this.findViewById(R.id.tv_head_img);
        right_image=(ImageView)this.findViewById(R.id.right_image);

        tv_head_left.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                $.startActivity(VideoActivity.class,8);
                //gotoActivity(VideoActivity.class,true);
            
}
        });
        tv_head_img.setBackgroundResource(R.drawable.video_shaddow);
        right_image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initMenu();
            }
        });
    }

    private static final int HAIYANG_YINGXIANG = 0;
    private static final int HAIYANG_YINXIANG = 1;
    private static final int HAIYANG_SHENGWU = 2;
    private static final int HAIYANG_ZIYUANKU = 3;
    private static final int HAIYANG_LENGZHISHI = 4;
    private static final int HAIYANG_HAIYU = 5;
    private MyPopWindow mMenu;

    private void initMenu() {

        mMenu = new MyPopWindow(getBaseContext());

        //mMenu.addItem(str, HAIYANG_YINGXIANG);
        
mMenu.addItem("海洋印象", HAIYANG_YINXIANG);
        mMenu.addItem("海洋生物", HAIYANG_SHENGWU);
        mMenu.addItem("本地资源库", HAIYANG_ZIYUANKU);
        mMenu.addItem("海洋冷知识", HAIYANG_LENGZHISHI);
        mMenu.addItem("连云港海域", HAIYANG_HAIYU);
        mMenu.setOnItemSelectedListener(new PopMenu.OnItemSelectedListener() {
            @Override
            public void selected(View view, PopMenu.Item item, int position) {
                switch (item.id) {
                    case HAIYANG_YINXIANG:
                        gotoActivity(PictureActivity.class,true);
                        break;
                    case HAIYANG_SHENGWU:
                        gotoActivity(ClassActivity.class,true);
                        break;
                    case HAIYANG_ZIYUANKU:
                        gotoActivity(LocalActivity.class,true);
                        break;
                    case HAIYANG_LENGZHISHI:
                        gotoActivity(KnlowledgeActivity.class,true);
                        break;
                    case HAIYANG_HAIYU:
                        gotoActivity(SeaActivity.class,true);
                        break;
                }
            }
        });

        mMenu.showAsDropDown(right_image);
    }

    public void initPlayClickData(){
        if(flag==1){
            playVideo.setBackgroundResource(R.drawable.pause);
           // playVideoViewVideo(setVideoName());
            
startVideo();
            flag=0;
        }else if(flag==0){
            playVideo.setBackgroundResource(R.drawable.play);
            stopVideo();
            flag=1;
        }
    }

    public String setVideoName(){
        String []videoProPath={uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4};
        if(currentPosition==0){
            currentPosition=Integer.parseInt(lianyungang.getVideoTag());
        }
        String videoPath=videoProPath[currentPosition];
        return videoPath;
    }

    public void NextPlay(int position){
        String []videoProPath={uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4};
        Animation alphaAnimation= AnimationUtils.loadAnimation(VideoDetailsActivity.this, R.anim.alpha_anim_true);
        playVideo.setBackgroundResource(R.drawable.pause);
        playVideo.startAnimation(alphaAnimation);
        flag=0;
        playVideoViewVideo(videoProPath[++position]);
    }

    public void ProPlay(int position){
        String []videoProPath={uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4};
        Animation alphaAnimation= AnimationUtils.loadAnimation(VideoDetailsActivity.this, R.anim.alpha_anim_true);
        playVideo.setBackgroundResource(R.drawable.pause);
        playVideo.startAnimation(alphaAnimation);
        flag=0;
        playVideoViewVideo(videoProPath[--position]);
    }

    public void playVideoViewVideo(String videoUri) {
        video.setVideoURI(Uri.parse(videoUri));
        video.start();
        video.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                $.toast("视频播放完毕", 0);
            }
        });
    }

    public void stopVideo(){
        video.pause();
    }
    public void startVideo(){
        video.start();
    }
    public lianyungang getLianyungangVideoName(){
        return  (lianyungang) $.getActivity().getIntent().getSerializableExtra(VideoDetailsActivity.STRING_VIDEO_DETAILS);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值