Android开发经验谈Android开发Android开发

视频播放器-IPlayer-列表播放、全屏播放、重力自动旋转、清

2018-12-04  本文已影响24人  Hacknife

爱播支持列表播放、全屏播放、重力自动旋转、清晰度切换、播放引擎切换、自定义主题颜色等。
https://github.com/hacknife/IPlayer

G_1203210711.gif G_1203210804.gif G_1203210908.gif G_1203211011.gif G_1203211119.gif G_1203211240.gif G_1203211322.gif G_1203212834.gif G_1203212914.gif

特点

属性说明

属性 功能 默认状态
enableTitleBar 是否启用标题栏 boolean
enableBottomBar 是否启用控制栏 boolean
enableBottomProgressBar 是否启用底部进度条 boolean
enableEnlarge 是否启用全屏按钮 boolean
enableClarity 非全屏模式下是否启用播放源切换 boolean
enableShowWifiDialog 非wifi条件下播放视频是否提示用户 boolean
enableCache 是否启用缓存 boolean
enableTinyWindow 视频列表中是否启用小窗口播放 boolean
tinyWindowWidth 小窗口宽度 dimension 默认为普通窗口的2/5
tinyWindowHeight 小窗口高度 dimension 默认为普通窗口的2/5
screenType 普通窗口中,视频内容显示的方式 adapter/fillCrop/fillParent/original adapter
screenTypeFull 全屏窗口中,视频内容显示的方式 adapter/fillCrop/fillParent/original adapter
screenTypeTiny 小窗口中,视频内容显示的方式 adapter/fillCrop/fillParent/original adapter
orientationFullScreen 全屏模式中,Activity的方向 vertical/horizontal 重力感应自动旋转

快速引入项目

需要使用的module中添加引用

dependencies {
    implementation 'com.hacknife:iplayer:1.2.4'
    //可选
    implementation 'com.hacknife.ijkplayer:ijkplayer-java:0.8.8'
    implementation 'com.hacknife.ijkplayer:ijkplayer-exo:0.8.8'
    implementation 'com.hacknife.ijkplayer:ijkplayer-armv7a:0.8.8'
    implementation 'com.hacknife.ijkplayer:ijkplayer-armv5:0.8.8'
    implementation 'com.hacknife.ijkplayer:ijkplayer-arm64:0.8.8'
    implementation 'com.hacknife.ijkplayer:ijkplayer-86:0.8.8'
    implementation 'com.hacknife.ijkplayer:ijkplayer-86_64:0.8.8'
}

使用说明

Step1.配置播放器主题色

在APP主题中添加如下属性

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="iplayer_primary_color">#00aeff</item>
    </style>

Step2.设置封面加载器

实现ImageLoader中的方法

public class CoverLoader implements ImageLoader {
    @Override
    public void onLoadCover(ImageView cover, String coverUrl) {
        Glide.with(cover).load(coverUrl).into(cover);
    }
}

Step3.播放器生命周期管理

设置图片加载器和添加爱播生命周期管理器,播放引擎可选,如果不设置默认使用系统自带的MediaPlayer

    Player.setPlayerEngine(new IjkEngine());
    Player.setImageLoader(new CoverLoader());
    Application.registerActivityLifecycleCallbacks(new PlayerLifecycleCallbacks());

Step4.添加布局

    <com.hacknife.iplayer.IPlayer
        android:id="@+id/player"
        android:layout_width="match_parent"
        android:layout_height="match_parent"  />

Step5.设置数据源

        DataSource source = new DataSource.Builder()
                .url("标清", Constant.url[0])
                .url("高清", Constant.url[1])
                .url("超清", Constant.url[2])
                .url("蓝光", Constant.url[3])
                .title(Constant.title[0])
                .cover(Constant.img[0])
                .build();
        player.setDataSource(source, ContainerMode.CONTAINER_MODE_NORMAL);
        player.setDataSource(String url, String title, String cover, ContainerMode containerMode, int position)

Step6.返回

如果启用了全屏播放或者小窗口播放,需要实现以下方法

    public void onBackPressed() {
        if (Player.backPress()) return;
        super.onBackPressed();
    }

Step7.AndroidManifest

    <activity
            android:name=".DemoActivity"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:screenOrientation="portrait"/>

更多使用方式请参考demo

扫码体验一下吧

qrcode.png
上一篇下一篇

猜你喜欢

热点阅读