Android: VideoView做背景仿常见APP登录动态页面

登录布局就略过了。。。

关键是自定义了一下videoview并加载作为布局的背景。

package com.yinlei.videoviewlogin

import android.content.Context
import android.media.MediaPlayer
import android.util.AttributeSet
import android.view.KeyEvent
import android.view.View
import android.widget.VideoView

class CustomVideoView : VideoView{
    constructor(context: Context?) : this(context,null)
    constructor(context: Context?,attrs: AttributeSet?) : this(context,attrs,0)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        //重新计算高度
        val width = getDefaultSize(0,widthMeasureSpec)
        val height = getDefaultSize(0,heightMeasureSpec)

        setMeasuredDimension(width,height)
    }


    override fun setOnPreparedListener(l: MediaPlayer.OnPreparedListener?) {
        super.setOnPreparedListener(l)
    }

    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        return super.onKeyDown(keyCode, event)
    }

}
package com.yinlei.videoviewlogin

import android.media.MediaPlayer
import android.net.Uri
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val uriStrings = arrayListOf()
    var i = 0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        uriStrings.add("android.resource://$packageName/${R.raw.one}")
        uriStrings.add("android.resource://$packageName/${R.raw.two}")
        //加载视频文件
        customVideoView.setVideoURI(Uri.parse(uriStrings[i]))
        //播放
        customVideoView.start()
        i++
        //监听播放状态
        customVideoView.setOnCompletionListener {
            customVideoView.setVideoURI(Uri.parse(uriStrings[i]))
            if(i==0){
                i += 1
            }else{
                i=0
            }
            customVideoView.start()
        }
//因为只有一个默认的接口方法,所以用Lambda
//        customVideoView.setOnCompletionListener(object: MediaPlayer.OnCompletionListener{
//            override fun onCompletion(mp: MediaPlayer?) {
//            }
//        })

    }
}

 




    
    

在activity代码中,简单的准备2 个视频,并循环加载播放他们。

Android: VideoView做背景仿常见APP登录动态页面_第1张图片

加载raw文件夹下的资源(raw名不能写错了):

 uriStrings.add("android.resource://$packageName/${R.raw.one}")
 //加载视频文件
  customVideoView.setVideoURI(Uri.parse(uriStrings[i]))
       

Android: VideoView做背景仿常见APP登录动态页面_第2张图片

 

 

 

 

 

 

你可能感兴趣的:(Android,Kotlin)