Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ac13
GSYVideoPlayer
提交
6ea9eba7
G
GSYVideoPlayer
项目概览
ac13
/
GSYVideoPlayer
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
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,体验更适合开发者的 AI 搜索 >>
提交
6ea9eba7
编写于
11月 13, 2016
作者:
S
shuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
全屏切换
上级
d5734aac
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
275 addition
and
5 deletion
+275
-5
app/src/main/java/com/example/gsyvideoplayer/ListVideoActivity.java
...in/java/com/example/gsyvideoplayer/ListVideoActivity.java
+10
-4
app/src/main/java/com/example/gsyvideoplayer/adapter/ListNormalAdapter.java
...com/example/gsyvideoplayer/adapter/ListNormalAdapter.java
+110
-0
app/src/main/res/layout/activity_list_video.xml
app/src/main/res/layout/activity_list_video.xml
+5
-0
app/src/main/res/layout/list_video_item_normal.xml
app/src/main/res/layout/list_video_item_normal.xml
+11
-0
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java
...rc/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java
+73
-0
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/CommonUtil.java
.../main/java/com/shuyu/gsyvideoplayer/utils/CommonUtil.java
+64
-0
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java
...in/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java
+2
-1
未找到文件。
app/src/main/java/com/example/gsyvideoplayer/ListVideoActivity.java
浏览文件 @
6ea9eba7
...
...
@@ -5,10 +5,13 @@ import android.os.Bundle;
import
android.support.v7.app.AppCompatActivity
;
import
android.transition.Explode
;
import
android.view.Window
;
import
android.widget.FrameLayout
;
import
android.widget.ListView
;
import
android.widget.RelativeLayout
;
import
com.example.gsyvideoplayer.adapter.ListNormalAdapter
;
import
com.example.gsyvideoplayer.adapter.ListVideoAdapter
;
import
com.shuyu.gsyvideoplayer.GSYVideoPlayer
;
import
com.shuyu.gsyvideoplayer.utils.ListVideoUtil
;
import
butterknife.BindView
;
...
...
@@ -21,7 +24,7 @@ public class ListVideoActivity extends AppCompatActivity {
@BindView
(
R
.
id
.
activity_list_video
)
RelativeLayout
activityListVideo
;
ListVideoAdapter
listVideoAdapter
;
//
ListVideoAdapter listVideoAdapter;
ListVideoUtil
listVideoUtil
;
@Override
...
...
@@ -38,9 +41,11 @@ public class ListVideoActivity extends AppCompatActivity {
listVideoUtil
=
new
ListVideoUtil
(
this
);
listVideoAdapter
=
new
ListVideoAdapter
(
this
,
listVideoUtil
);
listVideoAdapter
.
setRootView
(
activityListVideo
);
videoList
.
setAdapter
(
listVideoAdapter
);
//listVideoAdapter = new ListVideoAdapter(this, listVideoUtil);
//listVideoAdapter.setRootView(activityListVideo);
ListNormalAdapter
listNormalAdapter
=
new
ListNormalAdapter
(
this
);
videoList
.
setAdapter
(
listNormalAdapter
);
}
...
...
@@ -49,5 +54,6 @@ public class ListVideoActivity extends AppCompatActivity {
protected
void
onDestroy
()
{
super
.
onDestroy
();
listVideoUtil
.
releaseVideoPlayer
();
GSYVideoPlayer
.
releaseAllVideos
();
}
}
app/src/main/java/com/example/gsyvideoplayer/adapter/ListNormalAdapter.java
0 → 100644
浏览文件 @
6ea9eba7
package
com.example.gsyvideoplayer.adapter
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.os.Handler
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.BaseAdapter
;
import
android.widget.ImageView
;
import
com.example.gsyvideoplayer.R
;
import
com.example.gsyvideoplayer.model.VideoModel
;
import
com.shuyu.gsyvideoplayer.utils.OrientationUtils
;
import
com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Created by shuyu on 2016/11/12.
*/
public
class
ListNormalAdapter
extends
BaseAdapter
{
private
String
TAG
=
"TT"
;
private
List
<
VideoModel
>
list
=
new
ArrayList
<>();
private
LayoutInflater
inflater
=
null
;
private
Context
context
;
private
boolean
isFullVideo
;
public
ListNormalAdapter
(
Context
context
)
{
super
();
this
.
context
=
context
;
inflater
=
LayoutInflater
.
from
(
context
);
for
(
int
i
=
0
;
i
<
40
;
i
++)
{
list
.
add
(
new
VideoModel
());
}
}
@Override
public
int
getCount
()
{
return
list
.
size
();
}
@Override
public
Object
getItem
(
int
position
)
{
return
null
;
}
@Override
public
long
getItemId
(
int
position
)
{
return
0
;
}
@Override
public
View
getView
(
final
int
position
,
View
convertView
,
ViewGroup
parent
)
{
final
ViewHolder
holder
;
if
(
convertView
==
null
)
{
holder
=
new
ViewHolder
();
convertView
=
inflater
.
inflate
(
R
.
layout
.
list_video_item_normal
,
null
);
holder
.
gsyVideoPlayer
=
(
StandardGSYVideoPlayer
)
convertView
.
findViewById
(
R
.
id
.
video_item_player
);
convertView
.
setTag
(
holder
);
}
else
{
holder
=
(
ViewHolder
)
convertView
.
getTag
();
}
//增加封面
ImageView
imageView
=
new
ImageView
(
context
);
imageView
.
setScaleType
(
ImageView
.
ScaleType
.
CENTER_CROP
);
imageView
.
setImageResource
(
R
.
mipmap
.
xxx1
);
holder
.
gsyVideoPlayer
.
setThumbImageView
(
imageView
);
final
String
url
=
"http://baobab.wdjcdn.com/14564977406580.mp4"
;
holder
.
gsyVideoPlayer
.
setUp
(
url
,
true
,
""
);
//增加title
holder
.
gsyVideoPlayer
.
getTitleTextView
().
setVisibility
(
View
.
GONE
);
//设置返回键
holder
.
gsyVideoPlayer
.
getBackButton
().
setVisibility
(
View
.
GONE
);
//设置全屏按键功能
holder
.
gsyVideoPlayer
.
getFullscreenButton
().
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
resolveFullBtn
(
holder
.
gsyVideoPlayer
);
}
});
return
convertView
;
}
/**
* 全屏幕按键处理
*/
private
void
resolveFullBtn
(
final
StandardGSYVideoPlayer
standardGSYVideoPlayer
)
{
standardGSYVideoPlayer
.
startWindowFullscreen
(
context
,
false
,
true
);
isFullVideo
=
true
;
}
class
ViewHolder
{
StandardGSYVideoPlayer
gsyVideoPlayer
;
}
}
app/src/main/res/layout/activity_list_video.xml
浏览文件 @
6ea9eba7
...
...
@@ -9,4 +9,9 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
<FrameLayout
android:id=
"@+id/video_full_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</RelativeLayout>
app/src/main/res/layout/list_video_item_normal.xml
0 → 100644
浏览文件 @
6ea9eba7
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
android:id=
"@+id/video_item_player"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/post_media_height"
/>
</RelativeLayout>
\ No newline at end of file
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/GSYVideoPlayer.java
浏览文件 @
6ea9eba7
...
...
@@ -37,6 +37,9 @@ import java.util.TimerTask;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
import
static
com
.
shuyu
.
gsyvideoplayer
.
utils
.
CommonUtil
.
hideSupportActionBar
;
import
static
com
.
shuyu
.
gsyvideoplayer
.
utils
.
CommonUtil
.
showSupportActionBar
;
/**
* Created by shuyu on 2016/11/11.
*/
...
...
@@ -776,6 +779,72 @@ public abstract class GSYVideoPlayer extends FrameLayout implements View.OnClick
&&
GSYVideoManager
.
instance
().
listener
()
==
this
;
}
public
void
startWindowFullscreen
(
final
Context
context
,
final
boolean
actionBar
,
final
boolean
statusBar
)
{
hideSupportActionBar
(
context
,
actionBar
,
statusBar
);
ViewGroup
vp
=
(
ViewGroup
)
(
CommonUtil
.
scanForActivity
(
getContext
())).
findViewById
(
Window
.
ID_ANDROID_CONTENT
);
View
old
=
vp
.
findViewById
(
FULLSCREEN_ID
);
if
(
old
!=
null
)
{
vp
.
removeView
(
old
);
}
if
(
textureViewContainer
.
getChildCount
()
>
0
)
{
textureViewContainer
.
removeAllViews
();
}
try
{
Constructor
<
GSYVideoPlayer
>
constructor
=
(
Constructor
<
GSYVideoPlayer
>)
GSYVideoPlayer
.
this
.
getClass
().
getConstructor
(
Context
.
class
);
GSYVideoPlayer
gsyVideoPlayer
=
constructor
.
newInstance
(
getContext
());
gsyVideoPlayer
.
setId
(
FULLSCREEN_ID
);
WindowManager
wm
=
(
WindowManager
)
getContext
().
getSystemService
(
Context
.
WINDOW_SERVICE
);
int
w
=
wm
.
getDefaultDisplay
().
getWidth
();
int
h
=
wm
.
getDefaultDisplay
().
getHeight
();
FrameLayout
.
LayoutParams
lp
=
new
FrameLayout
.
LayoutParams
(
h
,
w
);
lp
.
setMargins
((
w
-
h
)
/
2
,
-(
w
-
h
)
/
2
,
0
,
0
);
vp
.
addView
(
gsyVideoPlayer
,
lp
);
gsyVideoPlayer
.
setUp
(
mUrl
,
mCache
,
mObjects
);
gsyVideoPlayer
.
setStateAndUi
(
mCurrentState
);
gsyVideoPlayer
.
addTextureView
();
gsyVideoPlayer
.
setRotation
(
90
);
gsyVideoPlayer
.
getFullscreenButton
().
setImageResource
(
R
.
drawable
.
video_shrink
);
gsyVideoPlayer
.
getFullscreenButton
().
setOnClickListener
(
new
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
clearFullscreenLayout
(
context
,
actionBar
,
statusBar
);
}
});
GSYVideoManager
.
instance
().
setLastListener
(
this
);
GSYVideoManager
.
instance
().
setListener
(
gsyVideoPlayer
);
}
catch
(
InstantiationException
e
)
{
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
public
void
clearFullscreenLayout
(
Context
context
,
boolean
actionBar
,
boolean
statusBar
)
{
showSupportActionBar
(
context
,
actionBar
,
statusBar
);
ViewGroup
vp
=
(
ViewGroup
)
(
CommonUtil
.
scanForActivity
(
getContext
())).
findViewById
(
Window
.
ID_ANDROID_CONTENT
);
View
oldF
=
vp
.
findViewById
(
FULLSCREEN_ID
);
GSYVideoPlayer
gsyVideoPlayer
=
null
;
if
(
oldF
!=
null
)
{
gsyVideoPlayer
=
(
GSYVideoPlayer
)
oldF
;
vp
.
removeView
(
oldF
);
}
mCurrentState
=
GSYVideoManager
.
instance
().
getLastState
();
if
(
gsyVideoPlayer
!=
null
)
{
mCurrentState
=
gsyVideoPlayer
.
getCurrentState
();
}
GSYVideoManager
.
instance
().
setListener
(
GSYVideoManager
.
instance
().
lastListener
());
GSYVideoManager
.
instance
().
setLastListener
(
null
);
setStateAndUi
(
mCurrentState
);
addTextureView
();
CLICK_QUIT_FULLSCREEN_TIME
=
System
.
currentTimeMillis
();
}
/**
* 滑动改变亮度
*
...
...
@@ -816,4 +885,8 @@ public abstract class GSYVideoPlayer extends FrameLayout implements View.OnClick
public
ImageView
getFullscreenButton
()
{
return
fullscreenButton
;
}
public
int
getCurrentState
()
{
return
mCurrentState
;
}
}
\ No newline at end of file
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/CommonUtil.java
浏览文件 @
6ea9eba7
...
...
@@ -5,6 +5,10 @@ import android.content.Context;
import
android.content.ContextWrapper
;
import
android.net.ConnectivityManager
;
import
android.net.NetworkInfo
;
import
android.support.v7.app.ActionBar
;
import
android.support.v7.app.AppCompatActivity
;
import
android.support.v7.internal.view.ContextThemeWrapper
;
import
android.view.WindowManager
;
import
java.util.Formatter
;
import
java.util.Locale
;
...
...
@@ -58,4 +62,64 @@ public class CommonUtil {
return
null
;
}
/**
* 获取状态栏高度
*
* @param context 上下文
* @return 状态栏高度
*/
public
static
int
getStatusBarHeight
(
Context
context
)
{
int
result
=
0
;
int
resourceId
=
context
.
getResources
()
.
getIdentifier
(
"status_bar_height"
,
"dimen"
,
"android"
);
if
(
resourceId
>
0
)
{
result
=
context
.
getResources
().
getDimensionPixelSize
(
resourceId
);
}
return
result
;
}
public
static
void
hideSupportActionBar
(
Context
context
,
boolean
actionBar
,
boolean
statusBar
)
{
if
(
actionBar
)
{
ActionBar
ab
=
CommonUtil
.
getAppCompActivity
(
context
).
getSupportActionBar
();
if
(
ab
!=
null
)
{
ab
.
setShowHideAnimationEnabled
(
false
);
ab
.
hide
();
}
}
if
(
statusBar
)
{
CommonUtil
.
getAppCompActivity
(
context
).
getWindow
().
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_FULLSCREEN
,
WindowManager
.
LayoutParams
.
FLAG_FULLSCREEN
);
}
}
public
static
void
showSupportActionBar
(
Context
context
,
boolean
actionBar
,
boolean
statusBar
)
{
if
(
actionBar
)
{
ActionBar
ab
=
CommonUtil
.
getAppCompActivity
(
context
).
getSupportActionBar
();
if
(
ab
!=
null
)
{
ab
.
setShowHideAnimationEnabled
(
false
);
ab
.
show
();
}
}
if
(
statusBar
)
{
CommonUtil
.
getAppCompActivity
(
context
).
getWindow
().
clearFlags
(
WindowManager
.
LayoutParams
.
FLAG_FULLSCREEN
);
}
}
/**
* Get AppCompatActivity from context
*
* @param context
* @return AppCompatActivity if it's not null
*/
public
static
AppCompatActivity
getAppCompActivity
(
Context
context
)
{
if
(
context
==
null
)
return
null
;
if
(
context
instanceof
AppCompatActivity
)
{
return
(
AppCompatActivity
)
context
;
}
else
if
(
context
instanceof
ContextThemeWrapper
)
{
return
getAppCompActivity
(((
ContextThemeWrapper
)
context
).
getBaseContext
());
}
return
null
;
}
}
gsyVideoPlayer/src/main/java/com/shuyu/gsyvideoplayer/utils/ListVideoUtil.java
浏览文件 @
6ea9eba7
...
...
@@ -116,7 +116,8 @@ public class ListVideoUtil {
public
void
releaseVideoPlayer
()
{
ViewGroup
viewGroup
=
(
ViewGroup
)
gsyVideoPlayer
.
getParent
();
viewGroup
.
removeAllViews
();
if
(
viewGroup
!=
null
)
viewGroup
.
removeAllViews
();
playPosition
=
-
1
;
TAG
=
"NULL"
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录