Android利用自定义VideoView轻松实现用视频做背景

前言:有人问我,即便梦想成真了又能怎样,或许不能怎样,但这是梦想。

介绍:最近开发需要弄一个像QQ一样的登陆界面(界面要用视频做背景),上网发现这个博主介绍的比较好,便转载来分享给更多的人。

先看看效果

效果图

单张图片

这里写图片描述

这里写图片描述


注意事项(代码里也标注出来了):

  • 视频资源要添加res文件夹下创建raw文件夹
  • 需要在onRestart()方法里重新加载视频,防止退出返回时视频黑屏
  • 我这样写简单粗暴而已,当然,也可优雅的以自己看播放控件的VideoView处理方法,去处理资源释放和播放显示的问题。
  • 记得修改布局控件
/**
 * Created by DaQiE on 2017/2/20 0020.
 */

public class CustomVideoView extends VideoView {
    public CustomVideoView(Context context) {
        super(context);
    }

    public CustomVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //我们重新计算高度
        int width = getDefaultSize(0, widthMeasureSpec);
        int height = getDefaultSize(0, heightMeasureSpec);
        setMeasuredDimension(width, height);
    }
    @Override
    public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {
        super.setOnPreparedListener(l);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return super.onKeyDown(keyCode, event);
    }
}

**主要代码类:
MainActivity**

/**
 * 视频资源要添加res文件夹下创建raw文件夹
 * 需要在onRestart()方法里重新加载视频,防止退出返回时视频黑屏
 * 我这样写简单粗暴而已,当然,也可优雅的以自己看播放控件的VideoView处理方法,去处理资源释放和播放显示的问题。
 * 记得修改布局控件<com.daqie.videobackground.CustomVideoView...引用的包名,不然会报错哦
 * android:screenOrientation="portrait" 习惯性的把横竖屏切换也设置一下
 * android:theme="@style/Theme.AppCompat.Light.NoActionBar" ActionBar也可以设置成不显示的状态,可以根据自己喜好和项目需求
 */
public class MainActivity extends AppCompatActivity {
    //创建播放视频的控件对象
    private CustomVideoView videoview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //加载数据
        initView();
    }

    private void initView() {
        //加载视频资源控件
        videoview = (CustomVideoView) findViewById(R.id.videoview);
        //设置播放加载路径
        videoview.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video));
        //播放
        videoview.start();
        //循环播放
        videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                videoview.start();
            }
        });
    }

    //返回重启加载
    @Override
    protected void onRestart() {
        initView();
        super.onRestart();
    }

    //防止锁屏或者切出的时候,音乐在播放
    @Override
    protected void onStop() {
        videoview.stopPlayback();
        super.onStop();
    }
}

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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.daqie.videobackground.MainActivity">

    <com.daqie.videobackground.CustomVideoView
        android:id="@+id/videoview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />
</RelativeLayout>

转载地址:https://blog.csdn.net/w630886916/article/details/60780371

猜你喜欢

转载自blog.csdn.net/weixin_38364803/article/details/79672040