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

 

资源下载此资源下载价格为10积分,νìρ免费,请先

如遇到链接失效请提交工单处理。

【下载提示】

1. 本站30000+源码及视频教程,除了热门商业代售区源码及课程外,只要有下载按钮的,终/身νìρ都可以免费下载。

2. 本站源码及教程来自30多个渠道采购,资源描述为转载资源站点内容,本站没有精力一一测试,可能搭建失败。

3. 本站开通数十站点会/员,资源过多,大部分无法亲自测试,源码有可能存在缺\\\\陷或者不完整的风险,仅供参考&研究。确认购买视为接受该风险,由于源码具有可复\\\\制性,不接受任何理由退\\\\款!!!

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

5. 充积分比例:1:1。

6. 所有源码包含安装教程与否,请仔细观看资源描述。

7. 所有源码不提供代安装搭建,如有疑问请提提交工单。

资源下载
下载需要:10 积分
νìρ特权:免费

如遇到链接失效请提交工单处理。

【下载提示】

1. 本站30000+源码及视频教程,除了热门商业代售区源码及课程外,只要有下载按钮的,终/身νìρ都可以免费下载。

2. 本站源码及教程来自30多个渠道采购,资源描述为转载资源站点内容,本站没有精力一一测试,可能搭建失败。

3. 本站开通数十站点会/员,资源过多,大部分无法亲自测试,源码有可能存在缺\\\\陷或者不完整的风险,仅供参考&研究。确认购买视为接受该风险,由于源码具有可复\\\\制性,不接受任何理由退\\\\款!!!

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

5. 充积分比例:1:1。

6. 所有源码包含安装教程与否,请仔细观看资源描述。

7. 所有源码不提供代安装搭建,如有疑问请提提交工单。

Android高仿今日头条ListView视频播放和优酷视频播放悬浮窗原文链接:https://www.qwzy8.com/28781.html

广告位招租

评论0

请先

           
1,如有问题请前往用户中心提交工单,12小时内回复!
2,投稿优质资源可获得最长本站置顶广告位推荐,收益100%归作者所有,可提现!
3,欢迎发布其他站点购买的各类源码教程资源,支持置换本站各类资源!
没有账号? 注册  忘记密码?