最近在做一个主播类的App,里面涉及到视频播放,之前没有接触过,在探索一阵后能够播放基本视频了。特此写下小记,方便日后查看。
首先,确定使用
VideoView
进行视频播放。
在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件。
调用VideoView的如下两个方法来加载指定的视频:
setVidePath(String path):加载path文件代表的视频
setVideoURI(Uri uri):加载uri所对应的视频
调用VideoView的start()、stop()、psuse()等方法来控制视频的播放。
若要显示进度条,可结合
MediaController
一起使用。
下面代码进行说明。
布局文件:
1 2 3 4 5 6 7 8 9 10 11
<? xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android ="http://schemas.android.com/apk/res/android" android:layout_width ="match_parent" android:layout_height ="match_parent" > <VideoView android:id ="@+id/video_view" android:layout_width ="match_parent" android:layout_height ="match_parent" /> </RelativeLayout >
Activity:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public class VideoPlayActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R .layout.activity_video_play); VideoView videoView = (VideoView ) this .findViewById(R .id.video_view); videoView.setMediaController(new MediaController (this )); videoView.setVideoPath("你的视频路径" ); videoView.requestFocus(); videoView.start(); videoView.setOnCompletionListener(new MediaPlayer .OnCompletionListener () { @Override public void onCompletion(MediaPlayer mp) { finish(); } }); } }
因为视频播放一般是全屏,直接使用系统的FullScreen会提示需要使用AppCompat主题,所以我给Activity设置了一个style。
1 2 3 4 5 6
<style name ="NoTitleFullscreen" parent="AppTheme" > <item name ="android:windowNoTitle" >true </item > <item name ="windowActionBar" >false </item > <item name ="android:windowFullscreen" >true </item > <item name ="android:windowContentOverlay" >@null</item > </style>
1 2 3 4 5
<activity android:name =".ui.VideoPlayActivity" android:screenOrientation ="portrait" android:theme ="@style/NoTitleFullscreen" > </activity >
实际效果:
因为是虚拟机,效果看起来可能不太满意,但是至少视频是能播放了。
后续可能还有屏幕视频适配的问题,现在就不多说了,后面解决了再来更新。
问题:VideoView加载资源需要一定的耗时, 会造成短暂的黑屏现象。
如何避免播放前的黑屏现象呢?可以给videoview设置加载的监听,在加载前给一个遮罩,等资源加载完成后隐藏遮罩。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<FrameLayout android:id ="@+id/frameLayout1" android:layout_width ="fill_parent" android:layout_height ="fill_parent" android:layout_gravity ="center" android:layout_marginTop ="50dip" > <VideoView android:id ="@+id/geoloc_anim" android:layout_width ="fill_parent" android:layout_height ="172dip" android:layout_gravity ="top|center" android:visibility ="visible" /> <FrameLayout android:id ="@+id/placeholder" android:layout_width ="fill_parent" android:layout_height ="fill_parent" android:background ="@drawable/fondvert_anim" > </FrameLayout > </FrameLayout >
设置监听:
1 2 3 4 5 6 7 8 9
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared (MediaPlayer mediaPlayer) { View placeholder = findViewById(R.id.placeholder); placeholder.setVisibility(View.GONE); } });
今天是愚人节,节日快乐哦~
缺失模块。
1、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
2、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: true
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true