Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_26386469
GSYVideoPlayer
提交
a678e317
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,体验更适合开发者的 AI 搜索 >>
提交
a678e317
编写于
10月 16, 2020
作者:
G
guoshuyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add viewpager2
上级
236b7685
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
257 addition
and
52 deletion
+257
-52
app/build.gradle
app/build.gradle
+1
-0
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+27
-44
app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java
...rc/main/java/com/example/gsyvideoplayer/DetailPlayer.java
+2
-2
app/src/main/java/com/example/gsyvideoplayer/MainActivity.java
...rc/main/java/com/example/gsyvideoplayer/MainActivity.java
+4
-1
app/src/main/java/com/example/gsyvideoplayer/ViewPager2Activity.java
...n/java/com/example/gsyvideoplayer/ViewPager2Activity.java
+107
-0
app/src/main/java/com/example/gsyvideoplayer/adapter/ViewPagerAdapter.java
.../com/example/gsyvideoplayer/adapter/ViewPagerAdapter.java
+60
-0
app/src/main/java/com/example/gsyvideoplayer/holder/RecyclerItemNormalHolder.java
...ample/gsyvideoplayer/holder/RecyclerItemNormalHolder.java
+5
-2
app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java
...main/java/com/example/gsyvideoplayer/utils/JumpUtils.java
+10
-1
app/src/main/res/layout/activity_main.xml
app/src/main/res/layout/activity_main.xml
+16
-2
app/src/main/res/layout/activity_view_pager2.xml
app/src/main/res/layout/activity_view_pager2.xml
+13
-0
app/src/main/res/layout/layout_viewpager2_item.xml
app/src/main/res/layout/layout_viewpager2_item.xml
+11
-0
dependencies.gradle
dependencies.gradle
+1
-0
未找到文件。
app/build.gradle
浏览文件 @
a678e317
...
...
@@ -82,6 +82,7 @@ dependencies {
implementation
viewDependencies
.
glideProcessor
implementation
androidDependencies
.
support_v4
implementation
androidDependencies
.
design
implementation
androidDependencies
.
viewpager2
implementation
project
(
':gsyVideoPlayer'
)
...
...
app/src/main/AndroidManifest.xml
浏览文件 @
a678e317
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
tools:ignore=
"LockedOrientationActivity"
package=
"com.example.gsyvideoplayer"
>
package=
"com.example.gsyvideoplayer"
tools:ignore=
"LockedOrientationActivity"
>
<!-- 请求访问网络状态 -->
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<!-- 请求访问网络 -->
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<!-- 请求访问网络 -->
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
...
...
@@ -18,10 +16,11 @@
android:allowBackup=
"true"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:supportsRtl=
"true"
android:usesCleartextTraffic=
"true"
android:networkSecurityConfig=
"@xml/network_security_config"
android:theme=
"@style/AppTheme"
>
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
android:usesCleartextTraffic=
"true"
>
<activity
android:name=
".ViewPager2Activity"
></activity>
<activity
android:name=
".MainActivity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
...
...
@@ -134,31 +133,25 @@
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Translucent"
/>
<activity
android:name=
".ListADVideoActivity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Translucent"
/>
<activity
android:name=
".ListADVideoActivity2"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Translucent"
/>
<activity
android:name=
".exo.DetailExoListPlayer"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".simple.SimplePlayer"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme=
"@style/Theme.AppCompat.Full"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Full"
/>
<activity
android:name=
".simple.SimpleDetailActivityMode1"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
...
...
@@ -167,69 +160,59 @@
android:name=
".simple.SimpleDetailActivityMode2"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".simple.SimpleListVideoActivityMode1"
android:theme=
"@style/Theme.AppCompat.Translucent"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Translucent"
/>
<activity
android:name=
".simple.SimpleListVideoActivityMode2"
android:theme=
"@style/Theme.AppCompat.Translucent"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Translucent"
/>
<activity
android:name=
".simple.SimpleActivity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".switchplay.SwitchListVideoActivity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme=
"@style/Theme.AppCompat.Transitions"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Transitions"
/>
<activity
android:name=
".switchplay.SwitchDetailActivity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme=
"@style/Theme.AppCompat.Transitions"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Transitions"
/>
<activity
android:name=
".RecyclerView3Activity"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme=
"@style/Theme.AppCompat.Transitions"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Transitions"
/>
<activity
android:name=
".DetailNormalActivityPlayer"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:
theme=
"@style/Theme.AppCompat.Transitions
"
android:
screenOrientation=
"portrait
"
/>
android:
screenOrientation=
"portrait
"
android:
theme=
"@style/Theme.AppCompat.Transitions
"
/>
<activity
android:name=
".DetailDownloadPlayer"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme=
"@style/Theme.AppCompat.Transitions"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Transitions"
/>
<activity
android:name=
".AudioDetailPlayer"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme=
"@style/Theme.AppCompat.Transitions"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:theme=
"@style/Theme.AppCompat.Transitions"
/>
<activity
android:name=
".exosubtitle.GSYExoSubTitleDetailPlayer"
android:configChanges=
"keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:
theme=
"@style/Theme.AppCompat.Transitions
"
android:
screenOrientation=
"portrait
"
/>
android:
screenOrientation=
"portrait
"
android:
theme=
"@style/Theme.AppCompat.Transitions
"
/>
<meta-data
android:name=
"android.max_aspect"
android:value=
"2.1"
/>
</application>
</manifest>
\ No newline at end of file
app/src/main/java/com/example/gsyvideoplayer/DetailPlayer.java
浏览文件 @
a678e317
...
...
@@ -317,9 +317,9 @@ public class DetailPlayer extends AppCompatActivity {
//String url = "http://video.7k.cn/app_video/20171202/6c8cf3ea/v.m3u8.mp4";
//String url = "http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8";
//String url = "rtmp://ctc-zhenjiang04.rt1.gensee.com/5324e855b28b453db7b0ec226598b76c_171391_0_8801038305_1591077225_205d01b8/video";
String
url
=
"http://video1.dgtle.com/backend%2F2020%2F3%2F0%2F%E6%88%91%E6%B2%A1%E6%9C%89%E7%BB%99%E4%B8%80%E5%8A%A08Pro%E5%81%9A%E8%AF%84%E6%B5%8B_%E5%8D%B4%E5%B8%A6%E7%9D%80%E5%AE%83%E6%BC%82%E6%B5%81.mp4_1080.mp4"
;
//
String url = "http://video1.dgtle.com/backend%2F2020%2F3%2F0%2F%E6%88%91%E6%B2%A1%E6%9C%89%E7%BB%99%E4%B8%80%E5%8A%A08Pro%E5%81%9A%E8%AF%84%E6%B5%8B_%E5%8D%B4%E5%B8%A6%E7%9D%80%E5%AE%83%E6%BC%82%E6%B5%81.mp4_1080.mp4";
//String url = "http://yongtaizx.xyz/20191230/t2Axgh3k/index.m3u8";
//
String url = "https://pointshow.oss-cn-hangzhou.aliyuncs.com/McTk51586843620689.mp4";
String
url
=
"https://pointshow.oss-cn-hangzhou.aliyuncs.com/McTk51586843620689.mp4"
;
//String url = "http://pointshow.oss-cn-hangzhou.aliyuncs.com/transcode/ORIGINAL/Mnbc61586842828593.mp4";
//ssl error
//String url = "https://file.shftz.cn:8443/filesystem/download/10/2019/3/26/ce2c7c66-e9eb-42be-adf6-f9008385ea8c.mov/play";
...
...
app/src/main/java/com/example/gsyvideoplayer/MainActivity.java
浏览文件 @
a678e317
...
...
@@ -67,7 +67,7 @@ public class MainActivity extends AppCompatActivity {
@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
,
R
.
id
.
danmaku_video
,
R
.
id
.
fragment_video
,
R
.
id
.
more_type
,
R
.
id
.
input_type
,
R
.
id
.
open_btn_empty
,
R
.
id
.
open_control
,
R
.
id
.
open_filter
,
R
.
id
.
open_btn_pick
,
R
.
id
.
open_btn_auto
,
R
.
id
.
open_scroll
,
R
.
id
.
open_window
,
R
.
id
.
open_btn_ad
,
R
.
id
.
open_btn_multi
,
R
.
id
.
open_btn_ad2
,
R
.
id
.
open_list_ad
,
R
.
id
.
open_custom_exo
,
R
.
id
.
open_simple
,
R
.
id
.
open_switch
,
R
.
id
.
media_codec
,
R
.
id
.
detail_normal_activity
,
R
.
id
.
detail_download_activity
,
R
.
id
.
detail_audio_activity
,
R
.
id
.
detail_subtitle_activity
,
R
.
id
.
change_core
})
R
.
id
.
detail_download_activity
,
R
.
id
.
detail_audio_activity
,
R
.
id
.
detail_subtitle_activity
,
R
.
id
.
change_core
,
R
.
id
.
view_pager2_activity
})
public
void
onClick
(
View
view
)
{
switch
(
view
.
getId
())
{
case
R
.
id
.
open_simple
:
...
...
@@ -184,6 +184,9 @@ public class MainActivity extends AppCompatActivity {
case
R
.
id
.
detail_audio_activity
:
JumpUtils
.
goToDetailAudioActivity
(
this
);
break
;
case
R
.
id
.
view_pager2_activity
:
JumpUtils
.
goToViewPager2Activity
(
this
);
break
;
case
R
.
id
.
change_core
:
i
+=
1
;
if
(
i
%
3
==
0
)
{
...
...
app/src/main/java/com/example/gsyvideoplayer/ViewPager2Activity.java
0 → 100644
浏览文件 @
a678e317
package
com.example.gsyvideoplayer
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.recyclerview.widget.RecyclerView
;
import
androidx.viewpager2.widget.ViewPager2
;
import
android.os.Bundle
;
import
android.view.View
;
import
com.example.gsyvideoplayer.adapter.ViewPagerAdapter
;
import
com.example.gsyvideoplayer.holder.RecyclerItemNormalHolder
;
import
com.example.gsyvideoplayer.model.VideoModel
;
import
com.shuyu.gsyvideoplayer.GSYVideoManager
;
import
java.util.ArrayList
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
public
class
ViewPager2Activity
extends
AppCompatActivity
{
@BindView
(
R
.
id
.
view_pager2
)
ViewPager2
viewPager2
;
List
<
VideoModel
>
dataList
=
new
ArrayList
<>();
ViewPagerAdapter
viewPagerAdapter
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_view_pager2
);
ButterKnife
.
bind
(
this
);
resolveData
();
viewPagerAdapter
=
new
ViewPagerAdapter
(
this
,
dataList
);
viewPager2
.
setOrientation
(
ViewPager2
.
ORIENTATION_VERTICAL
);
viewPager2
.
setAdapter
(
viewPagerAdapter
);
viewPager2
.
registerOnPageChangeCallback
(
new
ViewPager2
.
OnPageChangeCallback
()
{
@Override
public
void
onPageSelected
(
int
position
)
{
super
.
onPageSelected
(
position
);
//大于0说明有播放
int
playPosition
=
GSYVideoManager
.
instance
().
getPlayPosition
();
if
(
playPosition
>=
0
)
{
//对应的播放列表TAG
if
(
GSYVideoManager
.
instance
().
getPlayTag
().
equals
(
RecyclerItemNormalHolder
.
TAG
)
&&
(
position
!=
playPosition
))
{
playPosition
(
position
);
}
}
}
});
viewPager2
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
playPosition
(
0
);
}
});
}
@Override
public
void
onBackPressed
()
{
if
(
GSYVideoManager
.
backFromWindowFull
(
this
))
{
return
;
}
super
.
onBackPressed
();
}
@Override
protected
void
onPause
()
{
super
.
onPause
();
GSYVideoManager
.
onPause
();
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
GSYVideoManager
.
onResume
(
false
);
}
@Override
protected
void
onDestroy
()
{
super
.
onDestroy
();
GSYVideoManager
.
releaseAllVideos
();
}
private
void
resolveData
()
{
for
(
int
i
=
0
;
i
<
19
;
i
++)
{
VideoModel
videoModel
=
new
VideoModel
();
dataList
.
add
(
videoModel
);
}
if
(
viewPagerAdapter
!=
null
)
viewPagerAdapter
.
notifyDataSetChanged
();
}
private
void
playPosition
(
int
position
)
{
RecyclerView
.
ViewHolder
viewHolder
=
((
RecyclerView
)
viewPager2
.
getChildAt
(
0
)).
findViewHolderForAdapterPosition
(
position
);
if
(
viewHolder
!=
null
)
{
RecyclerItemNormalHolder
recyclerItemNormalHolder
=
(
RecyclerItemNormalHolder
)
viewHolder
;
recyclerItemNormalHolder
.
getPlayer
().
startPlayLogic
();
}
}
}
app/src/main/java/com/example/gsyvideoplayer/adapter/ViewPagerAdapter.java
0 → 100644
浏览文件 @
a678e317
package
com.example.gsyvideoplayer.adapter
;
import
android.content.Context
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.example.gsyvideoplayer.R
;
import
com.example.gsyvideoplayer.holder.RecyclerItemNormalHolder
;
import
com.example.gsyvideoplayer.model.VideoModel
;
import
java.util.List
;
public
class
ViewPagerAdapter
extends
RecyclerView
.
Adapter
<
RecyclerView
.
ViewHolder
>
{
private
final
static
String
TAG
=
"RecyclerBaseAdapter"
;
private
List
<
VideoModel
>
itemDataList
=
null
;
private
Context
context
=
null
;
public
ViewPagerAdapter
(
Context
context
,
List
<
VideoModel
>
itemDataList
)
{
this
.
itemDataList
=
itemDataList
;
this
.
context
=
context
;
}
@NonNull
@Override
public
RecyclerView
.
ViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
View
v
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
layout_viewpager2_item
,
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/RecyclerItemNormalHolder.java
浏览文件 @
a678e317
...
...
@@ -49,7 +49,7 @@ public class RecyclerItemNormalHolder extends RecyclerItemBaseHolder {
String
url
;
String
title
;
if
(
position
%
2
==
0
)
{
url
=
"https://
res.exexm.com/cw_145225549855002
"
;
url
=
"https://
pointshow.oss-cn-hangzhou.aliyuncs.com/McTk51586843620689.mp4
"
;
title
=
"这是title"
;
}
else
{
url
=
"http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4"
;
...
...
@@ -97,7 +97,7 @@ public class RecyclerItemNormalHolder extends RecyclerItemBaseHolder {
public
void
onEnterFullscreen
(
String
url
,
Object
...
objects
)
{
super
.
onEnterFullscreen
(
url
,
objects
);
GSYVideoManager
.
instance
().
setNeedMute
(
false
);
gsyVideoPlayer
.
getCurrentPlayer
().
getTitleTextView
().
setText
((
String
)
objects
[
0
]);
gsyVideoPlayer
.
getCurrentPlayer
().
getTitleTextView
().
setText
((
String
)
objects
[
0
]);
}
}).
build
(
gsyVideoPlayer
);
...
...
@@ -126,4 +126,7 @@ public class RecyclerItemNormalHolder extends RecyclerItemBaseHolder {
standardGSYVideoPlayer
.
startWindowFullscreen
(
context
,
true
,
true
);
}
public
SampleCoverVideo
getPlayer
()
{
return
gsyVideoPlayer
;
}
}
\ No newline at end of file
app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java
浏览文件 @
a678e317
...
...
@@ -35,6 +35,7 @@ import com.example.gsyvideoplayer.RecyclerView2Activity;
import
com.example.gsyvideoplayer.RecyclerView3Activity
;
import
com.example.gsyvideoplayer.RecyclerViewActivity
;
import
com.example.gsyvideoplayer.ScrollingActivity
;
import
com.example.gsyvideoplayer.ViewPager2Activity
;
import
com.example.gsyvideoplayer.WebDetailActivity
;
import
com.example.gsyvideoplayer.WindowActivity
;
import
com.example.gsyvideoplayer.exo.DetailExoListPlayer
;
...
...
@@ -287,7 +288,15 @@ public class JumpUtils {
Intent
intent
=
new
Intent
(
activity
,
AudioDetailPlayer
.
class
);
activity
.
startActivity
(
intent
);
}
/**
* 跳转到ViewPager详情播放
*
* @param activity
*/
public
static
void
goToViewPager2Activity
(
Activity
activity
)
{
Intent
intent
=
new
Intent
(
activity
,
ViewPager2Activity
.
class
);
activity
.
startActivity
(
intent
);
}
/**
* 跳转到详情播放
...
...
app/src/main/res/layout/activity_main.xml
浏览文件 @
a678e317
...
...
@@ -9,10 +9,10 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
android:paddingBottom=
"@dimen/activity_vertical_margin"
android:paddingLeft=
"@dimen/activity_horizontal_margin"
android:paddingRight=
"@dimen/activity_horizontal_margin"
android:paddingTop=
"@dimen/activity_vertical_margin"
android:paddingRight=
"@dimen/activity_horizontal_margin"
android:paddingBottom=
"@dimen/activity_vertical_margin"
tools:context=
"com.example.gsyvideoplayer.MainActivity"
>
<Button
...
...
@@ -85,6 +85,13 @@
android:layout_marginTop=
"20dp"
android:text=
"List全屏和小窗口列表"
/>
<Button
android:id=
"@+id/view_pager2_activity"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"ViewPager2列表"
/>
<Button
android:id=
"@+id/recycler"
android:layout_width=
"240dp"
...
...
@@ -202,42 +209,49 @@
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"硬解码支持"
/>
<Button
android:id=
"@+id/detail_download_activity"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"缓存下载支持"
/>
<Button
android:id=
"@+id/detail_normal_activity"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"普通 Activity"
/>
<Button
android:id=
"@+id/open_custom_exo"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"自定义Exo"
/>
<Button
android:id=
"@+id/detail_subtitle_activity"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"自定义Exo支持字幕"
/>
<Button
android:id=
"@+id/detail_audio_activity"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"音频"
/>
<Button
android:id=
"@+id/change_core"
android:layout_width=
"240dp"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
android:text=
"Ijk 内核"
/>
<Button
android:id=
"@+id/clear_cache"
android:layout_width=
"240dp"
...
...
app/src/main/res/layout/activity_view_pager2.xml
0 → 100644
浏览文件 @
a678e317
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/activity_detail_player"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<androidx.viewpager2.widget.ViewPager2
android:id=
"@+id/view_pager2"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</RelativeLayout>
app/src/main/res/layout/layout_viewpager2_item.xml
0 → 100644
浏览文件 @
a678e317
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<com.example.gsyvideoplayer.video.SampleCoverVideo
android:id=
"@+id/video_item_player"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</FrameLayout>
\ No newline at end of file
dependencies.gradle
浏览文件 @
a678e317
...
...
@@ -47,6 +47,7 @@ ext {
appcompat_v7:
"androidx.appcompat:appcompat:${supportLibraryVersion}"
,
support_v4
:
"androidx.legacy:legacy-support-v4:${otherVersion}"
,
design
:
"com.google.android.material:material:${otherVersion}"
,
viewpager2
:
"androidx.viewpager2:viewpager2:${otherVersion}"
,
]
viewDependencies
=
[
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录