Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_26386469
GSYVideoPlayer
提交
2b07169c
G
GSYVideoPlayer
项目概览
qq_26386469
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
GSYVideoPlayer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2b07169c
编写于
1月 09, 2017
作者:
S
shuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add normal player recycler demo
上级
fccf1a22
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
353 addition
and
5 deletion
+353
-5
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+4
-0
app/src/main/java/com/example/gsyvideoplayer/MainActivity.java
...rc/main/java/com/example/gsyvideoplayer/MainActivity.java
+6
-1
app/src/main/java/com/example/gsyvideoplayer/RecyclerViewActivity.java
...java/com/example/gsyvideoplayer/RecyclerViewActivity.java
+126
-0
app/src/main/java/com/example/gsyvideoplayer/adapter/ListNormalAdapter.java
...com/example/gsyvideoplayer/adapter/ListNormalAdapter.java
+1
-1
app/src/main/java/com/example/gsyvideoplayer/adapter/RecyclerNormalAdapter.java
...example/gsyvideoplayer/adapter/RecyclerNormalAdapter.java
+63
-0
app/src/main/java/com/example/gsyvideoplayer/holder/RecyclerItemBaseHolder.java
...example/gsyvideoplayer/holder/RecyclerItemBaseHolder.java
+3
-3
app/src/main/java/com/example/gsyvideoplayer/holder/RecyclerItemNormalHolder.java
...ample/gsyvideoplayer/holder/RecyclerItemNormalHolder.java
+119
-0
app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java
...main/java/com/example/gsyvideoplayer/utils/JumpUtils.java
+13
-0
app/src/main/res/layout/activity_main.xml
app/src/main/res/layout/activity_main.xml
+7
-0
app/src/main/res/layout/activity_recycler_view.xml
app/src/main/res/layout/activity_recycler_view.xml
+11
-0
未找到文件。
app/src/main/AndroidManifest.xml
浏览文件 @
2b07169c
...
...
@@ -59,6 +59,10 @@
android:name=
".WebDetailActivity"
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".RecyclerViewActivity"
android:configChanges=
"orientation|keyboardHidden|screenSize"
android:screenOrientation=
"portrait"
/>
</application>
</manifest>
\ No newline at end of file
app/src/main/java/com/example/gsyvideoplayer/MainActivity.java
浏览文件 @
2b07169c
package
com.example.gsyvideoplayer
;
import
android.app.Activity
;
import
android.os.Bundle
;
import
android.support.v7.app.AppCompatActivity
;
import
android.view.View
;
...
...
@@ -26,7 +27,7 @@ public class MainActivity extends AppCompatActivity {
ButterKnife
.
bind
(
this
);
}
@OnClick
({
R
.
id
.
open_btn
,
R
.
id
.
list_btn
,
R
.
id
.
list_btn_2
,
R
.
id
.
list_detail
,
R
.
id
.
clear_cache
,
R
.
id
.
recycler_2
,
R
.
id
.
list_detail_list
,
R
.
id
.
web_detail
})
@OnClick
({
R
.
id
.
open_btn
,
R
.
id
.
list_btn
,
R
.
id
.
list_btn_2
,
R
.
id
.
list_detail
,
R
.
id
.
clear_cache
,
R
.
id
.
recycler
,
R
.
id
.
recycler
_2
,
R
.
id
.
list_detail_list
,
R
.
id
.
web_detail
})
public
void
onClick
(
View
view
)
{
switch
(
view
.
getId
())
{
case
R
.
id
.
open_btn
:
...
...
@@ -41,6 +42,10 @@ public class MainActivity extends AppCompatActivity {
//支持全屏重力旋转的列表播放,滑动后不会被销毁
JumpUtils
.
goToVideoPlayer2
(
this
);
break
;
case
R
.
id
.
recycler
:
//recycler的demo
JumpUtils
.
goToVideoRecyclerPlayer
(
this
);
break
;
case
R
.
id
.
recycler_2
:
//recycler的demo
JumpUtils
.
goToVideoRecyclerPlayer2
(
this
);
...
...
app/src/main/java/com/example/gsyvideoplayer/RecyclerViewActivity.java
0 → 100644
浏览文件 @
2b07169c
package
com.example.gsyvideoplayer
;
import
android.os.Build
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.transition.Explode
;
import
android.view.Window
;
import
com.example.gsyvideoplayer.adapter.ListNormalAdapter
;
import
com.example.gsyvideoplayer.adapter.RecyclerBaseAdapter
;
import
com.example.gsyvideoplayer.adapter.RecyclerNormalAdapter
;
import
com.example.gsyvideoplayer.model.VideoModel
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
com.shuyu.gsyvideoplayer.GSYVideoPlayer
;
import
com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
;
import
java.util.ArrayList
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
public
class
RecyclerViewActivity
extends
AppCompatActivity
{
@BindView
(
R
.
id
.
list_item_recycler
)
RecyclerView
videoList
;
LinearLayoutManager
linearLayoutManager
;
RecyclerBaseAdapter
recyclerBaseAdapter
;
List
<
VideoModel
>
dataList
=
new
ArrayList
<>();
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
// 设置一个exit transition
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
getWindow
().
requestFeature
(
Window
.
FEATURE_CONTENT_TRANSITIONS
);
getWindow
().
setEnterTransition
(
new
Explode
());
getWindow
().
setExitTransition
(
new
Explode
());
}
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_recycler_view
);
ButterKnife
.
bind
(
this
);
resolveData
();
final
RecyclerNormalAdapter
recyclerNormalAdapter
=
new
RecyclerNormalAdapter
(
this
,
dataList
);
linearLayoutManager
=
new
LinearLayoutManager
(
this
);
videoList
.
setLayoutManager
(
linearLayoutManager
);
videoList
.
setAdapter
(
recyclerNormalAdapter
);
videoList
.
addOnScrollListener
(
new
RecyclerView
.
OnScrollListener
()
{
int
firstVisibleItem
,
lastVisibleItem
;
@Override
public
void
onScrollStateChanged
(
RecyclerView
recyclerView
,
int
newState
)
{
super
.
onScrollStateChanged
(
recyclerView
,
newState
);
}
@Override
public
void
onScrolled
(
RecyclerView
recyclerView
,
int
dx
,
int
dy
)
{
super
.
onScrolled
(
recyclerView
,
dx
,
dy
);
firstVisibleItem
=
linearLayoutManager
.
findFirstVisibleItemPosition
();
lastVisibleItem
=
linearLayoutManager
.
findLastVisibleItemPosition
();
//大于0说明有播放
if
(
GSYVideoManager
.
instance
().
getPlayPosition
()
>=
0
)
{
//当前播放的位置
int
position
=
GSYVideoManager
.
instance
().
getPlayPosition
();
//对应的播放列表TAG
if
(
GSYVideoManager
.
instance
().
getPlayTag
().
equals
(
ListNormalAdapter
.
TAG
)
&&
(
position
<
firstVisibleItem
||
position
>
lastVisibleItem
))
{
//如果滑出去了上面和下面就是否,和今日头条一样
GSYVideoPlayer
.
releaseAllVideos
();
recyclerNormalAdapter
.
notifyDataSetChanged
();
}
}
}
});
}
@Override
public
void
onBackPressed
()
{
if
(
StandardGSYVideoPlayer
.
backFromWindowFull
(
this
))
{
return
;
}
super
.
onBackPressed
();
}
@Override
protected
void
onPause
()
{
super
.
onPause
();
GSYVideoManager
.
onPause
();
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
GSYVideoManager
.
onResume
();
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
GSYVideoPlayer
.
releaseAllVideos
();
}
private
void
resolveData
()
{
for
(
int
i
=
0
;
i
<
19
;
i
++)
{
VideoModel
videoModel
=
new
VideoModel
();
dataList
.
add
(
videoModel
);
}
if
(
recyclerBaseAdapter
!=
null
)
recyclerBaseAdapter
.
notifyDataSetChanged
();
}
}
app/src/main/java/com/example/gsyvideoplayer/adapter/ListNormalAdapter.java
浏览文件 @
2b07169c
...
...
@@ -149,7 +149,7 @@ public class ListNormalAdapter extends BaseAdapter {
//holder.gsyVideoPlayer.setLooping(true);
holder
.
gsyVideoPlayer
.
setNeedLockFull
(
true
);
holder
.
gsyVideoPlayer
.
setSpeed
(
2
);
//
holder.gsyVideoPlayer.setSpeed(2);
holder
.
gsyVideoPlayer
.
setPlayPosition
(
position
);
...
...
app/src/main/java/com/example/gsyvideoplayer/adapter/RecyclerNormalAdapter.java
0 → 100644
浏览文件 @
2b07169c
package
com.example.gsyvideoplayer.adapter
;
import
android.content.Context
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.example.gsyvideoplayer.R
;
import
com.example.gsyvideoplayer.holder.RecyclerItemNormalHolder
;
import
com.example.gsyvideoplayer.holder.RecyclerItemViewHolder
;
import
com.example.gsyvideoplayer.model.VideoModel
;
import
com.shuyu.gsyvideoplayer.utils.ListVideoUtil
;
import
java.util.List
;
/**
* Created by guoshuyu on 2017/1/9.
*/
public
class
RecyclerNormalAdapter
extends
RecyclerView
.
Adapter
{
private
final
static
String
TAG
=
"RecyclerBaseAdapter"
;
private
List
<
VideoModel
>
itemDataList
=
null
;
private
Context
context
=
null
;
public
RecyclerNormalAdapter
(
Context
context
,
List
<
VideoModel
>
itemDataList
)
{
this
.
itemDataList
=
itemDataList
;
this
.
context
=
context
;
}
@Override
public
RecyclerView
.
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
View
v
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
list_video_item_normal
,
parent
,
false
);
final
RecyclerView
.
ViewHolder
holder
=
new
RecyclerItemNormalHolder
(
context
,
v
);
return
holder
;
}
@Override
public
void
onBindViewHolder
(
final
RecyclerView
.
ViewHolder
holder
,
int
position
)
{
RecyclerItemNormalHolder
recyclerItemViewHolder
=
(
RecyclerItemNormalHolder
)
holder
;
recyclerItemViewHolder
.
setRecyclerBaseAdapter
(
this
);
recyclerItemViewHolder
.
onBind
(
position
,
itemDataList
.
get
(
position
));
}
@Override
public
int
getItemCount
()
{
return
itemDataList
.
size
();
}
@Override
public
int
getItemViewType
(
int
position
)
{
return
1
;
}
public
void
setListData
(
List
<
VideoModel
>
data
)
{
itemDataList
=
data
;
notifyDataSetChanged
();
}
}
app/src/main/java/com/example/gsyvideoplayer/holder/RecyclerItemBaseHolder.java
浏览文件 @
2b07169c
...
...
@@ -12,7 +12,7 @@ import com.shuyu.gsyvideoplayer.utils.ListVideoUtil;
public
class
RecyclerItemBaseHolder
extends
RecyclerView
.
ViewHolder
{
Recycler
Base
Adapter
recyclerBaseAdapter
;
Recycler
View
.
Adapter
recyclerBaseAdapter
;
ListVideoUtil
listVideoUtil
;
...
...
@@ -20,11 +20,11 @@ public class RecyclerItemBaseHolder extends RecyclerView.ViewHolder {
super
(
itemView
);
}
public
Recycler
Base
Adapter
getRecyclerBaseAdapter
()
{
public
Recycler
View
.
Adapter
getRecyclerBaseAdapter
()
{
return
recyclerBaseAdapter
;
}
public
void
setRecyclerBaseAdapter
(
Recycler
Base
Adapter
recyclerBaseAdapter
)
{
public
void
setRecyclerBaseAdapter
(
Recycler
View
.
Adapter
recyclerBaseAdapter
)
{
this
.
recyclerBaseAdapter
=
recyclerBaseAdapter
;
}
...
...
app/src/main/java/com/example/gsyvideoplayer/holder/RecyclerItemNormalHolder.java
0 → 100644
浏览文件 @
2b07169c
package
com.example.gsyvideoplayer.holder
;
import
android.content.Context
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.ImageView
;
import
com.example.gsyvideoplayer.R
;
import
com.example.gsyvideoplayer.listener.SampleListener
;
import
com.example.gsyvideoplayer.model.VideoModel
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
com.shuyu.gsyvideoplayer.utils.Debuger
;
import
com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
/**
* Created by guoshuyu on 2017/1/9.
*/
public
class
RecyclerItemNormalHolder
extends
RecyclerItemBaseHolder
{
public
final
static
String
TAG
=
"RecyclerView2List"
;
protected
Context
context
=
null
;
@BindView
(
R
.
id
.
video_item_player
)
StandardGSYVideoPlayer
gsyVideoPlayer
;
ImageView
imageView
;
public
RecyclerItemNormalHolder
(
Context
context
,
View
v
)
{
super
(
v
);
this
.
context
=
context
;
ButterKnife
.
bind
(
this
,
v
);
imageView
=
new
ImageView
(
context
);
}
public
void
onBind
(
final
int
position
,
VideoModel
videoModel
)
{
//增加封面
imageView
.
setScaleType
(
ImageView
.
ScaleType
.
CENTER_CROP
);
if
(
position
%
2
==
0
)
{
imageView
.
setImageResource
(
R
.
mipmap
.
xxx1
);
}
else
{
imageView
.
setImageResource
(
R
.
mipmap
.
xxx2
);
}
if
(
imageView
.
getParent
()
!=
null
)
{
ViewGroup
viewGroup
=
(
ViewGroup
)
imageView
.
getParent
();
viewGroup
.
removeView
(
imageView
);
}
gsyVideoPlayer
.
setThumbImageView
(
imageView
);
final
String
url
=
"http://baobab.wdjcdn.com/14564977406580.mp4"
;
//默认缓存路径
gsyVideoPlayer
.
setUp
(
url
,
true
,
null
,
"这是title"
);
//增加title
gsyVideoPlayer
.
getTitleTextView
().
setVisibility
(
View
.
GONE
);
//设置返回键
gsyVideoPlayer
.
getBackButton
().
setVisibility
(
View
.
GONE
);
//设置全屏按键功能
gsyVideoPlayer
.
getFullscreenButton
().
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
resolveFullBtn
(
gsyVideoPlayer
);
}
});
gsyVideoPlayer
.
setRotateViewAuto
(
true
);
gsyVideoPlayer
.
setLockLand
(
true
);
gsyVideoPlayer
.
setPlayTag
(
TAG
);
gsyVideoPlayer
.
setShowFullAnimation
(
true
);
//循环
//gsyVideoPlayer.setLooping(true);
gsyVideoPlayer
.
setNeedLockFull
(
true
);
//gsyVideoPlayer.setSpeed(2);
gsyVideoPlayer
.
setPlayPosition
(
position
);
gsyVideoPlayer
.
setStandardVideoAllCallBack
(
new
SampleListener
(){
@Override
public
void
onPrepared
(
String
url
,
Object
...
objects
)
{
super
.
onPrepared
(
url
,
objects
);
Debuger
.
printfLog
(
"onPrepared"
);
if
(!
gsyVideoPlayer
.
isIfCurrentIsFullscreen
())
{
//静音
GSYVideoManager
.
instance
().
setNeedMute
(
true
);
}
}
@Override
public
void
onQuitFullscreen
(
String
url
,
Object
...
objects
)
{
super
.
onQuitFullscreen
(
url
,
objects
);
//全屏不静音
GSYVideoManager
.
instance
().
setNeedMute
(
true
);
}
@Override
public
void
onEnterFullscreen
(
String
url
,
Object
...
objects
)
{
super
.
onEnterFullscreen
(
url
,
objects
);
GSYVideoManager
.
instance
().
setNeedMute
(
false
);
}
});
}
/**
* 全屏幕按键处理
*/
private
void
resolveFullBtn
(
final
StandardGSYVideoPlayer
standardGSYVideoPlayer
)
{
standardGSYVideoPlayer
.
startWindowFullscreen
(
context
,
true
,
true
);
}
}
\ No newline at end of file
app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java
浏览文件 @
2b07169c
...
...
@@ -14,7 +14,9 @@ import com.example.gsyvideoplayer.ListVideoActivity;
import
com.example.gsyvideoplayer.PlayActivity
;
import
com.example.gsyvideoplayer.R
;
import
com.example.gsyvideoplayer.RecyclerView2Activity
;
import
com.example.gsyvideoplayer.RecyclerViewActivity
;
import
com.example.gsyvideoplayer.WebDetailActivity
;
import
com.example.gsyvideoplayer.adapter.RecyclerNormalAdapter
;
/**
* Created by shuyu on 2016/11/11.
...
...
@@ -64,6 +66,17 @@ public class JumpUtils {
ActivityCompat
.
startActivity
(
activity
,
intent
,
activityOptions
.
toBundle
());
}
/**
* 跳转到视频列表
*
* @param activity
*/
public
static
void
goToVideoRecyclerPlayer
(
Activity
activity
)
{
Intent
intent
=
new
Intent
(
activity
,
RecyclerViewActivity
.
class
);
ActivityOptionsCompat
activityOptions
=
ActivityOptionsCompat
.
makeSceneTransitionAnimation
(
activity
);
ActivityCompat
.
startActivity
(
activity
,
intent
,
activityOptions
.
toBundle
());
}
/**
* 跳转到视频列表2
*
...
...
app/src/main/res/layout/activity_main.xml
浏览文件 @
2b07169c
...
...
@@ -35,6 +35,13 @@
android:layout_marginTop=
"20dp"
android:text=
"List Video2"
/>
<Button
android:id=
"@+id/recycler"
android:layout_width=
"120dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"recycler"
/>
<Button
android:id=
"@+id/recycler_2"
android:layout_width=
"120dp"
...
...
app/src/main/res/layout/activity_recycler_view.xml
0 → 100644
浏览文件 @
2b07169c
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/activity_recycler_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/list_item_recycler"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</RelativeLayout>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录