Commit b3ffe2fa authored by wanglei's avatar wanglei

...

parent 65685cbc
......@@ -114,6 +114,7 @@ dependencies {
implementation("com.github.angcyo.DslTablayout:ViewPager2Delegate:3.6.4")
implementation("io.github.litao0621:nifty-slider:2.0.2")
implementation("io.github.razerdp:BasePopup:3.2.1")
implementation("com.github.Dimezis:BlurView:version-2.0.6")
//firebase
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
......
......@@ -6,11 +6,13 @@ import android.graphics.Color
import android.graphics.drawable.Drawable
import android.view.ViewGroup
import android.widget.ImageView
import androidx.core.view.updatePadding
import androidx.palette.graphics.Palette
import com.base.appzxhy.R
import com.base.appzxhy.databinding.ItemBannerBinding
import com.base.appzxhy.databinding.ItemGalleryBannerBinding
import com.base.appzxhy.ui.adapter.CommonViewHolder
import com.base.appzxhy.utils.BarUtils
import com.base.appzxhy.utils.LogEx
import com.base.appzxhy.utils.XmlEx.inflate
import com.bumptech.glide.Glide
......@@ -19,14 +21,16 @@ import com.bumptech.glide.request.transition.Transition
import com.bytedance.sdk.shortplay.api.ShortPlay
import com.chad.library.adapter4.BaseQuickAdapter
import com.youth.banner.adapter.BannerAdapter
import com.youth.banner.listener.OnPageChangeListener
class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
private val TAG = "BannerAdapter"
var paletteAction: ((colorInt: Int) -> Unit)? = null
var playAction: ((shortPlay: ShortPlay) -> Unit)? = null
var binding: ItemBannerBinding? = null
private var paletteMap = HashMap<String, Int>()
var paletteCallBack: ((color: Int) -> Unit)? = null
override fun getItemCount(items: List<List<ShortPlay>>): Int {
return items.size
......@@ -39,16 +43,37 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
val context = holder.itemView.context
LogEx.logDebug(TAG, "onBindViewHolder")
val top = BarUtils.getStatusBarHeight() + context.resources.getDimensionPixelSize(R.dimen.dp_66)
binding?.root?.updatePadding(top = top)
val innerAdapter = binding?.banner?.adapter as GalleryAdapter?
if (innerAdapter == null && item.isNotEmpty()) {
LogEx.logDebug(TAG, "onBindViewHolder banner")
binding?.banner?.setAdapter(GalleryAdapter(item))
binding?.banner?.setLoopTime(2500)
//添加画廊效果
binding?.banner?.setBannerGalleryEffect(
context.resources.getDimensionPixelSize(R.dimen.dp_30),
context.resources.getDimensionPixelSize(R.dimen.dp_10)
)
binding?.banner?.setIndicator(binding?.indicator, false)
binding?.banner?.addOnPageChangeListener(object : OnPageChangeListener {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
}
override fun onPageSelected(position: Int) {
val bean = item[position]
val coverImage = bean.coverImage
val color = paletteMap[coverImage] ?: Color.BLACK
LogEx.logDebug(TAG, "position=$position coverImage=$coverImage color=$color")
paletteCallBack?.invoke(color)
binding?.root?.setBackgroundColor(color)
}
override fun onPageScrollStateChanged(state: Int) {
}
})
} else {
innerAdapter?.setDatas(item)
}
......@@ -89,7 +114,7 @@ class BannerAdapter : BaseQuickAdapter<List<ShortPlay>, CommonViewHolder>() {
val vibrantColor: Int = palette.getVibrantColor(Color.TRANSPARENT)
val mutedColor: Int = palette.getMutedColor(Color.TRANSPARENT)
// 使用这些颜色进行后续操作,例如设置背景色等
paletteAction?.invoke(mutedColor)
paletteMap[coverImage] = mutedColor
}
}
......
......@@ -6,6 +6,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.RecyclerView
import com.base.appzxhy.BuildConfig
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentHomeBinding
import com.base.appzxhy.ui.category.CategoryActivity
......@@ -32,7 +33,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
override fun initView() {
super.initView()
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
val top = BarUtils.getStatusBarHeight()+requireContext().resources.getDimensionPixelSize(R.dimen.dp_6)
binding.flSearch.updatePadding(top = top)
contactAdapter = ConcatAdapter()
binding.rv.adapter = contactAdapter
......@@ -80,11 +82,6 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
val activity = requireActivity() as MainActivity?
bannerAdapter = BannerAdapter()
bannerAdapter?.let {
it.paletteAction = {
if (isVisible && fragmentInit) {
binding.root.setBackgroundColor(it)
}
}
it.playAction = { shortPlay ->
startActivity(Intent(activity, PlayFullActivity::class.java).apply {
putExtra("data", Gson().toJson(shortPlay))
......
......@@ -12,6 +12,7 @@ import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.bean.HomeTabUIBean
import com.base.appzxhy.databinding.ActivityMainBinding
import com.base.appzxhy.databinding.ItemHomeTabBinding
import com.base.appzxhy.ui.main.mylist.MyListFragment
import com.base.appzxhy.ui.vm.ShortPlayViewModel
import com.base.appzxhy.utils.LogEx
import com.google.android.material.tabs.TabLayout
......
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
package com.base.appzxhy.ui.main.mylist
import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentHistoryPageBinding
class HistoryPageFragment : BaseFragment<FragmentHistoryPageBinding>(FragmentHistoryPageBinding::inflate) {
override fun initView() {
super.initView()
}
override fun initListener() {
super.initListener()
}
}
\ No newline at end of file
package com.base.appzxhy.ui.main.mylist
import androidx.core.content.ContextCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.angcyo.tablayout.delegate2.ViewPager2Delegate
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentMyListBinding
import com.base.appzxhy.utils.BarUtils
class MyListFragment : BaseFragment<FragmentMyListBinding>(FragmentMyListBinding::inflate) {
private val myListPage by lazy(LazyThreadSafetyMode.NONE) {
MyListPageFragment()
}
private val historyPage by lazy(LazyThreadSafetyMode.NONE) {
MyListPageFragment()
}
private val fragments = arrayOf(myListPage, historyPage)
private var pageAdapter: FragmentStateAdapter? = null
override fun initView() {
super.initView()
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
initViewPager2()
initTab()
}
private fun initViewPager2() {
pageAdapter = object : FragmentStateAdapter(this) {
override fun getItemCount(): Int {
return fragments.size
}
override fun createFragment(position: Int): Fragment {
return fragments[position]
}
}
binding.viewPager2.run {
isUserInputEnabled = false
offscreenPageLimit = 1
//https://www.jianshu.com/p/f69bd30cf5b0
//FragmentStateAdapter 这里必须传人fragment
adapter = pageAdapter
}
binding.viewPager2.registerOnPageChangeCallback(object :
ViewPager2.OnPageChangeCallback() {
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels)
}
override fun onPageSelected(position: Int) {
}
})
}
private fun initTab() {
binding.dslTabLayout.tabIndicator.indicatorDrawable =
ContextCompat.getDrawable(requireContext(), R.drawable.indicator_bottom_line)
binding.dslTabLayout.tabIndicator.indicatorWidth = resources.getDimensionPixelSize(R.dimen.dp_50)
binding.dslTabLayout.tabIndicator.indicatorHeight = resources.getDimensionPixelSize(R.dimen.dp_2)
binding.dslTabLayout.tabIndicator.ignoreChildPadding = true
binding.dslTabLayout.configTabLayoutConfig {
onSelectIndexChange = { fromIndex, selectIndexList, reselect, fromUser ->
val toIndex = selectIndexList.first()
}
}
ViewPager2Delegate.install(binding.viewPager2, binding.dslTabLayout)
}
override fun initListener() {
super.initListener()
}
}
\ No newline at end of file
package com.base.appzxhy.ui.main.mylist
import com.base.appzxhy.base.BaseFragment
import com.base.appzxhy.databinding.FragmentMyListPageBinding
class MyListPageFragment : BaseFragment<FragmentMyListPageBinding>(FragmentMyListPageBinding::inflate) {
override fun initView() {
super.initView()
}
override fun initListener() {
super.initListener()
}
}
\ No newline at end of file
package com.base.appzxhy.ui.play
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.util.SparseArray
import android.view.Gravity
......@@ -232,7 +231,7 @@ class PlayFullActivity : BaseActivity<ActivityPlayFullBinding>(ActivityPlayFullB
views.add(customPEView)
customPEView.setOnClickListener {
shortPlayFragment?.pausePlay()
showShortPlayEPDialog(shortPlay.total, startFromIndex, 5, object : DialogSelectEP {
showShortPlayEPDialog(shortPlay.total, startFromIndex, 0, object : DialogSelectEP {
override fun dismissAction() {
shortPlayFragment?.startPlay()
}
......
<?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.mylist.HistoryPageFragment">
<LinearLayout
android:id="@+id/llEmpty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
tools:ignore="UselessParent">
<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>
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<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:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:orientation="vertical"
tools:context=".ui.main.HomeFragment">
<LinearLayout
android:id="@+id/llSearch"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="5dp"
android:background="@drawable/bg_stroke_61ffffff_10"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="15dp"
android:src="@mipmap/h_shousuo"
tools:ignore="ContentDescription" />
<EditText
android:id="@+id/editSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="13dp"
android:background="@null"
android:singleLine="true"
android:textColor="#80FFFFFF"
android:textColorHint="#80FFFFFF"
android:textSize="17sp"
tools:hint="Snatched a Billionaire to be My H..."
tools:ignore="Autofill,LabelFor,TextFields,TouchTargetSizeCheck,VisualLintTextFieldSize" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="14dp"
android:background="@color/black"
android:overScrollMode="never"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
\ No newline at end of file
<eightbitlab.com.blurview.BlurView
android:id="@+id/flSearch"
app:blurOverlayColor="@color/black"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
android:paddingBottom="6dp"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/llSearch"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@drawable/bg_stroke_61ffffff_10"
android:gravity="center"
android:orientation="horizontal"
tools:ignore="UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="15dp"
android:src="@mipmap/h_shousuo"
tools:ignore="ContentDescription" />
<EditText
android:id="@+id/editSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="13dp"
android:background="@null"
android:singleLine="true"
android:textColor="#80FFFFFF"
android:textColorHint="#80FFFFFF"
android:textSize="17sp"
tools:hint="Snatched a Billionaire to be My H..."
tools:ignore="Autofill,LabelFor,TextFields,TouchTargetSizeCheck,VisualLintTextFieldSize" />
</LinearLayout>
</eightbitlab.com.blurview.BlurView>
</FrameLayout>
\ No newline at end of file
......@@ -5,19 +5,43 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".ui.main.MyListFragment">
tools:context=".ui.main.mylist.MyListFragment">
<com.angcyo.tablayout.DslTabLayout
android:id="@+id/dslTabLayout"
android:layout_width="250dp"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginTop="8dp"
app:tab_enable_text_bold="true"
app:tab_select_color="@color/white"
app:tab_deselect_color="#99FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:textSize="18sp"
android:layout_width="120dp"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/my_list" />
<TextView
android:textSize="18sp"
android:layout_width="120dp"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/history" />
</com.angcyo.tablayout.DslTabLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/dslTabLayout" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
......@@ -35,44 +59,5 @@
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
<?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:context=".ui.main.mylist.MyListPageFragment">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3"
tools:listitem="@layout/item_shortplay_style_2" />
<LinearLayout
android:id="@+id/llEmpty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
tools:ignore="UselessParent">
<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>
</FrameLayout>
\ No newline at end of file
......@@ -5,10 +5,6 @@
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
......@@ -5,10 +5,5 @@
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
......@@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:banner="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/root"
android:layout_height="wrap_content"
android:orientation="vertical">
......
......@@ -12,7 +12,7 @@
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/myListFragment"
android:name="com.base.appzxhy.ui.main.MyListFragment"
android:name="com.base.appzxhy.ui.main.mylist.MyListFragment"
android:label="fragment_my_list"
tools:layout="@layout/fragment_my_list" />
<fragment
......
......@@ -29,4 +29,6 @@
<dimen name="dp_330">330dp</dimen>
<dimen name="dp_70">70dp</dimen>
<dimen name="dp_28">28dp</dimen>
<dimen name="dp_60">60dp</dimen>
<dimen name="dp_66">66dp</dimen>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">Heel Short</string>
<string name="app_name">ReelDrama</string>
<string name="facebook_app_id">4512448902756291</string>
<string name="home">Home</string>
<string name="turn_on_notification">Turn on notification</string>
<string name="turn_on">Turn on</string>
<string name="preparing_advertisement">Preparing advertisement</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="for_you">For you</string>
<string name="my_list">My List</string>
<string name="rewards">Rewards</string>
......@@ -34,5 +32,7 @@
<string name="playback_speed">Playback Speed</string>
<string name="quality">Quality</string>
<string name="report_desc">Something wrong with this episode? Give feedback to help us improve your experience.</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
</resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment