Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
R
reelshort white
Project
Project
Details
Activity
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
reelshort white
Commits
118a34f7
Commit
118a34f7
authored
Jan 14, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...提交代码
parent
24bd4887
Show whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
676 additions
and
137 deletions
+676
-137
build.gradle.kts
app/build.gradle.kts
+1
-0
EPAdapter.kt
app/src/main/java/com/base/appzxhy/ui/adapter/EPAdapter.kt
+6
-0
BannerAdapter.kt
...n/java/com/base/appzxhy/ui/concatAdapter/BannerAdapter.kt
+12
-9
ShortPlayColumnsAdapter.kt
.../base/appzxhy/ui/concatAdapter/ShortPlayColumnsAdapter.kt
+10
-10
HomeFragment.kt
app/src/main/java/com/base/appzxhy/ui/main/HomeFragment.kt
+44
-48
MainActivity.kt
app/src/main/java/com/base/appzxhy/ui/main/MainActivity.kt
+44
-1
MyListFragment.kt
app/src/main/java/com/base/appzxhy/ui/main/MyListFragment.kt
+9
-0
PlaySlideFragment.kt
...c/main/java/com/base/appzxhy/ui/main/PlaySlideFragment.kt
+17
-0
ProfileFragment.kt
...src/main/java/com/base/appzxhy/ui/main/ProfileFragment.kt
+10
-0
RewardsFragment.kt
...src/main/java/com/base/appzxhy/ui/main/RewardsFragment.kt
+9
-0
CustomOverlayView.kt
...c/main/java/com/base/appzxhy/ui/play/CustomOverlayView.kt
+44
-0
CustomShareView.kt
...src/main/java/com/base/appzxhy/ui/play/CustomShareView.kt
+37
-0
CustomView.kt
app/src/main/java/com/base/appzxhy/ui/play/CustomView.kt
+1
-18
PlayFullActivity.kt
...rc/main/java/com/base/appzxhy/ui/play/PlayFullActivity.kt
+37
-6
ShortPlayEPDialog.kt
.../main/java/com/base/appzxhy/ui/views/ShortPlayEPDialog.kt
+47
-16
ShortPlayQualityDialog.kt
.../java/com/base/appzxhy/ui/views/ShortPlayQualityDialog.kt
+26
-0
ShortPlayViewModel.kt
...rc/main/java/com/base/appzxhy/ui/vm/ShortPlayViewModel.kt
+47
-23
bg_ff3d71_10.xml
app/src/main/res/drawable/bg_ff3d71_10.xml
+5
-0
dialog_ep_list.xml
app/src/main/res/layout/dialog_ep_list.xml
+9
-3
dialog_play_quality.xml
app/src/main/res/layout/dialog_play_quality.xml
+7
-0
fragment_my_list.xml
app/src/main/res/layout/fragment_my_list.xml
+78
-0
fragment_play_slide.xml
app/src/main/res/layout/fragment_play_slide.xml
+10
-0
fragment_profile.xml
app/src/main/res/layout/fragment_profile.xml
+14
-0
fragment_rewards.xml
app/src/main/res/layout/fragment_rewards.xml
+14
-0
fy_suo.png
app/src/main/res/layout/fy_suo.png
+0
-0
item_ep.xml
app/src/main/res/layout/item_ep.xml
+4
-3
item_ep_tab.xml
app/src/main/res/layout/item_ep_tab.xml
+15
-0
layout_overlay_foryou.xml
app/src/main/res/layout/layout_overlay_foryou.xml
+69
-0
layout_overlay_player.xml
app/src/main/res/layout/layout_overlay_player.xml
+26
-0
fy_poly.png
app/src/main/res/mipmap-xxhdpi/fy_poly.png
+0
-0
my_bianji_n.png
app/src/main/res/mipmap-xxhdpi/my_bianji_n.png
+0
-0
my_bianji_s.png
app/src/main/res/mipmap-xxhdpi/my_bianji_s.png
+0
-0
mylistwushuju.png
app/src/main/res/mipmap-xxhdpi/mylistwushuju.png
+0
-0
nav_graph.xml
app/src/main/res/navigation/nav_graph.xml
+20
-0
dimens.xml
app/src/main/res/values/dimens.xml
+1
-0
strings.xml
app/src/main/res/values/strings.xml
+2
-0
gradle.properties
gradle.properties
+1
-0
No files found.
app/build.gradle.kts
View file @
118a34f7
...
@@ -112,6 +112,7 @@ dependencies {
...
@@ -112,6 +112,7 @@ dependencies {
implementation
(
"io.github.youth5201314:banner:2.2.3"
)
implementation
(
"io.github.youth5201314:banner:2.2.3"
)
implementation
(
"com.github.angcyo.DslTablayout:TabLayout:3.6.4"
)
implementation
(
"com.github.angcyo.DslTablayout:TabLayout:3.6.4"
)
implementation
(
"com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4"
)
implementation
(
"com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4"
)
implementation
(
"io.github.litao0621:nifty-slider:2.0.2"
)
//firebase
//firebase
implementation
(
platform
(
"com.google.firebase:firebase-bom:32.3.1"
))
implementation
(
platform
(
"com.google.firebase:firebase-bom:32.3.1"
))
...
...
app/src/main/java/com/base/appzxhy/ui/adapter/EPAdapter.kt
View file @
118a34f7
...
@@ -12,6 +12,8 @@ import com.chad.library.adapter4.BaseQuickAdapter
...
@@ -12,6 +12,8 @@ import com.chad.library.adapter4.BaseQuickAdapter
class
EPAdapter
:
BaseQuickAdapter
<
ShortPlayEPBean
,
CommonViewHolder
>()
{
class
EPAdapter
:
BaseQuickAdapter
<
ShortPlayEPBean
,
CommonViewHolder
>()
{
var
selectEp
:
((
ep
:
Int
,
lock
:
Boolean
)
->
Unit
)?
=
null
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
ShortPlayEPBean
?)
{
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
ShortPlayEPBean
?)
{
item
?:
return
item
?:
return
val
context
=
holder
.
itemView
.
context
val
context
=
holder
.
itemView
.
context
...
@@ -24,6 +26,10 @@ class EPAdapter : BaseQuickAdapter<ShortPlayEPBean, CommonViewHolder>() {
...
@@ -24,6 +26,10 @@ class EPAdapter : BaseQuickAdapter<ShortPlayEPBean, CommonViewHolder>() {
binding
.
ivPlay
.
visibility
=
View
.
GONE
binding
.
ivPlay
.
visibility
=
View
.
GONE
binding
.
ivLock
.
isVisible
=
item
.
lock
binding
.
ivLock
.
isVisible
=
item
.
lock
binding
.
tvEP
.
visibility
=
View
.
VISIBLE
binding
.
tvEP
.
visibility
=
View
.
VISIBLE
binding
.
tvEP
.
text
=
item
.
ep
.
toString
()
}
binding
.
root
.
setOnClickListener
{
selectEp
?.
invoke
(
item
.
ep
,
item
.
lock
)
}
}
}
}
...
...
app/src/main/java/com/base/appzxhy/ui/concatAdapter/BannerAdapter.kt
View file @
118a34f7
...
@@ -21,33 +21,36 @@ import com.chad.library.adapter4.BaseQuickAdapter
...
@@ -21,33 +21,36 @@ import com.chad.library.adapter4.BaseQuickAdapter
import
com.youth.banner.adapter.BannerAdapter
import
com.youth.banner.adapter.BannerAdapter
class
BannerAdapter
(
class
BannerAdapter
:
BaseQuickAdapter
<
List
<
ShortPlay
>,
CommonViewHolder
>()
{
val
shortPlayList
:
List
<
ShortPlay
>
)
:
BaseQuickAdapter
<
Any
,
CommonViewHolder
>()
{
private
val
TAG
=
"BannerAdapter"
private
val
TAG
=
"BannerAdapter"
var
paletteAction
:
((
colorInt
:
Int
)
->
Unit
)?
=
null
var
paletteAction
:
((
colorInt
:
Int
)
->
Unit
)?
=
null
var
playAction
:
((
shortPlay
:
ShortPlay
)
->
Unit
)?
=
null
var
playAction
:
((
shortPlay
:
ShortPlay
)
->
Unit
)?
=
null
var
binding
:
ItemBannerBinding
?
=
null
var
binding
:
ItemBannerBinding
?
=
null
override
fun
getItemCount
(
items
:
List
<
Any
>):
Int
{
override
fun
getItemCount
(
items
:
List
<
List
<
ShortPlay
>
>):
Int
{
return
1
return
items
.
size
}
}
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
Any
?)
{
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
List
<
ShortPlay
>?)
{
item
?:
return
binding
=
ItemBannerBinding
.
bind
(
holder
.
itemView
)
binding
=
ItemBannerBinding
.
bind
(
holder
.
itemView
)
val
context
=
holder
.
itemView
.
context
val
context
=
holder
.
itemView
.
context
LogEx
.
logDebug
(
TAG
,
"onBindViewHolder"
)
LogEx
.
logDebug
(
TAG
,
"onBindViewHolder"
)
if
(
binding
?.
banner
?.
adapter
==
null
)
{
val
innerAdapter
=
binding
?.
banner
?.
adapter
as
GalleryAdapter
?
if
(
innerAdapter
==
null
&&
item
.
isNotEmpty
())
{
LogEx
.
logDebug
(
TAG
,
"onBindViewHolder banner"
)
LogEx
.
logDebug
(
TAG
,
"onBindViewHolder banner"
)
binding
?.
banner
?.
setAdapter
(
GalleryAdapter
(
shortPlayList
))
binding
?.
banner
?.
setAdapter
(
GalleryAdapter
(
item
))
//添加画廊效果
//添加画廊效果
binding
?.
banner
?.
setBannerGalleryEffect
(
binding
?.
banner
?.
setBannerGalleryEffect
(
context
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_30
),
context
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_30
),
context
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_10
)
context
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_10
)
)
)
binding
?.
banner
?.
setIndicator
(
binding
?.
indicator
,
false
)
binding
?.
banner
?.
setIndicator
(
binding
?.
indicator
,
false
)
}
else
{
innerAdapter
?.
setDatas
(
item
)
}
}
}
}
...
...
app/src/main/java/com/base/appzxhy/ui/concatAdapter/ShortPlayColumnsAdapter.kt
View file @
118a34f7
...
@@ -16,24 +16,24 @@ import com.chad.library.adapter4.BaseQuickAdapter
...
@@ -16,24 +16,24 @@ import com.chad.library.adapter4.BaseQuickAdapter
*/
*/
class
ShortPlayColumnsAdapter
(
class
ShortPlayColumnsAdapter
(
val
category
:
String
=
""
,
val
category
:
String
=
""
,
val
shortList
:
List
<
ShortPlay
>
)
:
BaseQuickAdapter
<
List
<
ShortPlay
>,
CommonViewHolder
>()
{
)
:
BaseQuickAdapter
<
Any
,
CommonViewHolder
>()
{
var
itemClick
:
((
shortPlay
:
ShortPlay
)
->
Unit
)?
=
null
var
itemClick
:
((
shortPlay
:
ShortPlay
)
->
Unit
)?
=
null
override
fun
getItemCount
(
items
:
List
<
Any
>):
Int
{
override
fun
getItemCount
(
items
:
List
<
List
<
ShortPlay
>
>):
Int
{
return
1
return
items
.
size
}
}
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
Any
?)
{
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
List
<
ShortPlay
>?)
{
item
?:
return
val
binding
=
ItemShortplayColumnsBinding
.
bind
(
holder
.
itemView
)
val
binding
=
ItemShortplayColumnsBinding
.
bind
(
holder
.
itemView
)
binding
.
tvCategory
.
text
=
category
binding
.
tvCategory
.
text
=
category
if
(
binding
.
rv
.
adapter
==
null
)
{
var
innerAdapter
=
binding
.
rv
.
adapter
as
InnerShortPlayAdapter
?
val
adapter
=
InnerShortPlayAdapter
()
if
(
innerAdapter
==
null
)
{
binding
.
rv
.
adapter
=
adapter
innerAdapter
=
InnerShortPlayAdapter
()
adapter
.
submitList
(
shortList
)
binding
.
rv
.
adapter
=
innerAdapter
}
}
innerAdapter
.
submitList
(
item
)
}
}
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
CommonViewHolder
{
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
CommonViewHolder
{
...
...
app/src/main/java/com/base/appzxhy/ui/main/HomeFragment.kt
View file @
118a34f7
...
@@ -14,12 +14,12 @@ import com.base.appzxhy.ui.concatAdapter.BannerAdapter
...
@@ -14,12 +14,12 @@ import com.base.appzxhy.ui.concatAdapter.BannerAdapter
import
com.base.appzxhy.ui.concatAdapter.ShortPlayCategoryAdapter
import
com.base.appzxhy.ui.concatAdapter.ShortPlayCategoryAdapter
import
com.base.appzxhy.ui.concatAdapter.ShortPlayColumnsAdapter
import
com.base.appzxhy.ui.concatAdapter.ShortPlayColumnsAdapter
import
com.base.appzxhy.ui.play.PlayFullActivity
import
com.base.appzxhy.ui.play.PlayFullActivity
import
com.base.appzxhy.ui.vm.ShortPlayViewModel
import
com.base.appzxhy.utils.BarUtils
import
com.base.appzxhy.utils.BarUtils
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.ToastUtils.toast
import
com.base.appzxhy.utils.ToastUtils.toast
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.google.gson.Gson
import
com.google.gson.Gson
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.flow.collectLatest
import
kotlinx.coroutines.flow.collectLatest
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
@@ -30,44 +30,38 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
...
@@ -30,44 +30,38 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
private
var
bannerAdapter
:
BannerAdapter
?
=
null
private
var
bannerAdapter
:
BannerAdapter
?
=
null
private
var
columnsAdapter
:
ShortPlayColumnsAdapter
?
=
null
private
var
columnsAdapter
:
ShortPlayColumnsAdapter
?
=
null
private
val
viewModel
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
ViewModelProvider
(
this
)[
ShortPlayViewModel
::
class
.
java
]
}
override
fun
initView
()
{
override
fun
initView
()
{
super
.
initView
()
super
.
initView
()
binding
.
root
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
binding
.
root
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
contactAdapter
=
ConcatAdapter
()
contactAdapter
=
ConcatAdapter
()
binding
.
rv
.
adapter
=
contactAdapter
binding
.
rv
.
adapter
=
contactAdapter
initBannerAdapter
()
lifecycleScope
.
launch
{
initBannerAdapter
()
viewModel
.
homeCategoryFlow
.
collectLatest
{
id
->
initNewShortAdapter
()
when
(
id
)
{
initCategoryAdapter
()
0L
->
initNewShortAdapter
()
else
->
initCategoryShortAdapter
(
listOf
(
id
))
}
}
}
binding
.
rv
.
addOnScrollListener
(
object
:
RecyclerView
.
OnScrollListener
()
{
binding
.
rv
.
addOnScrollListener
(
object
:
RecyclerView
.
OnScrollListener
()
{
override
fun
onScrolled
(
recyclerView
:
RecyclerView
,
dx
:
Int
,
dy
:
Int
)
{
override
fun
onScrolled
(
recyclerView
:
RecyclerView
,
dx
:
Int
,
dy
:
Int
)
{
if
(
recyclerView
.
computeVerticalScrollExtent
()
+
recyclerView
.
computeVerticalScrollOffset
()
>=
recyclerView
.
computeVerticalScrollRange
())
{
if
(
recyclerView
.
computeVerticalScrollExtent
()
+
recyclerView
.
computeVerticalScrollOffset
()
>=
recyclerView
.
computeVerticalScrollRange
())
{
LogEx
.
logDebug
(
TAG
,
"loadMore"
)
LogEx
.
logDebug
(
TAG
,
"loadMore"
)
viewModel
.
sendHomeCategoryFlow
()
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
viewModel
?.
getCategoryListFlow
()
}
}
}
}
})
})
}
}
private
fun
initCategoryShortAdapter
(
categoryIds
:
List
<
Long
>)
{
private
fun
initCategoryAdapter
()
{
viewModel
.
getFeedListByCategoryIds
(
categoryIds
,
null
)
{
list
->
if
(
list
.
size
>
4
)
{
val
activity
=
requireActivity
()
as
MainActivity
?
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
runOnUiThread
{
lifecycleScope
.
launch
{
val
ids
=
categoryIds
[
0
]
activity
?.
viewModel
?.
categoryList
?.
collectLatest
{
list
->
val
categoryTitle
=
viewModel
.
categoryTitle
(
requireContext
(),
ids
)
if
(
list
.
size
>
4
)
{
var
ids
=
1L
kotlin
.
runCatching
{
ids
=
list
[
0
].
categories
[
0
].
id
}
val
categoryTitle
=
activity
.
viewModel
.
categoryTitle
(
requireContext
(),
ids
)
val
categoryAdapter
=
ShortPlayCategoryAdapter
(
categoryTitle
,
list
)
val
categoryAdapter
=
ShortPlayCategoryAdapter
(
categoryTitle
,
list
)
categoryAdapter
.
itemClick
=
::
shortPlayClick
categoryAdapter
.
itemClick
=
::
shortPlayClick
categoryAdapter
.
categoryClick
=
{
categoryAdapter
.
categoryClick
=
{
...
@@ -80,11 +74,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
...
@@ -80,11 +74,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
}
}
private
fun
initBannerAdapter
()
{
private
fun
initBannerAdapter
()
{
viewModel
.
getPopularDrama
{
list
->
val
activity
=
requireActivity
()
as
MainActivity
?
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
runOnUiThread
{
bannerAdapter
=
BannerAdapter
()
// LogEx.logDebug(TAG, "list=${list.size}")
bannerAdapter
=
BannerAdapter
(
list
)
bannerAdapter
?.
let
{
bannerAdapter
?.
let
{
it
.
paletteAction
=
{
it
.
paletteAction
=
{
binding
.
root
.
setBackgroundColor
(
it
)
binding
.
root
.
setBackgroundColor
(
it
)
...
@@ -96,8 +87,12 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
...
@@ -96,8 +87,12 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
}
}
contactAdapter
?.
addAdapter
(
0
,
it
)
contactAdapter
?.
addAdapter
(
0
,
it
)
}
}
}
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
activity
?.
viewModel
?.
bannerList
?.
collectLatest
{
bannerList
->
LogEx
.
logDebug
(
TAG
,
"bannerList=${bannerList.size}"
)
bannerAdapter
?.
submitList
(
listOf
(
bannerList
))
}
}
}
}
}
...
@@ -105,9 +100,9 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
...
@@ -105,9 +100,9 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
override
fun
onResumeOneShoot
()
{
override
fun
onResumeOneShoot
()
{
super
.
onResumeOneShoot
()
super
.
onResumeOneShoot
()
binding
.
root
.
postDelayed
({
bannerAdapter
?.
setBannerAutoLoop
(
true
)
val
activity
=
requireActivity
()
as
MainActivity
?
},
1500
)
activity
?.
viewModel
?.
getCategoryListFlow
(
true
)
}
}
override
fun
onResume
()
{
override
fun
onResume
()
{
...
@@ -120,15 +115,16 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
...
@@ -120,15 +115,16 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
}
}
private
fun
initNewShortAdapter
()
{
private
fun
initNewShortAdapter
()
{
viewModel
.
getNewDrama
{
list
->
if
(
list
.
size
>
4
)
{
val
activity
=
requireActivity
()
as
MainActivity
?
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
runOnUiThread
{
columnsAdapter
=
ShortPlayColumnsAdapter
(
"New Short"
)
columnsAdapter
=
ShortPlayColumnsAdapter
(
"New Short"
,
list
)
columnsAdapter
?.
let
{
contactAdapter
?.
addAdapter
(
it
)
}
columnsAdapter
?.
let
{
contactAdapter
?.
addAdapter
(
it
)
}
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
activity
?.
viewModel
?.
newList
?.
collectLatest
{
list
->
if
(
list
.
size
>
4
)
{
columnsAdapter
?.
submitList
(
listOf
(
list
))
}
}
}
}
viewModel
.
sendHomeCategoryFlow
()
}
}
}
}
...
...
app/src/main/java/com/base/appzxhy/ui/main/MainActivity.kt
View file @
118a34f7
...
@@ -3,6 +3,8 @@ package com.base.appzxhy.ui.main
...
@@ -3,6 +3,8 @@ package com.base.appzxhy.ui.main
import
android.graphics.Color
import
android.graphics.Color
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
android.widget.TextView
import
android.widget.TextView
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.ViewModelProvider
import
androidx.navigation.NavController
import
androidx.navigation.NavController
import
androidx.navigation.fragment.NavHostFragment
import
androidx.navigation.fragment.NavHostFragment
import
com.base.appzxhy.R
import
com.base.appzxhy.R
...
@@ -10,6 +12,7 @@ import com.base.appzxhy.base.BaseActivity
...
@@ -10,6 +12,7 @@ import com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.bean.HomeTabUIBean
import
com.base.appzxhy.bean.HomeTabUIBean
import
com.base.appzxhy.databinding.ActivityMainBinding
import
com.base.appzxhy.databinding.ActivityMainBinding
import
com.base.appzxhy.databinding.ItemHomeTabBinding
import
com.base.appzxhy.databinding.ItemHomeTabBinding
import
com.base.appzxhy.ui.vm.ShortPlayViewModel
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.LogEx
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
...
@@ -27,11 +30,28 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
...
@@ -27,11 +30,28 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
HomeTabUIBean
(
R
.
drawable
.
bg_selector_profile
,
"Profile"
),
HomeTabUIBean
(
R
.
drawable
.
bg_selector_profile
,
"Profile"
),
)
)
}
}
val
viewModel
by
lazy
(
LazyThreadSafetyMode
.
NONE
)
{
ViewModelProvider
(
this
)[
ShortPlayViewModel
::
class
.
java
]
}
override
fun
initView
()
{
override
fun
initView
()
{
super
.
initView
()
super
.
initView
()
navController
=
(
supportFragmentManager
.
findFragmentById
(
R
.
id
.
fragment_container
)
as
NavHostFragment
).
navController
navController
=
(
supportFragmentManager
.
findFragmentById
(
R
.
id
.
fragment_container
)
as
NavHostFragment
).
navController
navController
.
addOnDestinationChangedListener
{
controller
,
destination
,
arguments
->
LogEx
.
logDebug
(
TAG
,
"addOnDestinationChangedListener"
)
if
(
destination
.
id
==
R
.
id
.
homeFragment
)
{
LogEx
.
logDebug
(
TAG
,
"addOnDestinationChangedListener homeFragment"
)
}
}
initTab
()
initTab
()
viewModel
.
getPopularDrama
()
viewModel
.
getNewDrama
()
}
}
private
fun
initTab
()
{
private
fun
initTab
()
{
...
@@ -68,15 +88,38 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
...
@@ -68,15 +88,38 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
private
fun
naviFragment
(
id
:
Int
)
{
private
fun
naviFragment
(
id
:
Int
)
{
when
(
id
)
{
when
(
id
)
{
0
->
{
0
->
{
if
(
navController
.
currentDestination
?.
id
!=
R
.
id
.
homeFragment
)
{
navController
.
navigate
(
R
.
id
.
homeFragment
)
}
}
}
1
->
{
1
->
{
navController
.
navigate
(
R
.
id
.
playSlideFragment
)
}
}
2
->
{
2
->
{
navController
.
navigate
(
R
.
id
.
myListFragment
)
}
}
3
->
{
navController
.
navigate
(
R
.
id
.
rewardsFragment
)
}
4
->
{
navController
.
navigate
(
R
.
id
.
profileFragment
)
}
}
}
private
fun
showFragment
(
targetFragment
:
Fragment
)
{
val
transaction
=
supportFragmentManager
.
beginTransaction
()
// 隐藏所有Fragment
for
(
fragment
in
supportFragmentManager
.
fragments
)
{
transaction
.
hide
(
fragment
)
}
}
// 显示当前需要显示的Fragment
transaction
.
show
(
targetFragment
)
transaction
.
commit
()
}
}
fun
TabLayout
.
Tab
.
setUnselected
()
{
fun
TabLayout
.
Tab
.
setUnselected
()
{
...
...
app/src/main/java/com/base/appzxhy/ui/main/MyListFragment.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.main
import
com.base.appzxhy.base.BaseFragment
import
com.base.appzxhy.databinding.FragmentMyListBinding
class
MyListFragment
:
BaseFragment
<
FragmentMyListBinding
>(
FragmentMyListBinding
::
inflate
)
{
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/main/PlaySlideFragment.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.main
import
com.base.appzxhy.base.BaseFragment
import
com.base.appzxhy.databinding.FragmentPlaySlideBinding
class
PlaySlideFragment
:
BaseFragment
<
FragmentPlaySlideBinding
>(
FragmentPlaySlideBinding
::
inflate
)
{
override
fun
initView
()
{
super
.
initView
()
}
override
fun
initListener
()
{
super
.
initListener
()
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/main/ProfileFragment.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.main
import
com.base.appzxhy.base.BaseFragment
import
com.base.appzxhy.databinding.FragmentProfileBinding
class
ProfileFragment
:
BaseFragment
<
FragmentProfileBinding
>(
FragmentProfileBinding
::
inflate
)
{
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/main/RewardsFragment.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.main
import
com.base.appzxhy.base.BaseFragment
import
com.base.appzxhy.databinding.FragmentRewardsBinding
class
RewardsFragment
:
BaseFragment
<
FragmentRewardsBinding
>(
FragmentRewardsBinding
::
inflate
)
{
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/play/CustomOverlayView.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.play
import
android.content.Context
import
android.util.AttributeSet
import
android.widget.FrameLayout
import
com.base.appzxhy.R
import
com.base.appzxhy.databinding.LayoutOverlayForyouBinding
import
com.bytedance.sdk.shortplay.api.PSSDK
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.bytedance.sdk.shortplay.api.ShortPlayFragment
/**
* 自定义播放页面悬浮成
*/
class
CustomOverlayView
:
FrameLayout
,
PSSDK
.
IControlView
{
private
var
layout
:
Int
=
0
constructor
(
context
:
Context
,
layout
:
Int
)
:
super
(
context
)
{
this
.
layout
=
layout
inflate
(
context
,
layout
,
this
)
}
constructor
(
context
:
Context
,
attrs
:
AttributeSet
?)
:
super
(
context
,
attrs
)
constructor
(
context
:
Context
,
attrs
:
AttributeSet
?,
defStyleAttr
:
Int
)
:
super
(
context
,
attrs
,
defStyleAttr
)
override
fun
getControlViewType
():
PSSDK
.
ControlViewType
{
return
PSSDK
.
ControlViewType
.
CUSTOM
}
override
fun
bindItemData
(
shortPlayFragment
:
ShortPlayFragment
?,
shortPlay
:
ShortPlay
,
index
:
Int
)
{
when
(
layout
)
{
R
.
layout
.
layout_overlay_foryou
->
{
val
binding
=
LayoutOverlayForyouBinding
.
bind
(
this
)
binding
.
tvTitle
.
text
=
shortPlay
.
title
binding
.
tvDesc
.
text
=
shortPlay
.
desc
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/play/CustomShareView.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.play
import
android.content.Context
import
android.graphics.Color
import
android.graphics.drawable.Drawable
import
android.view.Gravity
import
androidx.appcompat.widget.AppCompatTextView
import
androidx.core.content.ContextCompat
import
com.base.appzxhy.R
import
com.bytedance.sdk.shortplay.api.PSSDK
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.bytedance.sdk.shortplay.api.ShortPlayFragment
class
CustomShareView
:
AppCompatTextView
,
PSSDK
.
IControlView
{
private
val
TAG
=
"CustomShareView"
private
var
shareDrawable
:
Drawable
?
constructor
(
context
:
Context
)
:
super
(
context
)
{
gravity
=
Gravity
.
CENTER_HORIZONTAL
setTextColor
(
Color
.
parseColor
(
"#ffffff"
))
textSize
=
12f
shareDrawable
=
ContextCompat
.
getDrawable
(
context
,
R
.
mipmap
.
fy_share
)
val
size
=
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_32
)
shareDrawable
?.
setBounds
(
0
,
0
,
size
,
size
)
setCompoundDrawables
(
null
,
shareDrawable
,
null
,
null
)
}
override
fun
getControlViewType
():
PSSDK
.
ControlViewType
{
return
PSSDK
.
ControlViewType
.
Share
}
override
fun
bindItemData
(
fragment
:
ShortPlayFragment
?,
shortPlay
:
ShortPlay
,
index
:
Int
)
{
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/play/CustomView.kt
View file @
118a34f7
...
@@ -8,19 +8,15 @@ import android.view.Gravity
...
@@ -8,19 +8,15 @@ import android.view.Gravity
import
androidx.appcompat.widget.AppCompatTextView
import
androidx.appcompat.widget.AppCompatTextView
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.utils.LogEx
import
com.bytedance.sdk.shortplay.api.PSSDK
import
com.bytedance.sdk.shortplay.api.PSSDK
import
com.bytedance.sdk.shortplay.api.PSSDK.ControlStatus
import
com.bytedance.sdk.shortplay.api.PSSDK.IControlStatusView
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.bytedance.sdk.shortplay.api.ShortPlayFragment
import
com.bytedance.sdk.shortplay.api.ShortPlayFragment
class
CustomView
:
AppCompatTextView
,
IControlStatus
View
{
class
CustomView
:
AppCompatTextView
,
PSSDK
.
IControl
View
{
private
val
TAG
=
"CustomEPView"
private
val
TAG
=
"CustomEPView"
private
var
drawable
:
Drawable
?
private
var
drawable
:
Drawable
?
private
var
status
=
ControlStatus
.
Normal
constructor
(
context
:
Context
,
drawableRes
:
Int
)
:
super
(
context
)
{
constructor
(
context
:
Context
,
drawableRes
:
Int
)
:
super
(
context
)
{
gravity
=
Gravity
.
CENTER_HORIZONTAL
gravity
=
Gravity
.
CENTER_HORIZONTAL
...
@@ -42,18 +38,5 @@ class CustomView : AppCompatTextView, IControlStatusView {
...
@@ -42,18 +38,5 @@ class CustomView : AppCompatTextView, IControlStatusView {
override
fun
bindItemData
(
fragment
:
ShortPlayFragment
?,
shortPlay
:
ShortPlay
,
index
:
Int
)
{
override
fun
bindItemData
(
fragment
:
ShortPlayFragment
?,
shortPlay
:
ShortPlay
,
index
:
Int
)
{
}
}
@SuppressLint
(
"SetTextI18n"
)
override
fun
setCurrentStatus
(
shortPlay
:
ShortPlay
,
index
:
Int
,
status
:
ControlStatus
,
extraInfo
:
PSSDK
.
StatusExtraInfo
)
{
this
.
status
=
status
LogEx
.
logDebug
(
TAG
,
"setCurrentStatus status=$status"
)
}
override
fun
getCurrentStatus
(
shortPlay
:
ShortPlay
,
index
:
Int
):
ControlStatus
{
return
status
}
override
fun
onClicked
(
shortPlay
:
ShortPlay
,
index
:
Int
,
status
:
ControlStatus
):
ControlStatus
{
return
ControlStatus
.
Normal
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/play/PlayFullActivity.kt
View file @
118a34f7
package
com.base.appzxhy.ui.play
package
com.base.appzxhy.ui.play
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
import
android.content.Intent
import
android.view.Gravity
import
android.view.Gravity
import
android.view.View
import
android.view.View
import
android.widget.FrameLayout
import
android.widget.FrameLayout
...
@@ -8,6 +9,8 @@ import com.base.appzxhy.R
...
@@ -8,6 +9,8 @@ import com.base.appzxhy.R
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.base.BaseActivity
import
com.base.appzxhy.databinding.ActivityPlayFullBinding
import
com.base.appzxhy.databinding.ActivityPlayFullBinding
import
com.base.appzxhy.shortplay.PlayHistoryHelper
import
com.base.appzxhy.shortplay.PlayHistoryHelper
import
com.base.appzxhy.ui.views.DialogSelectEP
import
com.base.appzxhy.ui.views.ShortPlayEPDialog.showShortPlayEPDialog
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.ToastUtils.toast
import
com.base.appzxhy.utils.ToastUtils.toast
import
com.bytedance.sdk.shortplay.api.PSSDK
import
com.bytedance.sdk.shortplay.api.PSSDK
...
@@ -25,7 +28,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
...
@@ -25,7 +28,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
private
var
detailFragment
:
ShortPlayFragment
?
=
null
private
var
detailFragment
:
ShortPlayFragment
?
=
null
private
va
l
startFromIndex
=
1
//剧集下标
private
va
r
startFromIndex
=
1
//剧集下标
private
val
startFromSeconds
=
0
//开始秒数
private
val
startFromSeconds
=
0
//开始秒数
private
val
playHistory
:
PlayHistoryHelper
.
PlayHistory
=
PlayHistoryHelper
.
PlayHistory
()
private
val
playHistory
:
PlayHistoryHelper
.
PlayHistory
=
PlayHistoryHelper
.
PlayHistory
()
...
@@ -91,7 +94,9 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
...
@@ -91,7 +94,9 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
})
})
builder
.
progressBarMarginToBottom
(
10
)
builder
.
progressBarMarginToBottom
(
10
)
builder
.
enableImmersiveMode
(
1500
)
builder
.
enableImmersiveMode
(
5000
)
builder
.
enableAutoPlayNext
(
true
)
builder
.
displayProgressBar
(
false
)
detailFragment
=
PSSDK
.
createDetailFragment
(
shortPlay
,
builder
.
build
(),
object
:
PSSDK
.
ShortPlayDetailPageListener
{
detailFragment
=
PSSDK
.
createDetailFragment
(
shortPlay
,
builder
.
build
(),
object
:
PSSDK
.
ShortPlayDetailPageListener
{
...
@@ -177,21 +182,34 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
...
@@ -177,21 +182,34 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
customCollectView
.
setLayoutParams
(
collectParams
)
customCollectView
.
setLayoutParams
(
collectParams
)
views
.
add
(
customCollectView
)
views
.
add
(
customCollectView
)
//选集
//选集
,测试过无法触发点击事件
val
customPEView
=
CustomView
(
applicationContext
,
R
.
mipmap
.
fy_list
)
val
customPEView
=
CustomView
(
applicationContext
,
R
.
mipmap
.
fy_list
)
customPEView
.
text
=
resources
.
getString
(
R
.
string
.
list
)
customPEView
.
text
=
resources
.
getString
(
R
.
string
.
list
)
val
peParams
=
val
peParams
=
FrameLayout
.
LayoutParams
(
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
,
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
).
apply
{
FrameLayout
.
LayoutParams
(
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
,
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
).
apply
{
gravity
=
Gravity
.
BOTTOM
or
Gravity
.
RIGHT
gravity
=
Gravity
.
BOTTOM
or
Gravity
.
RIGHT
bottomMargin
=
aLLBottomMargin
+
itemMargin
bottomMargin
=
aLLBottomMargin
+
itemMargin
*
1
rightMargin
=
this
@PlayFullActivity
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_18
)
rightMargin
=
this
@PlayFullActivity
.
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_18
)
}
}
customPEView
.
setLayoutParams
(
peParams
)
customPEView
.
setLayoutParams
(
peParams
)
views
.
add
(
customPEView
)
views
.
add
(
customPEView
)
customPEView
.
setOnClickListener
{
detailFragment
?.
pausePlay
()
showShortPlayEPDialog
(
shortPlay
.
total
,
startFromIndex
,
5
,
object
:
DialogSelectEP
{
override
fun
dismissAction
()
{
detailFragment
?.
startPlay
()
}
override
fun
selectEPAction
(
ep
:
Int
)
{
super
.
selectEPAction
(
ep
)
startFromIndex
=
ep
detailFragment
?.
startPlayIndex
(
startFromIndex
)
}
})
}
//分享
//分享
val
customShareView
=
Custom
View
(
applicationContext
,
R
.
mipmap
.
fy_share
)
val
customShareView
=
Custom
ShareView
(
applicationContext
)
customShareView
.
text
=
resources
.
getString
(
R
.
string
.
share
)
customShareView
.
text
=
resources
.
getString
(
R
.
string
.
share
)
val
shareParams
=
val
shareParams
=
FrameLayout
.
LayoutParams
(
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
,
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
).
apply
{
FrameLayout
.
LayoutParams
(
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
,
FrameLayout
.
LayoutParams
.
WRAP_CONTENT
).
apply
{
...
@@ -201,6 +219,19 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
...
@@ -201,6 +219,19 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
}
}
customShareView
.
setLayoutParams
(
shareParams
)
customShareView
.
setLayoutParams
(
shareParams
)
views
.
add
(
customShareView
)
views
.
add
(
customShareView
)
customShareView
.
setOnClickListener
{
val
intent
=
Intent
(
Intent
.
ACTION_SEND
)
intent
.
setType
(
"text/plain"
)
intent
.
putExtra
(
Intent
.
EXTRA_SUBJECT
,
shortPlay
.
title
)
intent
.
putExtra
(
Intent
.
EXTRA_TEXT
,
shortPlay
.
desc
)
startActivity
(
Intent
.
createChooser
(
intent
,
"分享短剧"
))
}
//控制按钮
val
playControlView
=
CustomOverlayView
(
this
@PlayFullActivity
,
R
.
layout
.
layout_overlay_player
)
playControlView
.
layoutParams
=
FrameLayout
.
LayoutParams
(
FrameLayout
.
LayoutParams
.
MATCH_PARENT
,
FrameLayout
.
LayoutParams
.
MATCH_PARENT
)
views
.
add
(
playControlView
)
return
views
return
views
}
}
...
...
app/src/main/java/com/base/appzxhy/ui/views/ShortPlayEPDialog.kt
View file @
118a34f7
package
com.base.appzxhy.ui.views
package
com.base.appzxhy.ui.views
import
android.annotation.SuppressLint
import
android.content.Context
import
android.content.Context
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
android.view.View
import
android.view.View
import
android.widget.TextView
import
androidx.core.content.ContextCompat
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.bean.ShortPlayEPBean
import
com.base.appzxhy.bean.ShortPlayEPBean
import
com.base.appzxhy.databinding.DialogEpListBinding
import
com.base.appzxhy.databinding.DialogEpListBinding
import
com.base.appzxhy.ui.adapter.EPAdapter
import
com.base.appzxhy.utils.XmlEx.inflate
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetBehavior
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
com.google.android.material.bottomsheet.BottomSheetDialog
interface
DialogSelectEP
{
open
fun
dismissAction
()
{}
open
fun
selectEPAction
(
ep
:
Int
)
{}
}
object
ShortPlayEPDialog
{
object
ShortPlayEPDialog
{
fun
Context
.
showShortPlayEPDialog
(
totalEp
:
Int
,
lockEp
:
Int
,
playEp
:
Int
)
{
@SuppressLint
(
"SetTextI18n"
)
fun
Context
.
showShortPlayEPDialog
(
totalEp
:
Int
,
playEp
:
Int
,
lockEp
:
Int
=
9
,
callBack
:
DialogSelectEP
)
{
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
dialog
=
BottomSheetDialog
(
this
,
R
.
style
.
BottomSheetDialog
)
val
binding
=
DialogEpListBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
val
binding
=
DialogEpListBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setContentView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
fals
e
)
dialog
.
setCanceledOnTouchOutside
(
tru
e
)
dialog
.
show
()
dialog
.
show
()
...
@@ -24,30 +41,44 @@ object ShortPlayEPDialog {
...
@@ -24,30 +41,44 @@ object ShortPlayEPDialog {
//展开
//展开
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
behavior
.
state
=
BottomSheetBehavior
.
STATE_EXPANDED
val
textLength
=
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
dp_5
)
val
list
=
ArrayList
<
ShortPlayEPBean
>()
val
list
=
ArrayList
<
ShortPlayEPBean
>()
repeat
(
totalEp
)
{
i
->
repeat
(
totalEp
)
{
i
->
val
ep
=
i
+
1
val
ep
=
i
+
1
val
lock
=
ep
>=
lockEp
val
lock
=
ep
>=
lockEp
val
isPlay
=
ep
==
playEp
val
isPlay
=
ep
==
playEp
val
bean
=
ShortPlayEPBean
(
ep
,
lock
,
isPlay
)
val
bean
=
ShortPlayEPBean
(
ep
,
lock
,
isPlay
)
list
.
add
(
bean
)
list
.
add
(
bean
)
}
}
val
splitLists
=
list
.
chunked
(
50
)
splitLists
.
forEach
{
val
view
=
R
.
layout
.
item_ep_tab
.
inflate
(
this
)
view
.
findViewById
<
TextView
>(
R
.
id
.
tv
).
text
=
"${it.first().ep} - ${it.last().ep}"
binding
.
dslTabLayout
.
addView
(
view
)
}
binding
.
dslTabLayout
.
tabIndicator
.
indicatorDrawable
=
ContextCompat
.
getDrawable
(
this
,
R
.
drawable
.
indicator_bottom_line_ff3d71
)
binding
.
dslTabLayout
.
tabIndicator
.
indicatorEnableFlow
=
true
binding
.
dslTabLayout
.
tabIndicator
.
ignoreChildPadding
=
true
binding
.
dslTabLayout
.
tabIndicator
.
indicatorWidth
=
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_28
)
binding
.
dslTabLayout
.
tabIndicator
.
indicatorHeight
=
resources
.
getDimensionPixelSize
(
R
.
dimen
.
dp_2
)
val
adapter
=
EPAdapter
()
binding
.
rv
.
adapter
=
adapter
adapter
.
selectEp
=
{
ep
,
lock
->
dialog
.
dismiss
()
callBack
.
selectEPAction
(
ep
)
}
// binding.dslTabLayout.tabIndicator.indicatorDrawable =
binding
.
dslTabLayout
.
configTabLayoutConfig
{
// ContextCompat.getDrawable(this, R.drawable.indicator_bottom_line_ff3d71)
onSelectIndexChange
=
{
fromIndex
,
selectIndexList
,
reselect
,
fromUser
->
// binding.dslTabLayout.tabIndicator.indicatorEnableFlow = true
val
toIndex
=
selectIndexList
.
first
()
// binding.dslTabLayout.tabIndicator.ignoreChildPadding = true
val
epList
=
splitLists
[
toIndex
]
//
adapter
.
submitList
(
epList
)
// binding.dslTabLayout.configTabLayoutConfig {
}
// onSelectIndexChange = { fromIndex, selectIndexList, reselect, fromUser ->
}
// val toIndex = selectIndexList.first()
// binding.dslTabLayout.tabIndicator.indicatorWidth = tab.length * textLength
// }
// }
dialog
.
setOnDismissListener
{
callBack
.
dismissAction
()
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/views/ShortPlayQualityDialog.kt
0 → 100644
View file @
118a34f7
package
com.base.appzxhy.ui.views
import
android.app.AlertDialog
import
android.content.Context
import
android.view.Gravity
import
android.view.LayoutInflater
import
com.base.appzxhy.databinding.DialogPlayQualityBinding
object
ShortPlayQualityDialog
{
fun
Context
.
showShortPlayQualityDialog
()
{
val
dialog
=
AlertDialog
.
Builder
(
this
).
create
()
val
binding
=
DialogPlayQualityBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
false
)
dialog
.
show
()
val
params
=
dialog
.
window
?.
attributes
// params?.width = resources.getDimensionPixelOffset(R.dimen.dp_320)
// params?.height = resources.getDimensionPixelOffset(R.dimen.dp_400)
params
?.
gravity
=
Gravity
.
CENTER
// params?.y = 50
}
}
\ No newline at end of file
app/src/main/java/com/base/appzxhy/ui/vm/ShortPlayViewModel.kt
View file @
118a34f7
...
@@ -2,6 +2,7 @@ package com.base.appzxhy.ui.vm
...
@@ -2,6 +2,7 @@ package com.base.appzxhy.ui.vm
import
android.content.Context
import
android.content.Context
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModelStore
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
com.base.appzxhy.R
import
com.base.appzxhy.R
import
com.base.appzxhy.utils.LogEx
import
com.base.appzxhy.utils.LogEx
...
@@ -9,6 +10,7 @@ import com.bytedance.sdk.shortplay.api.PSSDK
...
@@ -9,6 +10,7 @@ import com.bytedance.sdk.shortplay.api.PSSDK
import
com.bytedance.sdk.shortplay.api.PSSDK.FeedListLoadResult
import
com.bytedance.sdk.shortplay.api.PSSDK.FeedListLoadResult
import
com.bytedance.sdk.shortplay.api.PSSDK.FeedListResultListener
import
com.bytedance.sdk.shortplay.api.PSSDK.FeedListResultListener
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
com.bytedance.sdk.shortplay.api.ShortPlay
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.flow.MutableStateFlow
import
kotlinx.coroutines.flow.MutableStateFlow
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
java.util.concurrent.atomic.AtomicBoolean
import
java.util.concurrent.atomic.AtomicBoolean
...
@@ -17,6 +19,10 @@ class ShortPlayViewModel : ViewModel() {
...
@@ -17,6 +19,10 @@ class ShortPlayViewModel : ViewModel() {
private
val
TAG
=
"ShortPlayViewModel"
private
val
TAG
=
"ShortPlayViewModel"
val
bannerList
=
MutableStateFlow
<
List
<
ShortPlay
>>(
listOf
())
var
newList
=
MutableStateFlow
<
List
<
ShortPlay
>>(
listOf
())
var
categoryList
=
MutableStateFlow
<
List
<
ShortPlay
>>(
listOf
())
companion
object
{
companion
object
{
const
val
CATEGORY_MALE_ID
=
1L
//男频
const
val
CATEGORY_MALE_ID
=
1L
//男频
...
@@ -33,13 +39,8 @@ class ShortPlayViewModel : ViewModel() {
...
@@ -33,13 +39,8 @@ class ShortPlayViewModel : ViewModel() {
const
val
CATEGORY_ACTION_ID
=
12L
//动作
const
val
CATEGORY_ACTION_ID
=
12L
//动作
const
val
CATEGORY_ACG_ID
=
13L
//二次元
const
val
CATEGORY_ACG_ID
=
13L
//二次元
const
val
CATEGORY_OTHERS_ID
=
14L
//其他
const
val
CATEGORY_OTHERS_ID
=
14L
//其他
}
private
val
categoryLoading
=
AtomicBoolean
(
false
)
private
val
tempCategoryList
=
listOf
(
var
homeCategoryFlow
=
MutableStateFlow
(-
1L
)
private
val
homeCategoryList
=
arrayListOf
(
0
,
CATEGORY_CITY_ID
,
CATEGORY_CITY_ID
,
CATEGORY_MODERN_ID
,
CATEGORY_MODERN_ID
,
CATEGORY_COMEDY_ID
,
CATEGORY_COMEDY_ID
,
...
@@ -53,37 +54,58 @@ class ShortPlayViewModel : ViewModel() {
...
@@ -53,37 +54,58 @@ class ShortPlayViewModel : ViewModel() {
CATEGORY_ACG_ID
,
CATEGORY_ACG_ID
,
CATEGORY_OTHERS_ID
CATEGORY_OTHERS_ID
)
)
}
private
val
categoryLoading
=
AtomicBoolean
(
false
)
private
val
homeCategoryList
=
ArrayList
<
Long
>().
apply
{
addAll
(
tempCategoryList
)
}
fun
sendHomeCategoryFlow
()
{
fun
getCategoryListFlow
(
if
(
homeCategoryList
.
isEmpty
())
return
reload
:
Boolean
=
false
,
if
(
categoryLoading
.
get
())
return
count
:
Int
=
12
,
)
{
if
(
reload
)
{
homeCategoryList
.
addAll
(
tempCategoryList
)
}
if
(
homeCategoryList
.
isNotEmpty
())
{
val
nextCategory
=
homeCategoryList
[
0
]
val
nextCategory
=
homeCategoryList
[
0
]
homeCategoryList
.
removeAt
(
0
)
homeCategoryList
.
removeAt
(
0
)
LogEx
.
logDebug
(
TAG
,
"nextCategory=$nextCategory"
)
viewModelScope
.
launch
{
PSSDK
.
requestFeedListByCategoryIds
(
listOf
(
nextCategory
),
null
,
1
,
count
,
object
:
FeedListResultListener
{
homeCategoryFlow
.
emit
(
nextCategory
)
override
fun
onFail
(
errorInfo
:
PSSDK
.
ErrorInfo
?)
{
LogEx
.
logDebug
(
TAG
,
"requestFeedListByCategoryIds ${errorInfo?.msg} ${errorInfo?.code}"
)
getCategoryListFlow
(
false
)
}
override
fun
onSuccess
(
result
:
FeedListLoadResult
<
ShortPlay
>?)
{
viewModelScope
.
launch
(
Dispatchers
.
IO
)
{
result
?.
dataList
?.
let
{
categoryList
.
emit
(
it
)
}
}
}
}
})
}
}
}
/**
/**
* 获取热门短剧列表
* 获取热门短剧列表
*/
*/
fun
getPopularDrama
(
fun
getPopularDrama
(
count
:
Int
=
10
,
count
:
Int
=
10
,
uiAction
:
(
list
:
List
<
ShortPlay
>)
->
Unit
)
{
)
{
PSSDK
.
requestPopularDrama
(
1
,
count
,
object
:
FeedListResultListener
{
PSSDK
.
requestPopularDrama
(
1
,
count
,
object
:
FeedListResultListener
{
override
fun
onFail
(
errorInfo
:
PSSDK
.
ErrorInfo
?)
{
override
fun
onFail
(
errorInfo
:
PSSDK
.
ErrorInfo
?)
{
LogEx
.
logDebug
(
TAG
,
"requestPopularDrama ${errorInfo?.msg} ${errorInfo?.code}"
)
LogEx
.
logDebug
(
TAG
,
"requestPopularDrama ${errorInfo?.msg} ${errorInfo?.code}"
)
}
}
override
fun
onSuccess
(
result
:
FeedListLoadResult
<
ShortPlay
>?)
{
override
fun
onSuccess
(
result
:
FeedListLoadResult
<
ShortPlay
>?)
{
// LogEx.logDebug(TAG, "hasMore=${result?.hasMore}")
result
?.
dataList
?.
let
{
// LogEx.logDebug(TAG, "fromCache=${result?.fromCache}")
viewModelScope
.
launch
{
bannerList
.
emit
(
it
)
}
// LogEx.logDebug(TAG, "dataList=${result?.dataList?.size}")
}
result
?.
dataList
?.
let
{
uiAction
.
invoke
(
it
)
}
}
}
})
})
}
}
...
@@ -93,7 +115,6 @@ class ShortPlayViewModel : ViewModel() {
...
@@ -93,7 +115,6 @@ class ShortPlayViewModel : ViewModel() {
*/
*/
fun
getNewDrama
(
fun
getNewDrama
(
count
:
Int
=
12
,
count
:
Int
=
12
,
uiAction
:
(
list
:
List
<
ShortPlay
>)
->
Unit
)
{
)
{
PSSDK
.
requestNewDrama
(
1
,
count
,
object
:
FeedListResultListener
{
PSSDK
.
requestNewDrama
(
1
,
count
,
object
:
FeedListResultListener
{
override
fun
onFail
(
errorInfo
:
PSSDK
.
ErrorInfo
?)
{
override
fun
onFail
(
errorInfo
:
PSSDK
.
ErrorInfo
?)
{
...
@@ -102,7 +123,9 @@ class ShortPlayViewModel : ViewModel() {
...
@@ -102,7 +123,9 @@ class ShortPlayViewModel : ViewModel() {
override
fun
onSuccess
(
result
:
FeedListLoadResult
<
ShortPlay
>?)
{
override
fun
onSuccess
(
result
:
FeedListLoadResult
<
ShortPlay
>?)
{
LogEx
.
logDebug
(
TAG
,
"dataList=${result?.dataList?.size}"
)
LogEx
.
logDebug
(
TAG
,
"dataList=${result?.dataList?.size}"
)
result
?.
dataList
?.
let
{
uiAction
.
invoke
(
it
)
}
result
?.
dataList
?.
let
{
viewModelScope
.
launch
{
newList
.
emit
(
it
)
}
}
}
}
})
})
}
}
...
@@ -151,6 +174,7 @@ class ShortPlayViewModel : ViewModel() {
...
@@ -151,6 +174,7 @@ class ShortPlayViewModel : ViewModel() {
}
}
}
}
/**
/**
* 获取分类标签接口
* 获取分类标签接口
*/
*/
...
...
app/src/main/res/drawable/bg_ff3d71_10.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#FF3D71"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/dialog_ep_list.xml
View file @
118a34f7
...
@@ -3,11 +3,11 @@
...
@@ -3,11 +3,11 @@
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"
wrap_content
"
>
android:layout_height=
"
336dp
"
>
<ImageView
<ImageView
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"
match_parent
"
android:layout_height=
"
336dp
"
android:background=
"@mipmap/fy_bg"
android:background=
"@mipmap/fy_bg"
android:minHeight=
"336dp"
android:minHeight=
"336dp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
...
@@ -31,8 +31,10 @@
...
@@ -31,8 +31,10 @@
android:id=
"@+id/dslTabLayout"
android:id=
"@+id/dslTabLayout"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"30dp"
android:layout_height=
"30dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginTop=
"20dp"
android:layout_marginTop=
"20dp"
app:layout_constraintTop_toBottomOf=
"@id/tv"
app:layout_constraintTop_toBottomOf=
"@id/tv"
app:tab_default_index=
"0"
app:tab_indicator_height=
"2dp"
>
app:tab_indicator_height=
"2dp"
>
</com.angcyo.tablayout.DslTabLayout>
</com.angcyo.tablayout.DslTabLayout>
...
@@ -41,12 +43,16 @@
...
@@ -41,12 +43,16 @@
android:id=
"@+id/v"
android:id=
"@+id/v"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:layout_height=
"1dp"
android:layout_marginTop=
"5dp"
android:background=
"@color/white"
android:background=
"@color/white"
app:layout_constraintTop_toBottomOf=
"@id/dslTabLayout"
/>
app:layout_constraintTop_toBottomOf=
"@id/dslTabLayout"
/>
<androidx.recyclerview.widget.RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv"
android:id=
"@+id/rv"
android:layout_width=
"0dp"
android:layout_marginBottom=
"20dp"
android:layout_marginTop=
"16dp"
android:layout_marginHorizontal=
"12dp"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_height=
"0dp"
android:orientation=
"vertical"
android:orientation=
"vertical"
app:layoutManager=
"androidx.recyclerview.widget.GridLayoutManager"
app:layoutManager=
"androidx.recyclerview.widget.GridLayoutManager"
...
...
app/src/main/res/layout/dialog_play_quality.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_my_list.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/black"
tools:context=
".ui.main.MyListFragment"
>
<com.angcyo.tablayout.DslTabLayout
android:id=
"@+id/dslTabLayout"
android:layout_width=
"250dp"
android:layout_height=
"50dp"
android:layout_marginTop=
"8dp"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
</com.angcyo.tablayout.DslTabLayout>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:padding=
"16dp"
android:src=
"@mipmap/my_bianji_n"
app:layout_constraintBottom_toBottomOf=
"@id/dslTabLayout"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/dslTabLayout"
>
<ImageView
android:id=
"@+id/ivIcon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/my_bianji_n"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<LinearLayout
android:id=
"@+id/llEmpty"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:src=
"@mipmap/mylistwushuju"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:text=
"@string/nothing_here_yet_add_something"
android:textColor=
"#B3FFFFFF"
android:textSize=
"16sp"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/btnDiscover"
android:layout_width=
"250dp"
android:layout_height=
"50dp"
android:layout_marginTop=
"52dp"
android:background=
"@drawable/bg_ff3d71_10"
android:gravity=
"center"
android:text=
"@string/discover_more"
android:textColor=
"@color/white"
android:textSize=
"18sp"
android:textStyle=
"bold"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_play_slide.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.PlaySlideFragment"
>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_profile.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.ProfileFragment"
>
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/fragment_rewards.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".ui.main.RewardsFragment"
>
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/fy_suo.png
deleted
100644 → 0
View file @
24bd4887
2.42 KB
app/src/main/res/layout/item_ep.xml
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"
0dp
"
android:layout_width=
"
match_parent
"
android:layout_height=
"46dp"
android:layout_height=
"46dp"
android:layout_columnWeight=
"1"
android:layout_columnWeight=
"1"
android:layout_margin=
"4dp"
android:layout_margin=
"4dp"
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
android:id=
"@+id/tvEP"
android:id=
"@+id/tvEP"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:gravity=
"center"
android:gravity=
"center"
android:textColor=
"@color/white"
android:textColor=
"@color/white"
android:textSize=
"16sp"
/>
android:textSize=
"16sp"
/>
...
@@ -25,10 +26,10 @@
...
@@ -25,10 +26,10 @@
<ImageView
<ImageView
android:id=
"@+id/ivLock"
android:id=
"@+id/ivLock"
android:layout_gravity=
"end|top"
android:src=
"@mipmap/fy_suo"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"end|top"
android:src=
"@mipmap/fy_suo"
tools:ignore=
"ContentDescription"
/>
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/item_ep_tab.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/tv"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:paddingHorizontal=
"8dp"
android:paddingVertical=
"2dp"
android:text=
"1 - 50"
android:textColor=
"@color/white"
android:textSize=
"14sp"
android:textStyle=
"bold"
tools:ignore=
"HardcodedText"
>
</TextView>
\ No newline at end of file
app/src/main/res/layout/layout_overlay_foryou.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:background=
"#99000000"
>
<LinearLayout
android:layout_width=
"250dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom|start"
android:layout_marginStart=
"16dp"
android:layout_marginBottom=
"65dp"
android:orientation=
"vertical"
tools:ignore=
"UselessParent"
>
<TextView
android:id=
"@+id/tvTitle"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textColor=
"@color/white"
android:textSize=
"17sp"
android:textStyle=
"bold"
tools:text=
"Genius Baby Gets Daddy Back"
/>
<TextView
android:id=
"@+id/tvDesc"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"16dp"
android:ellipsize=
"end"
android:maxLines=
"2"
android:textColor=
"@color/white"
android:textSize=
"13sp"
tools:text=
"Afler a medical mishap, the virgin Violet Gray becomes pregnant wit... More"
/>
<LinearLayout
android:id=
"@+id/llBtn"
android:layout_width=
"match_parent"
android:layout_height=
"38dp"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"16dp"
android:background=
"@drawable/bg_ff3d71_10"
android:gravity=
"center"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:src=
"@mipmap/fy_poly"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"5dp"
android:text=
"Watch Now"
android:textColor=
"@color/white"
android:textSize=
"15sp"
tools:ignore=
"HardcodedText"
/>
</LinearLayout>
</LinearLayout>
</FrameLayout>
\ No newline at end of file
app/src/main/res/layout/layout_overlay_player.xml
0 → 100644
View file @
118a34f7
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:background=
"#99000000"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom"
android:layout_marginBottom=
"60dp"
>
<!-- <TextView-->
<!-- android:id="@+id/tvPlaySecond"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content" />-->
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
\ No newline at end of file
app/src/main/res/mipmap-xxhdpi/fy_poly.png
0 → 100644
View file @
118a34f7
1016 Bytes
app/src/main/res/mipmap-xxhdpi/my_bianji_n.png
0 → 100644
View file @
118a34f7
1.21 KB
app/src/main/res/mipmap-xxhdpi/my_bianji_s.png
0 → 100644
View file @
118a34f7
1.23 KB
app/src/main/res/mipmap-xxhdpi/mylistwushuju.png
0 → 100644
View file @
118a34f7
66.9 KB
app/src/main/res/navigation/nav_graph.xml
View file @
118a34f7
...
@@ -10,4 +10,24 @@
...
@@ -10,4 +10,24 @@
android:name=
"com.base.appzxhy.ui.main.HomeFragment"
android:name=
"com.base.appzxhy.ui.main.HomeFragment"
android:label=
"fragment_home"
android:label=
"fragment_home"
tools:layout=
"@layout/fragment_home"
/>
tools:layout=
"@layout/fragment_home"
/>
<fragment
android:id=
"@+id/myListFragment"
android:name=
"com.base.appzxhy.ui.main.MyListFragment"
android:label=
"fragment_my_list"
tools:layout=
"@layout/fragment_my_list"
/>
<fragment
android:id=
"@+id/playSlideFragment"
android:name=
"com.base.appzxhy.ui.main.PlaySlideFragment"
android:label=
"fragment_play_slide"
tools:layout=
"@layout/fragment_play_slide"
/>
<fragment
android:id=
"@+id/rewardsFragment"
android:name=
"com.base.appzxhy.ui.main.RewardsFragment"
android:label=
"fragment_rewards"
tools:layout=
"@layout/fragment_rewards"
/>
<fragment
android:id=
"@+id/profileFragment"
android:name=
"com.base.appzxhy.ui.main.ProfileFragment"
android:label=
"fragment_profile"
tools:layout=
"@layout/fragment_profile"
/>
</navigation>
</navigation>
\ No newline at end of file
app/src/main/res/values/dimens.xml
View file @
118a34f7
...
@@ -28,4 +28,5 @@
...
@@ -28,4 +28,5 @@
<dimen
name=
"dp_310"
>
310dp
</dimen>
<dimen
name=
"dp_310"
>
310dp
</dimen>
<dimen
name=
"dp_330"
>
330dp
</dimen>
<dimen
name=
"dp_330"
>
330dp
</dimen>
<dimen
name=
"dp_70"
>
70dp
</dimen>
<dimen
name=
"dp_70"
>
70dp
</dimen>
<dimen
name=
"dp_28"
>
28dp
</dimen>
</resources>
</resources>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
118a34f7
...
@@ -28,5 +28,7 @@
...
@@ -28,5 +28,7 @@
<string
name=
"others"
>
Others
</string>
<string
name=
"others"
>
Others
</string>
<string
name=
"share"
>
Share
</string>
<string
name=
"share"
>
Share
</string>
<string
name=
"list"
>
List
</string>
<string
name=
"list"
>
List
</string>
<string
name=
"discover_more"
>
Discover More
</string>
<string
name=
"nothing_here_yet_add_something"
>
Nothing here yet - Add something!
</string>
</resources>
</resources>
\ No newline at end of file
gradle.properties
View file @
118a34f7
...
@@ -15,6 +15,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
...
@@ -15,6 +15,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# Android operating system, and which are packaged with your app's APK
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX
=
true
android.useAndroidX
=
true
android.enableJetifier
=
true
# Kotlin code style for this project: "official" or "obsolete":
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style
=
official
kotlin.code.style
=
official
# Enables namespacing of each library's R class so that its R class includes only the
# Enables namespacing of each library's R class so that its R class includes only the
...
...
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