1. 源码屋首页
  2. 模块插件
  3. 小程序源码
  4. 安卓源码

Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗

 

主要特点

视频全屏播放和浮层小窗播放

可以完全自定义UI

能在ListView、ViewPager和ListView、ViewPager和Fragment等多重嵌套模式下全屏工作

手势修改进度和音量

视频大小的屏幕适配,宽或长至少有两个对边是充满屏幕的,另外两个方向居中

可以在加载、暂停、播放等各种状态中正常进入全屏和退出全屏

重力感应自动全屏

WebView嵌套本地视频控件

[支持https和rtsp]{https://developer.android.com/guide/topics/media/media-formats.html}

小于 100kb

效果

jiecaovideoplayer-5.3.apk

Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗

使用步骤

1. 在project的build.gradle添加如下代码(如下图)

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

Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗

2. 在Module的build.gradle添加依赖

  compile 'com.github.open-android:JieCaoVideoPlayer:0.1.0'

3.添加权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

4.在Activity中添加如下代码

listView = (ListView) findViewById(R.id.listview);
adapterVideoList = new VideoListAdapter(this);
listView.setAdapter(adapterVideoList);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorEventListener = new JCVideoPlayer.JCAutoFullscreenListener();

5.在Activity监听如下生命周期方法

@Override
public void onBackPressed() {
    if (JCVideoPlayer.backPress()) {
        return;
    }
    super.onBackPressed();
}

@Override
protected void onResume() {
    super.onResume();
    Sensor accelerometerSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sensorManager.registerListener(sensorEventListener, accelerometerSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onPause() {
    super.onPause();
    sensorManager.unregisterListener(sensorEventListener);
    JCVideoPlayer.releaseAllVideos();
}

6.新建一个Adapter继承BaseAdapter并且复制如下代码

public static final String TAG = "JieCaoVideoPlayer";

int[] videoIndexs = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
Context context;
int pager = -1;

public VideoListAdapter(Context context) {
    this.context = context;
}

public VideoListAdapter(Context context, int pager) {
    this.context = context;
    this.pager = pager;
}

@Override
public int getCount() {
    return pager == -1 ? videoIndexs.length : 4;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder;
    if (null == convertView) {
        viewHolder = new ViewHolder();
        LayoutInflater mInflater = LayoutInflater.from(context);
        convertView = mInflater.inflate(R.layout.item_videoview, null);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.jcVideoPlayer = (JCVideoPlayerStandard) convertView.findViewById(R.id.videoplayer);
    if (pager == -1) {
        viewHolder.jcVideoPlayer.setUp(
                VideoConstant.videoUrls[0][position], JCVideoPlayer.SCREEN_LAYOUT_LIST,
                VideoConstant.videoTitles[0][position]);
        System.out.println("fdsfdsfdsfdsfa setup " + position);
        Picasso.with(convertView.getContext())
                .load(VideoConstant.videoThumbs[0][position])
                .into(viewHolder.jcVideoPlayer.thumbImageView);
    } else {
        viewHolder.jcVideoPlayer.setUp(
                VideoConstant.videoUrls[pager][position], JCVideoPlayer.SCREEN_LAYOUT_LIST,
                VideoConstant.videoTitles[pager][position]);
        Picasso.with(convertView.getContext())
                .load(VideoConstant.videoThumbs[pager][position])
                .into(viewHolder.jcVideoPlayer.thumbImageView);
    }
    return convertView;
}

class ViewHolder {
    JCVideoPlayerStandard jcVideoPlayer;
}

7.添加Adapter的item布局R.layout.item_videoview

<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
    android:id="@+id/videoplayer"
    android:layout_width="match_parent"
    android:layout_height="200dp" />

8.在AndroidManifest.xml中

<activity
    android:name=".MainActivity"
    android:configChanges="orientation|screenSize|keyboardHidden"
    android:screenOrientation="portrait" /> <!-- or android:screenOrientation="landscape"-->

完成如上步骤就可以实现今日头条视频播放列表功能 , 更多功能请参考样例工程app

 

恭喜,此资源为免费资源,请先

【风险提示】写在付款前:

1. 全站6000+源码,除了热门商业区的几十个源码外,只要有下载按钮的,终身VIP都可以免费下载。

2. 本站源码大多全网各种渠道采购,文章描述一般系转载渠道方的测试描述,不代表本站观点。但是文章开头带演示的源码,代表本站亲自测试过,至少表示能搭建起来,一般没什么大问题,可以放心购买。

=======================================

3. 文章开头没有演示站的,表示我们没有来得及亲自测试,源码有存在缺陷的风险,所以低价出售。一旦购买视为接受该风险,将无法退款!!!但是,同时你也有可能捡便宜。因为,很多是渠道方测试过的,只是我们没有来得及亲测确认而已,如果我们亲测没问题的话,价格都会翻好多倍。

=======================================

4. 本站使用在线支付,付款完毕后,积分自动到账。

5. 充值比例:1:1。是否属于VIP免费下载,需登陆后显示。

6. 所有源码默认是没有 安装教程 的,如果里面有那也是随机的。

7. 所有源码不提供免费安装,如需我们代安装请联系客服详谈。

本文由(源码屋@)整理自网络,如转载请注明出处:https://www.yuanmawu.net/24337.html

本站发布的内容若侵犯到您的权益,请邮件联系 admin@yuanmawu.net  删除,我们将及时处理!

=========================================

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。

本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:admin@yuanmawu.net

QR code