返回

用VideoView做个实用的视频播放器

Android

目录

  1. 最终效果图
  2. 前言
  3. 布局文件
  4. VideoView的使用
  5. 横竖屏切换
  6. 文件选择
  7. 手势调节音量
  8. 最后

前言

随着移动设备的普及,人们越来越习惯于在手机或平板电脑上观看视频。因此,在Android开发中,如何构建一个实用的视频播放器就变得尤为重要。本文将介绍如何使用VideoView在Android中构建一个实用的视频播放器,包括布局文件、VideoView的使用、横竖屏切换、文件选择和手势调节音量等功能。

布局文件

首先,我们需要创建一个布局文件来放置VideoView。布局文件的XML代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

在布局文件中,我们使用了一个RelativeLayout作为根布局,并将其宽度和高度都设置为match_parent,以便VideoView可以占据整个屏幕。然后,我们在RelativeLayout中添加了一个VideoView,并将其ID设置为videoView。

VideoView的使用

接下来,我们需要在代码中使用VideoView来播放视频。代码如下:

public class MainActivity extends AppCompatActivity {

    private VideoView videoView;

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

        videoView = findViewById(R.id.videoView);

        // 设置视频路径
        videoView.setVideoPath("path/to/video.mp4");

        // 准备播放视频
        videoView.prepareAsync();

        // 开始播放视频
        videoView.start();
    }
}

在代码中,我们首先获取VideoView的实例,然后设置视频路径、准备播放视频和开始播放视频。

横竖屏切换

在播放视频时,我们经常需要横竖屏切换。我们可以通过重写Activity的onConfigurationChanged()方法来实现横竖屏切换。代码如下:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // 如果是横屏
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // 设置视频View全屏显示
        videoView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
    }
    // 如果是竖屏
    else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        // 设置视频View恢复默认显示
        videoView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
    }
}

在onConfigurationChanged()方法中,我们根据屏幕方向来设置VideoView的显示方式。如果屏幕是横屏,我们设置VideoView全屏显示;如果屏幕是竖屏,我们设置VideoView恢复默认显示。

文件选择

我们还可以在视频播放器中添加文件选择功能,以便用户可以选择要播放的视频文件。我们可以使用Intent来实现文件选择。代码如下:

// 打开文件选择器
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("video/*");
startActivityForResult(intent, REQUEST_CODE_FILE_SELECT);

// 处理文件选择结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_CODE_FILE_SELECT && resultCode == RESULT_OK) {
        // 获取选择的视频文件路径
        Uri uri = data.getData();

        // 设置视频路径
        videoView.setVideoURI(uri);

        // 准备播放视频
        videoView.prepareAsync();

        // 开始播放视频
        videoView.start();
    }
}

在代码中,我们首先创建一个Intent对象并设置其类型为video/*,以便只显示视频文件。然后,我们使用startActivityForResult()方法打开文件选择器。当用户选择了一个视频文件后,onActivityResult()方法会被调用。在onActivityResult()方法中,我们获取选择的视频文件路径并将其设置给VideoView。最后,我们准备播放视频和开始播放视频。

手势调节音量

我们还可以在视频播放器中添加手势调节音量功能。我们可以使用GestureDetector来实现手势调节音量。代码如下:

// 创建GestureDetector对象
GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {

    // 处理水平滑动事件
    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        // 如果是向左滑动
        if (distanceX > 0) {
            // 调小音量
            videoView.setVolume(videoView.getVolume() - 0.1f);
        }
        // 如果是向右滑动
        else if (distanceX < 0) {
            // 调大音量
            videoView.setVolume(videoView.getVolume() + 0.1f);
        }
        return true;
    }
});

// 将GestureDetector对象添加到VideoView中
videoView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }
});

在代码中,我们首先创建一个GestureDetector对象并设置其监听器。在监听器的onScroll()方法中,我们根据水平滑动方向来调节音量。最后,我们将GestureDetector对象添加到VideoView中。这样,用户就可以通过手势来调节音量了。

最后

本文介绍了如何使用VideoView在Android中构建一个实用的视频播放器,包括布局文件、VideoView的使用、横竖屏切换、文件选择和手势调节音量等功能。希望对大家有所帮助。