这篇文章出了一个意外,意外的让我的文章写好了,没有保存。然后我点击保存也保存不了,我就不小心返回了,结果文章就没有了,所以也就白写了。
公众号这方面值得优化一下,在浏览器的兼容上面做的不是很好,我在chrome浏览器上面写的文章根本没办法发送,所以我就下载了一个火狐浏览器来写文章了。
所以这篇文章就来的晚了一点点,但是还好它还是来了。
今天我们继续来看看kotlin编写的一个视频解析对话框,还是老规矩,先上源码。
class VideoDialog : DialogFragment() {
companion object {
val TAG = VideoDialog::javaClass.name
lateinit var file: File
fun show(fragmentManager: FragmentManager, file: File) {
this.file = file
VideoDialog().show(fragmentManager, TAG)
}
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val view = activity!!.layoutInflater.inflate(R.layout.dialog_video_preview, null)
val videoView = view.findViewById<VideoView>(R.id.video_view)
val videoInfo = view.findViewById<AppCompatTextView>(R.id.video_info)
videoView.setVideoPath(file.path)
val mediaController = MediaController(activity)
mediaController.setAnchorView(videoView)
videoView.setMediaController(mediaController)
//Close this dialog on completion
videoView.setOnCompletionListener {
dismiss()
}
//Show duration of video
videoView.setOnPreparedListener {
@SuppressLint("SetTextI18n")
videoInfo.text = "Duration: ${Utils.milliSecondsToTimer(videoView.duration.toLong())}\n"
}
videoView.start()
return AlertDialog.Builder(activity)
.setView(view)
.setTitle("Preview")
.setPositiveButton("Cancel") { dialog, which ->
dismiss()
}
.create()
}
}
这套代码也很简单,里面就是一个DialogFragment弹窗,里面用到了几个安卓跟视频有关系的API,videoView控件,MediaController 视频控制器,用来控制视频的播放和暂停快进等等。
setOnPreparedListener 这个回调主要是在视频加载完毕准备播放的时候回调,这个对话框主要是用来做视频预览的功能,也很简单。
今天就讲解到这里,欢迎大家点击关注,点赞,谢谢了。