android 高仿苹果listview,GitHub - open-android/JieCaoVideoPlayer: 高仿今日头条ListView视频播放和优酷视频播放悬浮窗...

##主要特点

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

可以完全自定义UI

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

手势修改进度和音量

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

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

重力感应自动全屏

WebView嵌套本地视频控件

小于 100kb

##效果

ff63b852f08d2906c2aef4fe6cfe845b.gif

爱生活,爱学习,更爱做代码的搬运工,分类查找更方便请下载黑马助手app

使用步骤

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

allprojects {

repositories {

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

}

}

6b82f9b8fde04d2414b5e0ff4a1e89aa.png

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

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

3.添加权限

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

android:id="@+id/videoplayer"

android:layout_width="match_parent"

android:layout_height="200dp" />

8.在AndroidManifest.xml中

android:name=".MainActivity"

android:configChanges="orientation|screenSize|keyboardHidden"

android:screenOrientation="portrait" />

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

欢迎关注微信公众号

687474703a2f2f6f69356e716e3663652e626b742e636c6f7564646e2e636f6d2f69746865696d612f626f6f737465722f636f64652f7172636f64652e706e67

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值