Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
android_vedio
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
android
android_vedio
Commits
235021a7
Commit
235021a7
authored
Jul 14, 2023
by
jyx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码优化
parent
1cdb21b4
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
206 additions
and
254 deletions
+206
-254
build.gradle
video/app/build.gradle
+0
-4
LocalVedioManager.kt
...n/java/com/mints/wisdomclean/manager/LocalVedioManager.kt
+1
-0
BaseActivity.java
...com/mints/wisdomclean/ui/activitys/base/BaseActivity.java
+3
-3
WatchVideoFragment.kt
...a/com/mints/wisdomclean/ui/fragment/WatchVideoFragment.kt
+1
-5
JZMediaIjk.java
...src/main/java/com/mints/wisdomclean/video/JZMediaIjk.java
+0
-226
JzvdStdTikTok.kt
...rc/main/java/com/mints/wisdomclean/video/JzvdStdTikTok.kt
+19
-14
MyJzvdStd.kt
...pp/src/main/java/com/mints/wisdomclean/video/MyJzvdStd.kt
+19
-0
VideoActivity.kt
...rc/main/java/com/mints/wisdomclean/video/VideoActivity.kt
+7
-1
jz_bottom_seek_poster.xml
video/app/src/main/res/drawable/jz_bottom_seek_poster.xml
+5
-0
jz_seek_poster_normal.xml
video/app/src/main/res/drawable/jz_seek_poster_normal.xml
+8
-0
jz_seek_poster_pressed.xml
video/app/src/main/res/drawable/jz_seek_poster_pressed.xml
+8
-0
player_ag_bottom_progress.xml
...o/app/src/main/res/drawable/player_ag_bottom_progress.xml
+28
-0
player_ag_bottom_seek_progress.xml
.../src/main/res/drawable/player_ag_bottom_seek_progress.xml
+28
-0
layout_my_video.xml
video/app/src/main/res/layout/layout_my_video.xml
+79
-0
build.gradle
video/build.gradle
+0
-1
No files found.
video/app/build.gradle
View file @
235021a7
...
...
@@ -246,10 +246,6 @@ dependencies {
exclude
group:
'com.tencent.mm.opensdk'
,
module:
'wechat-sdk-android'
}
implementation
'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
implementation
'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4'
testImplementation
'junit:junit:4.13.2'
androidTestImplementation
'androidx.test.ext:junit:1.1.3'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.4.0'
...
...
video/app/src/main/java/com/mints/wisdomclean/manager/LocalVedioManager.kt
View file @
235021a7
...
...
@@ -133,6 +133,7 @@ object LocalVedioManager {
fun
readyGo
(
activity
:
Activity
,
clazz
:
Class
<
*
>,
bundle
:
Bundle
)
{
val
intent
=
Intent
(
activity
,
clazz
)
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_NEW_TASK
)
if
(
null
!=
bundle
)
{
intent
.
putExtras
(
bundle
)
}
...
...
video/app/src/main/java/com/mints/wisdomclean/ui/activitys/base/BaseActivity.java
View file @
235021a7
...
...
@@ -54,9 +54,9 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Base
StatusBarUtil
.
StatusBarLightMode
(
this
);
//设置白底黑字
}
//
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
getWindow
().
setNavigationBarColor
(
Color
.
BLACK
);
//
}
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
Q
)
{
getWindow
().
setNavigationBarColor
(
Color
.
BLACK
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
video/app/src/main/java/com/mints/wisdomclean/ui/fragment/WatchVideoFragment.kt
View file @
235021a7
...
...
@@ -14,6 +14,7 @@ import com.mints.wisdomclean.mvp.model.BannerList
import
com.mints.wisdomclean.mvp.model.VedioBean
import
com.mints.wisdomclean.mvp.presenters.RecommendPresenter
import
com.mints.wisdomclean.mvp.views.RecommendView
import
com.mints.wisdomclean.ui.activitys.SettingsActivity
import
com.mints.wisdomclean.ui.fragment.base.BaseFragment
import
com.mints.wisdomclean.video.*
import
kotlinx.android.synthetic.main.fragment_watch_video.recy
...
...
@@ -65,8 +66,6 @@ class WatchVideoFragment : BaseFragment(), RecommendView {
videos
[
position
],
true
)
// val bundle = Bundle()
// readyGo(VideoActivity::class.java, bundle)
}
R
.
id
.
ll_collect
->
{
if
(
videos
[
position
].
collect
==
0
)
{
...
...
@@ -95,8 +94,6 @@ class WatchVideoFragment : BaseFragment(), RecommendView {
layoutManager
.
setOnViewPagerListener
(
object
:
OnRecyViewListener
{
override
fun
onInitComplete
()
{
// mCurrentPosition = 0
//初始化 自动播放
autoPlayVideo
()
}
...
...
@@ -174,7 +171,6 @@ class WatchVideoFragment : BaseFragment(), RecommendView {
val
player
:
JzvdStdTikTok
=
recy
.
getChildAt
(
0
).
findViewById
(
R
.
id
.
jz_video
)
if
(
player
!=
null
)
{
player
.
startVideoAfterPreloading
()
//播放开始,进行倒计时
}
}
...
...
video/app/src/main/java/com/mints/wisdomclean/video/JZMediaIjk.java
deleted
100644 → 0
View file @
1cdb21b4
package
com
.
mints
.
wisdomclean
.
video
;
import
android.graphics.SurfaceTexture
;
import
android.media.AudioManager
;
import
android.os.Handler
;
import
android.os.HandlerThread
;
import
android.view.Surface
;
import
java.io.IOException
;
import
cn.jzvd.JZMediaInterface
;
import
cn.jzvd.Jzvd
;
import
tv.danmaku.ijk.media.player.IMediaPlayer
;
import
tv.danmaku.ijk.media.player.IjkMediaPlayer
;
import
tv.danmaku.ijk.media.player.IjkTimedText
;
/**
* Created by Nathen on 2017/11/18.
* ijk兼容SO库:https://github.com/NamHofstadter/IjkPlayerSos
* ijk默认不支持https协议,需要的请自行下载so库
*/
public
class
JZMediaIjk
extends
JZMediaInterface
implements
IMediaPlayer
.
OnPreparedListener
,
IMediaPlayer
.
OnVideoSizeChangedListener
,
IMediaPlayer
.
OnCompletionListener
,
IMediaPlayer
.
OnErrorListener
,
IMediaPlayer
.
OnInfoListener
,
IMediaPlayer
.
OnBufferingUpdateListener
,
IMediaPlayer
.
OnSeekCompleteListener
,
IMediaPlayer
.
OnTimedTextListener
{
IjkMediaPlayer
ijkMediaPlayer
;
public
JZMediaIjk
(
Jzvd
jzvd
)
{
super
(
jzvd
);
}
@Override
public
void
start
()
{
if
(
ijkMediaPlayer
!=
null
)
ijkMediaPlayer
.
start
();
}
@Override
public
void
prepare
()
{
release
();
mMediaHandlerThread
=
new
HandlerThread
(
"JZVD"
);
mMediaHandlerThread
.
start
();
mMediaHandler
=
new
Handler
(
mMediaHandlerThread
.
getLooper
());
//主线程还是非主线程,就在这里
handler
=
new
Handler
();
mMediaHandler
.
post
(()
->
{
ijkMediaPlayer
=
new
IjkMediaPlayer
();
ijkMediaPlayer
.
setAudioStreamType
(
AudioManager
.
STREAM_MUSIC
);
////1为硬解 0为软解
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"mediacodec"
,
0
);
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"mediacodec-auto-rotate"
,
1
);
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"mediacodec-handle-resolution-change"
,
1
);
//使用opensles把文件从java层拷贝到native层
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"opensles"
,
0
);
//视频格式
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"overlay-format"
,
IjkMediaPlayer
.
SDL_FCC_RV32
);
//跳帧处理(-1~120)。CPU处理慢时,进行跳帧处理,保证音视频同步
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"framedrop"
,
1
);
//0为一进入就播放,1为进入时不播放
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"start-on-prepared"
,
0
);
////域名检测
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"http-detect-range-support"
,
0
);
//设置是否开启环路过滤: 0开启,画面质量高,解码开销大,48关闭,画面质量差点,解码开销小
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_CODEC
,
"skip_loop_filter"
,
48
);
//最大缓冲大小,单位kb
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"max-buffer-size"
,
1024
*
1024
);
//某些视频在SeekTo的时候,会跳回到拖动前的位置,这是因为视频的关键帧的问题,通俗一点就是FFMPEG不兼容,视频压缩过于厉害,seek只支持关键帧,出现这个情况就是原始的视频文件中i 帧比较少
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"enable-accurate-seek"
,
1
);
//是否重连
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"reconnect"
,
1
);
//http重定向https
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"dns_cache_clear"
,
1
);
//设置seekTo能够快速seek到指定位置并播放
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"fflags"
,
"fastseek"
);
//播放前的探测Size,默认是1M, 改小一点会出画面更快
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_FORMAT
,
"probesize"
,
1024
*
10
);
//1变速变调状态 0变速不变调状态
ijkMediaPlayer
.
setOption
(
IjkMediaPlayer
.
OPT_CATEGORY_PLAYER
,
"soundtouch"
,
1
);
ijkMediaPlayer
.
setOnPreparedListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnVideoSizeChangedListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnCompletionListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnErrorListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnInfoListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnBufferingUpdateListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnSeekCompleteListener
(
JZMediaIjk
.
this
);
ijkMediaPlayer
.
setOnTimedTextListener
(
JZMediaIjk
.
this
);
try
{
ijkMediaPlayer
.
setDataSource
(
jzvd
.
jzDataSource
.
getCurrentUrl
().
toString
());
ijkMediaPlayer
.
setAudioStreamType
(
AudioManager
.
STREAM_MUSIC
);
ijkMediaPlayer
.
setScreenOnWhilePlaying
(
true
);
ijkMediaPlayer
.
prepareAsync
();
ijkMediaPlayer
.
setSurface
(
new
Surface
(
jzvd
.
textureView
.
getSurfaceTexture
()));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
});
}
@Override
public
void
pause
()
{
ijkMediaPlayer
.
pause
();
}
@Override
public
boolean
isPlaying
()
{
return
ijkMediaPlayer
.
isPlaying
();
}
@Override
public
void
seekTo
(
long
time
)
{
ijkMediaPlayer
.
seekTo
(
time
);
}
@Override
public
void
release
()
{
if
(
mMediaHandler
!=
null
&&
mMediaHandlerThread
!=
null
&&
ijkMediaPlayer
!=
null
)
{
//不知道有没有妖孽
HandlerThread
tmpHandlerThread
=
mMediaHandlerThread
;
IjkMediaPlayer
tmpMediaPlayer
=
ijkMediaPlayer
;
JZMediaInterface
.
SAVED_SURFACE
=
null
;
mMediaHandler
.
post
(()
->
{
tmpMediaPlayer
.
setSurface
(
null
);
tmpMediaPlayer
.
release
();
tmpHandlerThread
.
quit
();
});
ijkMediaPlayer
=
null
;
}
}
@Override
public
long
getCurrentPosition
()
{
return
ijkMediaPlayer
.
getCurrentPosition
();
}
@Override
public
long
getDuration
()
{
if
(
ijkMediaPlayer
==
null
)
return
0
;
return
ijkMediaPlayer
.
getDuration
();
}
@Override
public
void
setVolume
(
float
leftVolume
,
float
rightVolume
)
{
ijkMediaPlayer
.
setVolume
(
leftVolume
,
rightVolume
);
}
@Override
public
void
setSpeed
(
float
speed
)
{
ijkMediaPlayer
.
setSpeed
(
speed
);
}
@Override
public
void
onPrepared
(
IMediaPlayer
iMediaPlayer
)
{
handler
.
post
(()
->
jzvd
.
onPrepared
());
}
@Override
public
void
onVideoSizeChanged
(
IMediaPlayer
iMediaPlayer
,
int
i
,
int
i1
,
int
i2
,
int
i3
)
{
handler
.
post
(()
->
jzvd
.
onVideoSizeChanged
(
iMediaPlayer
.
getVideoWidth
(),
iMediaPlayer
.
getVideoHeight
()));
}
@Override
public
boolean
onError
(
IMediaPlayer
iMediaPlayer
,
final
int
what
,
final
int
extra
)
{
handler
.
post
(()
->
jzvd
.
onError
(
what
,
extra
));
return
true
;
}
@Override
public
boolean
onInfo
(
IMediaPlayer
iMediaPlayer
,
final
int
what
,
final
int
extra
)
{
handler
.
post
(()
->
jzvd
.
onInfo
(
what
,
extra
));
return
false
;
}
@Override
public
void
onBufferingUpdate
(
IMediaPlayer
iMediaPlayer
,
final
int
percent
)
{
handler
.
post
(()
->
jzvd
.
setBufferProgress
(
percent
));
}
@Override
public
void
onSeekComplete
(
IMediaPlayer
iMediaPlayer
)
{
handler
.
post
(()
->
jzvd
.
onSeekComplete
());
}
@Override
public
void
onTimedText
(
IMediaPlayer
iMediaPlayer
,
IjkTimedText
ijkTimedText
)
{
}
@Override
public
void
setSurface
(
Surface
surface
)
{
ijkMediaPlayer
.
setSurface
(
surface
);
}
@Override
public
void
onSurfaceTextureAvailable
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
if
(
SAVED_SURFACE
==
null
)
{
SAVED_SURFACE
=
surface
;
prepare
();
}
else
{
jzvd
.
textureView
.
setSurfaceTexture
(
SAVED_SURFACE
);
}
}
@Override
public
void
onSurfaceTextureSizeChanged
(
SurfaceTexture
surface
,
int
width
,
int
height
)
{
}
@Override
public
boolean
onSurfaceTextureDestroyed
(
SurfaceTexture
surface
)
{
return
false
;
}
@Override
public
void
onSurfaceTextureUpdated
(
SurfaceTexture
surface
)
{
}
@Override
public
void
onCompletion
(
IMediaPlayer
iMediaPlayer
)
{
handler
.
post
(()
->
jzvd
.
onCompletion
());
}
}
\ No newline at end of file
video/app/src/main/java/com/mints/wisdomclean/video/JzvdStdTikTok.kt
View file @
235021a7
...
...
@@ -3,8 +3,10 @@ package com.mints.wisdomclean.video
import
android.content.Context
import
android.util.AttributeSet
import
android.util.Log
import
android.view.Gravity
import
android.view.View
import
android.widget.ImageView
import
android.widget.LinearLayout
import
android.widget.Toast
import
cn.jzvd.Jzvd
import
cn.jzvd.JzvdStd
...
...
@@ -33,19 +35,20 @@ class JzvdStdTikTok : JzvdStd {
totalTimeTextView
.
visibility
=
View
.
GONE
//当前时间
fullscreenButton
.
visibility
=
View
.
GONE
//放大按钮
topContainer
.
visibility
=
View
.
GONE
progressBar
.
visibility
=
View
.
GONE
//控制的
loadingProgressBar
.
visibility
=
View
.
GONE
//加载loaing
bottomProgressBar
.
visibility
=
View
.
VISIBLE
//最底部的进度
progressBar
.
visibility
=
View
.
VISIBLE
//控制的
posterImageView
.
scaleType
=
ImageView
.
ScaleType
.
FIT_CENTER
val
layoutParams
=
bottomProgressBar
.
layoutParams
layoutParams
.
height
=
UIUtils
.
dip2px
(
context
,
5f
)
bottomProgressBar
.
layoutParams
=
layoutParams
val
layoutParams2
=
progressBar
.
layoutParams
layoutParams
.
height
=
UIUtils
.
dip2px
(
context
,
5f
)
bottomProgressBar
.
visibility
=
View
.
GONE
//最底部的进度
val
layoutParams2
=
progressBar
.
layoutParams
as
LinearLayout
.
LayoutParams
layoutParams2
.
gravity
=
Gravity
.
BOTTOM
layoutParams2
.
height
=
UIUtils
.
dip2px
(
context
,
5f
)
progressBar
.
thumb
=
context
?.
getDrawable
(
R
.
drawable
.
jz_bottom_seek_poster
)
progressBar
.
layoutParams
=
layoutParams2
progressBar
.
setPadding
(
0
,
0
,
0
,
0
)
val
layoutParams3
=
startButton
.
layoutParams
val
layoutParams3
=
startButton
.
layoutParams
as
LinearLayout
.
LayoutParams
layoutParams3
.
width
=
UIUtils
.
dip2px
(
context
,
100f
)
layoutParams3
.
height
=
UIUtils
.
dip2px
(
context
,
100f
)
startButton
.
layoutParams
=
layoutParams3
...
...
@@ -57,13 +60,13 @@ class JzvdStdTikTok : JzvdStd {
screen
:
Int
,
mediaInterfaceClass
:
Class
<
*
>?
)
{
super
.
setUp
(
url
,
title
,
screen
,
JZMediaIjk
::
class
.
java
)
super
.
setUp
(
url
,
title
,
screen
)
}
//changeUiTo 真能能修改ui的方法
override
fun
changeUiToNormal
()
{
super
.
changeUiToNormal
()
bottomContainer
.
visibility
=
View
.
GON
E
bottomContainer
.
visibility
=
View
.
VISIBL
E
topContainer
.
visibility
=
View
.
GONE
// mDialogProgressBar.setVisibility(GONE);
}
...
...
@@ -73,19 +76,21 @@ class JzvdStdTikTok : JzvdStd {
posterImg
:
Int
,
bottomPro
:
Int
,
retryLayout
:
Int
)
{
topContainer
.
visibility
=
topCon
bottomContainer
.
visibility
=
bottomCon
//
bottomContainer.visibility = bottomCon
startButton
.
visibility
=
startBtn
loadingProgressBar
.
visibility
=
View
.
GONE
posterImageView
.
visibility
=
posterImg
bottomProgressBar
.
visibility
=
View
.
VISIBL
E
bottomProgressBar
.
visibility
=
View
.
GON
E
mRetryLayout
.
visibility
=
retryLayout
bottomContainer
.
visibility
=
View
.
VISIBLE
}
override
fun
dissmissControlView
()
{
if
(
state
!=
Jzvd
.
STATE_NORMAL
&&
state
!=
Jzvd
.
STATE_ERROR
&&
state
!=
Jzvd
.
STATE_AUTO_COMPLETE
)
{
post
{
bottomContainer
.
visibility
=
View
.
INVISIBLE
//
bottomContainer.visibility = View.INVISIBLE
topContainer
.
visibility
=
View
.
INVISIBLE
startButton
.
visibility
=
View
.
INVISIBLE
if
(
clarityPopWindow
!=
null
)
{
...
...
@@ -102,7 +107,7 @@ class JzvdStdTikTok : JzvdStd {
super
.
onClickUiToggle
()
Log
.
i
(
Jzvd
.
TAG
,
"click blank"
)
startButton
.
performClick
()
bottomContainer
.
visibility
=
View
.
GON
E
bottomContainer
.
visibility
=
View
.
VISIBL
E
topContainer
.
visibility
=
View
.
GONE
}
...
...
video/app/src/main/java/com/mints/wisdomclean/video/MyJzvdStd.kt
0 → 100644
View file @
235021a7
package
com.mints.wisdomclean.video
import
android.content.Context
import
android.util.AttributeSet
import
cn.jzvd.JzvdStd
import
com.mints.wisdomclean.R
class
MyJzvdStd
:
JzvdStd
{
constructor
(
context
:
Context
?)
:
super
(
context
)
constructor
(
context
:
Context
?,
attrs
:
AttributeSet
?)
:
super
(
context
,
attrs
)
override
fun
getLayoutId
()
=
R
.
layout
.
layout_my_video
}
\ No newline at end of file
video/app/src/main/java/com/mints/wisdomclean/video/VideoActivity.kt
View file @
235021a7
...
...
@@ -86,7 +86,6 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
override
fun
onDestroy
()
{
super
.
onDestroy
()
Jzvd
.
releaseAllVideos
()
videoPresenter
.
detachView
()
}
...
...
@@ -386,4 +385,11 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
}
override
fun
finish
()
{
Jzvd
.
releaseAllVideos
()
super
.
finish
()
}
}
\ No newline at end of file
video/app/src/main/res/drawable/jz_bottom_seek_poster.xml
0 → 100644
View file @
235021a7
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:drawable=
"@drawable/jz_seek_poster_pressed"
android:state_pressed=
"true"
/>
<item
android:drawable=
"@drawable/jz_seek_poster_normal"
/>
</selector>
video/app/src/main/res/drawable/jz_seek_poster_normal.xml
0 → 100644
View file @
235021a7
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<solid
android:color=
"#ffffffff"
/>
<size
android:width=
"5dp"
android:height=
"5dp"
/>
</shape>
video/app/src/main/res/drawable/jz_seek_poster_pressed.xml
0 → 100644
View file @
235021a7
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<solid
android:color=
"#fff0f0f0"
/>
<size
android:width=
"5dp"
android:height=
"5dp"
/>
</shape>
video/app/src/main/res/drawable/player_ag_bottom_progress.xml
0 → 100644
View file @
235021a7
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:id=
"@android:id/background"
>
<shape>
<solid
android:color=
"#a5ffffff"
/>
<size
android:height=
"4dp"
/>
<corners
android:radius=
"1dp"
/>
</shape>
</item>
<item
android:id=
"@android:id/secondaryProgress"
>
<clip>
<shape>
<solid
android:color=
"#ffe0e0e0"
/>
<size
android:height=
"4dp"
/>
<corners
android:radius=
"1dp"
/>
</shape>
</clip>
</item>
<item
android:id=
"@android:id/progress"
>
<clip>
<shape>
<solid
android:color=
"@color/main_mints"
/>
<size
android:height=
"4dp"
/>
<corners
android:radius=
"1dp"
/>
</shape>
</clip>
</item>
</layer-list>
\ No newline at end of file
video/app/src/main/res/drawable/player_ag_bottom_seek_progress.xml
0 → 100644
View file @
235021a7
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:id=
"@android:id/background"
>
<shape>
<solid
android:color=
"#a5ffffff"
/>
<size
android:height=
"1dp"
/>
<corners
android:radius=
"1.5dip"
/>
</shape>
</item>
<item
android:id=
"@android:id/secondaryProgress"
>
<clip>
<shape>
<solid
android:color=
"#ffffffff"
/>
<size
android:height=
"1dp"
/>
<corners
android:radius=
"1.5dip"
/>
</shape>
</clip>
</item>
<item
android:id=
"@android:id/progress"
>
<clip>
<shape>
<solid
android:color=
"@color/main_mints"
/>
<size
android:height=
"1dp"
/>
<corners
android:radius=
"1.5dip"
/>
</shape>
</clip>
</item>
</layer-list>
\ No newline at end of file
video/app/src/main/res/layout/layout_my_video.xml
0 → 100644
View file @
235021a7
<?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=
"match_parent"
android:background=
"@android:color/black"
>
<FrameLayout
android:id=
"@+id/surface_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</FrameLayout>
<ProgressBar
android:id=
"@+id/bottom_progress"
style=
"?android:attr/progressBarStyleHorizontal"
android:layout_width=
"match_parent"
android:layout_height=
"1.5dp"
android:layout_alignParentBottom=
"true"
android:max=
"100"
android:progressDrawable=
"@drawable/player_ag_bottom_progress"
/>
<ProgressBar
android:id=
"@+id/loading"
android:layout_width=
"@dimen/jz_start_button_w_h_normal"
android:layout_height=
"@dimen/jz_start_button_w_h_normal"
android:layout_centerHorizontal=
"true"
android:layout_centerVertical=
"true"
android:indeterminateDrawable=
"@drawable/jz_loading"
android:visibility=
"invisible"
/>
<LinearLayout
android:id=
"@+id/start_layout"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:layout_centerVertical=
"true"
android:layout_gravity=
"center_vertical"
>
<ImageView
android:id=
"@+id/start"
android:layout_width=
"100dp"
android:layout_height=
"100dp"
android:src=
"@drawable/jz_click_play_selector"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/retry_layout"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:layout_centerVertical=
"true"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
android:visibility=
"invisible"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/video_loading_failed"
android:textColor=
"@android:color/white"
android:textSize=
"14sp"
/>
<TextView
android:id=
"@+id/retry_btn"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"15dp"
android:background=
"@drawable/jz_retry"
android:paddingLeft=
"9dp"
android:paddingTop=
"4dp"
android:paddingRight=
"9dp"
android:paddingBottom=
"4dp"
android:text=
"@string/click_to_restart"
android:textColor=
"@android:color/white"
android:textSize=
"14sp"
/>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
video/build.gradle
View file @
235021a7
...
...
@@ -50,7 +50,6 @@ allprojects {
maven
{
url
"https://artifact.bytedance.com/repository/pangle"
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment