使用VideoView做个实用的视频播放器
目錄
- 最終效果圖
- 前言
- 布局文件
- VideoView的使用
- 橫豎屏切換
- 文件選擇
- 手勢調節(jié)音量
- 最后
最終效果圖
前言
這里用VideoView寫一個播放器, 可以橫豎屏, 可以選文件, 可以暫停, 可以快進后退, 可以進度條拖動, 可以觸屏調節(jié)音量. 來看看怎么實現(xiàn)的吧!
布局文件
用RelativeLayout包裹VideoView是要點, 常規(guī)設置會形變的. 當然了, 還要重寫onConfigurationChanged, 見后面橫豎屏切換.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:context="com.so.mymedia.ui.activity.MainActivity"tools:showIn="@layout/activity_main"><RelativeLayoutandroid:id="@+id/rl_vv"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:color/black"android:minHeight="200dp"><VideoViewandroid:id="@+id/vv_video"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerInParent="true" /></RelativeLayout> </RelativeLayout> 復制代碼VideoView的使用
VideoView使用起來非常簡單, 設置好MediaController, 然后設置URI或者是Path, 然后start開始就好. 這里的要點是一些使用功能的實現(xiàn). 可以查閱官方文檔.
橫豎屏切換
第一步是到配置文件里面設置. 在activity標簽下添加android:configChanges="keyboard|orientation|screenSize". 這樣的話, 屏幕切換的時候不會去調用onStop等方法. 我們在Toolbar里面添加切換橫豎屏按鈕, 然后重寫onConfigurationChanged.
@Override public void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);if (mVvVideo == null) {return;}if (this.getResources().getConfiguration().orientation== Configuration.ORIENTATION_LANDSCAPE) {// 橫屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);getWindow().getDecorView().invalidate();float height = new ScreenUtil(this).getAppWidth();float width = new ScreenUtil(this).getAppHeight();mRlVv.getLayoutParams().height = (int) width;mRlVv.getLayoutParams().width = (int) height;} else {// 豎屏final WindowManager.LayoutParams attrs = getWindow().getAttributes();attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);getWindow().setAttributes(attrs);getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);float width = new ScreenUtil(this).getAppWidth();float height = DisplayUtil.dp2px(this, 200.f);mRlVv.getLayoutParams().height = (int) height;mRlVv.getLayoutParams().width = (int) width;} } 復制代碼里面有幾個uitl, 都是常見的封裝, 不多說了. 這樣就可以實現(xiàn)橫豎屏切換了.
文件選擇
關于文件選擇器, 請查看我之前的文章. 然后就是要返回選中的文件路徑. 這是Intent的常規(guī)使用了. 不多說了.
手勢調節(jié)音量
添加觸摸監(jiān)聽, 然后用手勢操作實現(xiàn). 然后是依據(jù)上下劃方向確定增大還是減小音量. 調節(jié)音量的代碼也是很常規(guī)的了.
@Override public boolean onTouch(View v, MotionEvent event) {return mGestureDetector.onTouchEvent(event); } 復制代碼@Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {float v = e2.getY() - e1.getY();if (Math.abs(v) > 10) {setVoiceVolume(v);}return true; } 復制代碼private void setVoiceVolume(float value) {int currentVolume = mAM.getStreamVolume(AudioManager.STREAM_MUSIC);int maxVolume = mAM.getStreamMaxVolume(AudioManager.STREAM_MUSIC);int flag = value > 0 ? -1 : 1;currentVolume += flag * 0.15 * maxVolume;mAM.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, 0); } 復制代碼最后
如果想更多的DIY, 可以考慮使用SurfaceView, 但是VideoView大部分時候也夠用了. 喜歡記得點贊或者關注我, 有意見或者建議評論區(qū)見.
總結
以上是生活随笔為你收集整理的使用VideoView做个实用的视频播放器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 琼脂粉的用法和用途
- 下一篇: WebApi项目创建CURD