update
This commit is contained in:
parent
d14b11fac6
commit
ac26183890
@ -103,7 +103,6 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onReceive()
|
onReceive()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import android.content.Intent
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.player.musicoo.App
|
import com.player.musicoo.App
|
||||||
@ -88,9 +89,22 @@ class DetailsListAdapter(
|
|||||||
if (meController.currentMediaItem?.mediaId == bean.videoId) {
|
if (meController.currentMediaItem?.mediaId == bean.videoId) {
|
||||||
binding.title.setTextColor(context.getColor(R.color.green))
|
binding.title.setTextColor(context.getColor(R.color.green))
|
||||||
binding.name.setTextColor(context.getColor(R.color.green_60))
|
binding.name.setTextColor(context.getColor(R.color.green_60))
|
||||||
|
|
||||||
|
binding.listPlayView.visibility = View.VISIBLE
|
||||||
|
binding.sortTv.visibility = View.GONE
|
||||||
|
if (image.visibility == View.GONE) {
|
||||||
|
binding.listPlayView.setBackgroundColor(context.getColor(R.color.transparent))
|
||||||
|
} else {
|
||||||
|
binding.listPlayView.setBackgroundColor(context.getColor(R.color.black_60))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
binding.title.setTextColor(context.getColor(R.color.white))
|
binding.title.setTextColor(context.getColor(R.color.white))
|
||||||
binding.name.setTextColor(context.getColor(R.color.white_60))
|
binding.name.setTextColor(context.getColor(R.color.white_60))
|
||||||
|
|
||||||
|
binding.listPlayView.visibility = View.GONE
|
||||||
|
if (image.visibility == View.GONE) {
|
||||||
|
binding.sortTv.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,11 +67,13 @@ class PlayListAdapter(
|
|||||||
val meController = MediaControllerManager.getController()
|
val meController = MediaControllerManager.getController()
|
||||||
if (meController != null && meController.currentMediaItem != null) {
|
if (meController != null && meController.currentMediaItem != null) {
|
||||||
if (meController.currentMediaItem?.mediaId == bean.mediaId) {
|
if (meController.currentMediaItem?.mediaId == bean.mediaId) {
|
||||||
|
binding.listPlayView.visibility = View.VISIBLE
|
||||||
binding.title.setTextColor(context.getColor(R.color.green))
|
binding.title.setTextColor(context.getColor(R.color.green))
|
||||||
binding.name.setTextColor(context.getColor(R.color.green_60))
|
binding.name.setTextColor(context.getColor(R.color.green_60))
|
||||||
} else {
|
} else {
|
||||||
binding.title.setTextColor(context.getColor(R.color.white))
|
binding.title.setTextColor(context.getColor(R.color.white))
|
||||||
binding.name.setTextColor(context.getColor(R.color.white_60))
|
binding.name.setTextColor(context.getColor(R.color.white_60))
|
||||||
|
binding.listPlayView.visibility = View.GONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,13 +3,16 @@ package com.player.musicoo.adapter
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
|
import com.player.musicoo.R
|
||||||
import com.player.musicoo.activity.MoPlayDetailsActivity
|
import com.player.musicoo.activity.MoPlayDetailsActivity
|
||||||
import com.player.musicoo.databinding.MusicResponsiveItemBinding
|
import com.player.musicoo.databinding.MusicResponsiveItemBinding
|
||||||
import com.player.musicoo.innertube.models.MusicCarouselShelfRenderer
|
import com.player.musicoo.innertube.models.MusicCarouselShelfRenderer
|
||||||
import com.player.musicoo.innertube.models.bodies.NextBody
|
import com.player.musicoo.innertube.models.bodies.NextBody
|
||||||
|
import com.player.musicoo.media.MediaControllerManager
|
||||||
|
|
||||||
class ResponsiveListAdapter(
|
class ResponsiveListAdapter(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
@ -63,7 +66,7 @@ class ResponsiveListAdapter(
|
|||||||
val playlistSetVideoId = watchEndpoint?.playlistSetVideoId
|
val playlistSetVideoId = watchEndpoint?.playlistSetVideoId
|
||||||
val params = watchEndpoint?.params
|
val params = watchEndpoint?.params
|
||||||
|
|
||||||
holder.bind(url, name, desc)
|
holder.bind(url, name, desc, videoId)
|
||||||
|
|
||||||
holder.itemView.setOnClickListener {
|
holder.itemView.setOnClickListener {
|
||||||
val intent = Intent(context, MoPlayDetailsActivity::class.java)
|
val intent = Intent(context, MoPlayDetailsActivity::class.java)
|
||||||
@ -87,7 +90,7 @@ class ResponsiveListAdapter(
|
|||||||
inner class ViewHolder(private val binding: MusicResponsiveItemBinding) :
|
inner class ViewHolder(private val binding: MusicResponsiveItemBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
|
|
||||||
fun bind(url: String?, name: String?, desc: String?) {
|
fun bind(url: String?, name: String?, desc: String?, videoID: String?) {
|
||||||
|
|
||||||
binding.apply {
|
binding.apply {
|
||||||
Glide.with(context)
|
Glide.with(context)
|
||||||
@ -95,6 +98,20 @@ class ResponsiveListAdapter(
|
|||||||
.into(image)
|
.into(image)
|
||||||
nameTv.text = name
|
nameTv.text = name
|
||||||
descTv.text = desc
|
descTv.text = desc
|
||||||
|
|
||||||
|
|
||||||
|
val meController = MediaControllerManager.getController()
|
||||||
|
if (meController != null && meController.currentMediaItem != null) {
|
||||||
|
if (meController.currentMediaItem?.mediaId == videoID) {
|
||||||
|
binding.listPlayView.visibility = View.VISIBLE
|
||||||
|
binding.nameTv.setTextColor(context.getColor(R.color.green))
|
||||||
|
binding.descTv.setTextColor(context.getColor(R.color.green_60))
|
||||||
|
} else {
|
||||||
|
binding.nameTv.setTextColor(context.getColor(R.color.white))
|
||||||
|
binding.descTv.setTextColor(context.getColor(R.color.white_60))
|
||||||
|
binding.listPlayView.visibility = View.GONE
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,20 +6,25 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import com.player.musicoo.databinding.FragmentMoHomeBinding
|
import com.player.musicoo.activity.MoBaseActivity
|
||||||
import com.player.musicoo.sp.AppStore
|
import com.player.musicoo.sp.AppStore
|
||||||
import com.player.musicoo.util.LogTag
|
import com.player.musicoo.util.LogTag
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.cancel
|
import kotlinx.coroutines.cancel
|
||||||
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
abstract class MoBaseFragment<T : ViewBinding> : Fragment(), CoroutineScope by MainScope() {
|
abstract class MoBaseFragment<T : ViewBinding> : Fragment(), CoroutineScope by MainScope() {
|
||||||
|
enum class Event {
|
||||||
|
FragmentOnResume,
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> T
|
protected abstract val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> T
|
||||||
protected lateinit var binding: T
|
protected lateinit var binding: T
|
||||||
protected val TAG = LogTag.VO_FRAGMENT_LOG
|
protected val TAG = LogTag.VO_FRAGMENT_LOG
|
||||||
protected val appStore by lazy { AppStore(requireContext()) }
|
protected val appStore by lazy { AppStore(requireContext()) }
|
||||||
|
protected val events = Channel<Event>(Channel.UNLIMITED)
|
||||||
|
|
||||||
protected abstract suspend fun onViewCreated()
|
protected abstract suspend fun onViewCreated()
|
||||||
|
|
||||||
@ -44,4 +49,9 @@ abstract class MoBaseFragment<T : ViewBinding> : Fragment(), CoroutineScope by M
|
|||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
cancel()
|
cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
events.trySend(Event.FragmentOnResume)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.player.musicoo.fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.core.view.allViews
|
||||||
import com.gyf.immersionbar.ktx.immersionBar
|
import com.gyf.immersionbar.ktx.immersionBar
|
||||||
import com.player.musicoo.databinding.FragmentMoHomeBinding
|
import com.player.musicoo.databinding.FragmentMoHomeBinding
|
||||||
import com.player.musicoo.innertube.Innertube
|
import com.player.musicoo.innertube.Innertube
|
||||||
@ -50,6 +51,13 @@ class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
events.onReceive {
|
||||||
|
when (it) {
|
||||||
|
Event.FragmentOnResume -> {
|
||||||
|
fragmentOnResume()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -104,12 +112,9 @@ class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
|||||||
for (home: Innertube.HomePage in it.homePage) {
|
for (home: Innertube.HomePage in it.homePage) {
|
||||||
for (content: MusicCarouselShelfRenderer.Content in home.contents) {
|
for (content: MusicCarouselShelfRenderer.Content in home.contents) {
|
||||||
if (content.musicResponsiveListItemRenderer != null) {
|
if (content.musicResponsiveListItemRenderer != null) {
|
||||||
binding.contentLayout.addView(
|
val musicResponsiveListView =
|
||||||
MusicResponsiveListView(
|
MusicResponsiveListView(requireActivity(), home)
|
||||||
requireActivity(),
|
binding.contentLayout.addView(musicResponsiveListView)
|
||||||
home
|
|
||||||
)
|
|
||||||
)
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if (content.musicTwoRowItemRenderer != null) {
|
if (content.musicTwoRowItemRenderer != null) {
|
||||||
@ -130,6 +135,18 @@ class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun fragmentOnResume(){
|
||||||
|
refreshAdapters()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun refreshAdapters() {//刷新home的单曲ui
|
||||||
|
for (i in 0 until binding.contentLayout.childCount) {
|
||||||
|
val child = binding.contentLayout.getChildAt(i)
|
||||||
|
if (child is MusicResponsiveListView) {
|
||||||
|
child.updateAdapter()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
initImmersionBar()
|
initImmersionBar()
|
||||||
|
|||||||
84
app/src/main/java/com/player/musicoo/view/MusicBarsView.kt
Normal file
84
app/src/main/java/com/player/musicoo/view/MusicBarsView.kt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
package com.player.musicoo.view
|
||||||
|
|
||||||
|
import android.animation.ValueAnimator
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Canvas
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.graphics.Paint
|
||||||
|
import android.util.AttributeSet
|
||||||
|
import android.util.TypedValue
|
||||||
|
import android.view.View
|
||||||
|
|
||||||
|
class MusicBarsView @JvmOverloads constructor(
|
||||||
|
context: Context,
|
||||||
|
attrs: AttributeSet? = null,
|
||||||
|
defStyleAttr: Int = 0
|
||||||
|
) : View(context, attrs, defStyleAttr) {
|
||||||
|
|
||||||
|
// 用于绘制柱子的 Paint 对象
|
||||||
|
private val barPaint = Paint().apply {
|
||||||
|
color = Color.parseColor("#FF80F988")
|
||||||
|
style = Paint.Style.FILL
|
||||||
|
}
|
||||||
|
|
||||||
|
// 每个柱子的宽度
|
||||||
|
private val barWidth = dpToPx(context,4f)
|
||||||
|
// 柱子之间的间距
|
||||||
|
private val barSpacing = dpToPx(context,2f)
|
||||||
|
// 柱子的圆角半径
|
||||||
|
private val cornerRadius = dpToPx(context,16f)
|
||||||
|
|
||||||
|
// 保存每个柱子高度的列表
|
||||||
|
private val barHeights = mutableListOf<Float>()
|
||||||
|
|
||||||
|
// 保存每个柱子动画的列表
|
||||||
|
private val animators = mutableListOf<ValueAnimator>()
|
||||||
|
|
||||||
|
init {
|
||||||
|
// 初始化柱子的高度并启动动画
|
||||||
|
for (i in 0 until 3) {
|
||||||
|
barHeights.add(0f)
|
||||||
|
startAnimation(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 启动动画
|
||||||
|
private fun startAnimation(index: Int) {
|
||||||
|
val animator = ValueAnimator.ofFloat(0f, 1f).apply {
|
||||||
|
duration = 500 // 动画持续时间为 500 毫秒
|
||||||
|
repeatCount = ValueAnimator.INFINITE // 无限重复动画
|
||||||
|
repeatMode = ValueAnimator.REVERSE // 反向重复
|
||||||
|
addUpdateListener { animation ->
|
||||||
|
// 更新柱子的高度
|
||||||
|
barHeights[index] = (animation.animatedValue as Float) * height
|
||||||
|
invalidate() // 重绘 View
|
||||||
|
}
|
||||||
|
startDelay = index * 200L // 设置动画的开始延迟时间
|
||||||
|
}
|
||||||
|
animators.add(animator)
|
||||||
|
animator.start() // 启动动画
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDraw(canvas: Canvas) {
|
||||||
|
super.onDraw(canvas)
|
||||||
|
|
||||||
|
val barCount = barHeights.size
|
||||||
|
val totalWidth = barCount * barWidth + (barCount - 1) * barSpacing
|
||||||
|
val startX = (width - totalWidth) / 2
|
||||||
|
|
||||||
|
// 绘制每个柱子
|
||||||
|
barHeights.forEachIndexed { index, barHeight ->
|
||||||
|
val left = startX + index * (barWidth + barSpacing)
|
||||||
|
val top = height - barHeight
|
||||||
|
val right = left + barWidth
|
||||||
|
val bottom = height.toFloat()
|
||||||
|
|
||||||
|
canvas.drawRoundRect(left, top, right, bottom, cornerRadius, cornerRadius, barPaint)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun dpToPx(context: Context, dp: Float): Float {
|
||||||
|
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.resources.displayMetrics)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -11,10 +11,14 @@ import com.player.musicoo.adapter.ResponsiveListAdapter
|
|||||||
import com.player.musicoo.adapter.SoundsOfNatureAdapter
|
import com.player.musicoo.adapter.SoundsOfNatureAdapter
|
||||||
import com.player.musicoo.innertube.Innertube
|
import com.player.musicoo.innertube.Innertube
|
||||||
import com.player.musicoo.util.GridSpacingItemDecoration
|
import com.player.musicoo.util.GridSpacingItemDecoration
|
||||||
|
import com.player.musicoo.util.LogTag
|
||||||
|
|
||||||
@SuppressLint("ViewConstructor")
|
@SuppressLint("ViewConstructor")
|
||||||
class MusicResponsiveListView(context: Context, homePage: Innertube.HomePage) :
|
class MusicResponsiveListView(context: Context, homePage: Innertube.HomePage) :
|
||||||
ModuleView(context) {
|
ModuleView(context) {
|
||||||
|
|
||||||
|
private var adapter: ResponsiveListAdapter? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
contentView = inflate(getContext(), R.layout.music_list_layout, this)
|
contentView = inflate(getContext(), R.layout.music_list_layout, this)
|
||||||
val title = contentView?.findViewById<TextView>(R.id.title)
|
val title = contentView?.findViewById<TextView>(R.id.title)
|
||||||
@ -22,9 +26,15 @@ class MusicResponsiveListView(context: Context, homePage: Innertube.HomePage) :
|
|||||||
|
|
||||||
val rv = contentView?.findViewById<RecyclerView>(R.id.rv)
|
val rv = contentView?.findViewById<RecyclerView>(R.id.rv)
|
||||||
|
|
||||||
val adapter = ResponsiveListAdapter(context, homePage.contents)
|
adapter = ResponsiveListAdapter(context, homePage.contents)
|
||||||
rv?.layoutManager = GridLayoutManager(context, 3, GridLayoutManager.HORIZONTAL, false)
|
rv?.layoutManager = GridLayoutManager(context, 3, GridLayoutManager.HORIZONTAL, false)
|
||||||
rv?.adapter = adapter
|
rv?.adapter = adapter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
fun updateAdapter() {
|
||||||
|
if (adapter != null) {
|
||||||
|
adapter?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
9
app/src/main/res/drawable/list_play_icon.xml
Normal file
9
app/src/main/res/drawable/list_play_icon.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="512"
|
||||||
|
android:viewportHeight="512">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF80F988"
|
||||||
|
android:pathData="m171.2,440a35.37,35.37 0,0 1,-17.5 -4.67c-12,-6.8 -19.46,-20 -19.46,-34.33v-290c0,-14.37 7.46,-27.53 19.46,-34.33a35.13,35.13 0,0 1,35.77 0.45l247.85,148.36a36,36 0,0 1,0 61l-247.89,148.4a35.5,35.5 0,0 1,-18.23 5.12z"/>
|
||||||
|
</vector>
|
||||||
@ -10,12 +10,12 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:paddingTop="12dp"
|
android:orientation="horizontal"
|
||||||
android:orientation="horizontal">
|
android:paddingTop="12dp">
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="48dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="48dp"
|
||||||
android:layout_marginEnd="16dp">
|
android:layout_marginEnd="16dp">
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
@ -38,26 +38,26 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sort_tv"
|
android:id="@+id/sort_tv"
|
||||||
android:layout_width="22dp"
|
android:layout_width="22dp"
|
||||||
android:gravity="center"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
android:fontFamily="@font/medium_font"
|
android:fontFamily="@font/medium_font"
|
||||||
|
android:gravity="center"
|
||||||
android:text="1"
|
android:text="1"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="16dp" />
|
android:textSize="16dp" />
|
||||||
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/currentPlayingLayout"
|
android:id="@+id/listPlayView"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/black_60"
|
|
||||||
android:layout_centerInParent="true"
|
|
||||||
android:visibility="gone">
|
android:visibility="gone">
|
||||||
|
|
||||||
<ImageView
|
<com.player.musicoo.view.MusicBarsView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="16dp"
|
||||||
android:src="@drawable/playing_small_green_icon" />
|
android:layout_centerInParent="true" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|||||||
@ -12,10 +12,15 @@
|
|||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
android:paddingTop="12dp">
|
android:paddingTop="12dp">
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:layout_width="48dp"
|
||||||
|
android:layout_height="48dp">
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:elevation="0dp"
|
android:elevation="0dp"
|
||||||
|
android:visibility="visible"
|
||||||
app:cardCornerRadius="4dp"
|
app:cardCornerRadius="4dp"
|
||||||
app:cardElevation="0dp">
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
@ -28,6 +33,22 @@
|
|||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/listPlayView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/black_60"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<com.player.musicoo.view.MusicBarsView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="16dp"
|
||||||
|
android:layout_centerInParent="true" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
@ -39,8 +60,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:maxLines="1"
|
|
||||||
android:fontFamily="@font/regular_font"
|
android:fontFamily="@font/regular_font"
|
||||||
|
android:maxLines="1"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="14dp" />
|
android:textSize="14dp" />
|
||||||
@ -50,8 +71,8 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:maxLines="1"
|
|
||||||
android:fontFamily="@font/regular_font"
|
android:fontFamily="@font/regular_font"
|
||||||
|
android:maxLines="1"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/white_60"
|
android:textColor="@color/white_60"
|
||||||
android:textSize="12dp" />
|
android:textSize="12dp" />
|
||||||
|
|||||||
@ -37,6 +37,20 @@
|
|||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
android:src="@mipmap/musicoo_logo_img" />
|
android:src="@mipmap/musicoo_logo_img" />
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/listPlayView"
|
||||||
|
android:visibility="gone"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/black_60">
|
||||||
|
|
||||||
|
<com.player.musicoo.view.MusicBarsView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="16dp"
|
||||||
|
android:layout_centerInParent="true" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|||||||
@ -10,4 +10,5 @@
|
|||||||
<color name="green">#FF80F988</color>
|
<color name="green">#FF80F988</color>
|
||||||
<color name="green_60">#9980F988</color>
|
<color name="green_60">#9980F988</color>
|
||||||
<color name="bottom_layout_bg_color">#1A1A1A</color>
|
<color name="bottom_layout_bg_color">#1A1A1A</color>
|
||||||
|
<color name="transparent">#00000000</color>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in New Issue
Block a user