Android利用自定義VideoView輕鬆實現用視訊做背景
阿新 • • 發佈:2019-02-06
前言:有人問我,即便夢想成真了又能怎樣,或許不能怎樣,但這是夢想。
介紹:最近開發需要弄一個像QQ一樣的登陸介面(介面要用視訊做背景),上網發現這個博主介紹的比較好,便轉載來分享給更多的人。
先看看效果
注意事項(程式碼裡也標註出來了):
- 視訊資源要新增res資料夾下建立raw資料夾
- 需要在onRestart()方法裡重新載入視訊,防止退出返回時視訊黑屏
- 我這樣寫簡單粗暴而已,當然,也可優雅的以自己看播放控制元件的VideoView處理方法,去處理資源釋放和播放顯示的問題。
- 記得修改佈局控制元件
/**
* Created by DaQiE on 2017/2/20 0020.
*/
public classCustomVideoViewextendsVideoView {
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 classMainActivityextendsAppCompatActivity {
//建立播放視訊的控制元件物件
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"?>
<RelativeLayoutxmlns: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>