NiceVieoPlayer

简介:MediaPlayer+TextureView,完美切换全屏、小窗口的 Android 视频播放器
更多:作者   提 Bug   官网   
标签:

Features

用 IjkPlayer/MediaPlayer + TextureView 封装,可切换 IjkPlayer、MediaPlayer.

支持本地和网络视频播放.

完美切换小窗口、全屏,可在 RecyclerView、ListView 中无缝全屏.

手势滑动调节播放进度、亮度、声音.

可自定义控制界面

Usage

下载 niceviewoplayer 库,在 AndroidSutio 中作为 Mudule 添加依赖。

或者在 Gradle 中添加依赖:

allprojects {
    repositories {
    ...
    maven { url 'https://jitpack.io' }
    }
}

dependencies {
    compile 'com.github.xiaoyanger0825:NiceVieoPlayer:v1.5'
}

1.在 Activity 中使用:

 private void init() {
      mNiceVideoPlayer = (NiceVideoPlayer) findViewById(R.id.nice_video_player);
      mNiceVideoPlayer.setPlayerType(NiceVideoPlayer.PLAYER_TYPE_IJK); // or NiceVideoPlayer.PLAYER_NATIVE
      mNiceVideoPlayer.setUp(mVideoUrl, null);
      // 默认的控制器,如需自定义,可继承 NiceVideoPlayer 自己实现
      TxVideoPlayerController controller = new TxVideoPlayerController(this);
      controller.setTitle(mTitle);
      controller.setImage(mImageUrl);
      mNiceVideoPlayer.setController(controller);
  }

  // 按下 Home 键暂停播放,回到界面继续播放。
  @Override
  protected void onStop() {
      NiceVideoPlayerManager.instance().pauseNiceVideoPlayer();
      super.onStop();
  }

  @Override
  protected void onRestart() {
      NiceVideoPlayerManager.instance().restartNiceVideoPlayer();
      super.onRestart();
  }

  // 按返回键
  // 当前是全屏或小窗口,需要先退出全屏或小窗口。
  @Override
  public void onBackPressed() {
      if (NiceVideoPlayerManager.instance().onBackPressd()) {
          return;
      }
      super.onBackPressed();
  }

  @Override
  protected void onDestroy() {
      // 很重要,在 Activity 和 Fragment 的 onStop 方法中一定要调用,释放的播放器。
      NiceVideoPlayerManager.instance().releaseNiceVideoPlayer();
      super.onDestroy();
  }

2.在 RecyclerView 列表中使用需要监听 itemView detach:

mRecyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
    @Override
    public void onChildViewAttachedToWindow(View view) {

    }

    @Override
    public void onChildViewDetachedFromWindow(View view) {
        NiceVideoPlayer niceVideoPlayer = (NiceVideoPlayer) view.findViewById(R.id.nice_video_player);
        if (niceVideoPlayer != null) {
            niceVideoPlayer.release();
        }
    }
});

3.自定义控制界面

public class CustomController extends NiceVideoPlayerController {
    // 实现自己的控制界面
    ...
}

... 

public class MainActivity extends AppCompatActivity {

    private NiceVideoPlayer mNiceVideoPlayer;

      @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 使用自定义的 CustomContorller
            mNiceVideoPlayer = (NiceVideoPlayer) findViewById(R.id.nice_video_player);
            CustomContorller controller = new CostomController(this);
            ...// mNiceVideoPlayerh 和 controller 的其他设置
            mNiceVideoPlayer.setController(controller);
        }
}

Proguard

-keep class tv.danmaku.ijk.media.player.**{*;}

Demo

Android 开发经验分享
用了一年多的理财推荐
Android 开发经验分享
用了一年多的理财推荐