diff --git a/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresActivity.kt b/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresActivity.kt index 1a7a46c..76db124 100644 --- a/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresActivity.kt +++ b/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresActivity.kt @@ -1,16 +1,11 @@ package com.jia.er.nebuluxe.app.home -import android.content.Intent -import android.graphics.Rect -import android.os.Bundle -import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import com.blankj.utilcode.util.NetworkUtils +import com.jia.er.nebuluxe.app.BuildConfig.DEBUG import com.jia.er.nebuluxe.app.R import com.jia.er.nebuluxe.app.basics.BaseActivity -import com.jia.er.nebuluxe.app.basics.Constants.CONSTANTS_short_play_id import com.jia.er.nebuluxe.app.data.ShortListCategoryDataInfo import com.jia.er.nebuluxe.app.databinding.ActivityGenresBinding import com.jia.er.nebuluxe.app.net.MainViewModel @@ -42,20 +37,13 @@ class GenresActivity : BaseActivity() { val manager1 = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) binding?.rvRanks?.layoutManager = manager1 binding?.rvRanks?.adapter = homeRankTrendingAdapter - homeRankTrendingAdapter?.submitList(it.data.list) - binding?.rvRanks?.addItemDecoration(object : RecyclerView.ItemDecoration() { - override fun getItemOffsets( - outRect: Rect, - view: View, - parent: RecyclerView, - state: RecyclerView.State - ) { - super.getItemOffsets(outRect, view, parent, state) - if (parent.getChildPosition(view) != (it.data.list.size - 1)) { - outRect.bottom = -100 - } - } - }) + val list = mutableListOf() + if (DEBUG) { + list.addAll(it.data.list) + list.addAll(it.data.list) + } + list.addAll(it.data.list) + homeRankTrendingAdapter?.submitList(list) homeRankTrendingAdapter?.isStateViewEnable = true homeRankTrendingAdapter?.setStateViewLayout(this, R.layout.layout_emptyview) // homeRankTrendingAdapter.addOnItemChildClickListener( diff --git a/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresAdapter.kt b/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresAdapter.kt index 30025e8..7ca0909 100644 --- a/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresAdapter.kt +++ b/app/src/main/java/com/jia/er/nebuluxe/app/home/GenresAdapter.kt @@ -19,39 +19,30 @@ import com.jia.er.nebuluxe.app.video.PlayerDetailActivity class GenresAdapter : BaseQuickAdapter(), FullSpanAdapterType { + val rlBg = arrayOf( + R.drawable.iv_genres_1, + R.drawable.iv_genres_2, + R.drawable.iv_genres_3, + R.drawable.iv_genres_4 + ) + override fun onBindViewHolder( holder: QuickViewHolder, position: Int, item: ShortListCategoryDataInfo.CategoryListData? ) { - when (position) { - 0 -> { - holder.setBackgroundResource(R.id.rl, R.drawable.iv_genres_1) - holder.setBackgroundResource(R.id.line, R.color.E3D4FF) - } - - 1 -> { - holder.setBackgroundResource(R.id.rl, R.drawable.iv_genres_2) - holder.setBackgroundResource(R.id.line, R.color.BDF5E2) - } - - 2 -> { - holder.setBackgroundResource(R.id.rl, R.drawable.iv_genres_3) - holder.setBackgroundResource(R.id.line, R.color.FFFA80) - } - - else -> { - holder.setBackgroundResource(R.id.rl, R.drawable.iv_genres_4) - holder.setBackgroundResource(R.id.line, R.color.F0C2E1) - } + if (position == 0) { + holder.setBackgroundResource(R.id.rl, R.drawable.iv_genres_1_first) + } else { + holder.setBackgroundResource(R.id.rl, rlBg[position % rlBg.size]) } +// holder.setBackgroundResource(R.id.line, rlBg[position % lineBg.size]) val view = holder.getView(R.id.rv_genres_item) holder.setText(R.id.tv_type, item?.category_name) holder.setText( R.id.tv_num, item?.short_play_list?.size.toString().plus("\n").plus("Dramas") ) - LOG.d("GenresAdapter", "onBindViewHolder.53:" + position) view?.layoutManager = manager view?.adapter = homeRankTrendingAdapter homeRankTrendingAdapter?.submitList(item?.short_play_list) @@ -59,6 +50,14 @@ class GenresAdapter : val homeRankTrendingAdapter = GenresItemAdapter() var manager: RecyclerView.LayoutManager? = null + + override fun getItemViewType( + position: Int, + list: List + ): Int { + return position + } + override fun onCreateViewHolder( context: Context, parent: ViewGroup, @@ -66,7 +65,7 @@ class GenresAdapter : ): QuickViewHolder { manager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) homeRankTrendingAdapter.setOnItemClickListener { adapter, view, position -> - LOG.d("GenresAdapter", "onCreateViewHolder.68:") + LOG.d("GenresAdapter", "onCreateViewHolder.68:" + viewType) var it = adapter.getItem(position) as ShortPlayListData LOG.d("GenresAdapter", "onCreateViewHolder.70:") context.startActivity( @@ -78,6 +77,10 @@ class GenresAdapter : ) }) } - return QuickViewHolder(R.layout.item_genres, parent) + if (viewType == 0) { + return QuickViewHolder(R.layout.item_genres_first, parent) + } else { + return QuickViewHolder(R.layout.item_genres, parent) + } } } diff --git a/app/src/main/java/com/jia/er/nebuluxe/app/home/HotAdapter.kt b/app/src/main/java/com/jia/er/nebuluxe/app/home/HotAdapter.kt index 8df86d9..f6c0a49 100644 --- a/app/src/main/java/com/jia/er/nebuluxe/app/home/HotAdapter.kt +++ b/app/src/main/java/com/jia/er/nebuluxe/app/home/HotAdapter.kt @@ -29,10 +29,8 @@ class HotAdapter : posterView.apply { // 顶部倾斜程度(左侧更低) setTopSlantOffsetDp(25f) - // 左上小圆角,其他正常 setTopLeftShortStyle(topLeftDp = 12f, otherDp = 18f) - // 如果还需更贴合 setCornerRadiiDp(12f, 18f, 18f, 18f) } diff --git a/app/src/main/java/com/jia/er/nebuluxe/app/home/SearchActivity.kt b/app/src/main/java/com/jia/er/nebuluxe/app/home/SearchActivity.kt index 3891df4..5a5f477 100644 --- a/app/src/main/java/com/jia/er/nebuluxe/app/home/SearchActivity.kt +++ b/app/src/main/java/com/jia/er/nebuluxe/app/home/SearchActivity.kt @@ -9,13 +9,15 @@ import android.widget.TextView import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.blankj.utilcode.util.KeyboardUtils -import com.bumptech.glide.Glide +import com.google.android.material.imageview.ShapeableImageView import com.jia.er.nebuluxe.app.R import com.jia.er.nebuluxe.app.basics.BaseActivity import com.jia.er.nebuluxe.app.basics.Constants +import com.jia.er.nebuluxe.app.data.BaseRes import com.jia.er.nebuluxe.app.data.ExampleKeywordDataRes import com.jia.er.nebuluxe.app.databinding.ActivitySearchBinding import com.jia.er.nebuluxe.app.net.MainViewModel +import com.jia.er.nebuluxe.app.utils.ImageLoadUtil import com.jia.er.nebuluxe.app.utils.Memory import com.jia.er.nebuluxe.app.utils.toast import com.jia.er.nebuluxe.app.video.PlayerDetailActivity @@ -73,31 +75,15 @@ class SearchActivity : BaseActivity() { openDetail(data.short_play_id) } } - binding.ivEmpty1.setOnClickListener(itemClickListener) - binding.ivEmpty2.setOnClickListener(itemClickListener) - binding.ivEmpty3.setOnClickListener(itemClickListener) - binding.ivEmpty4.setOnClickListener(itemClickListener) - binding.ivEmpty5.setOnClickListener(itemClickListener) binding.btnMore.setOnClickListener { skip2Activity(HotActivity::class.java) } mViewModel.hotsData.observe(this) { val lists = it.data?.list.orEmpty().take(5) // 限制最多5个元素 - lists.size.let { position -> - binding.ivEmpty1.visibility = if (position >= 1) View.VISIBLE else View.GONE - binding.ivEmpty2.visibility = if (position >= 2) View.VISIBLE else View.GONE - binding.ivEmpty3.visibility = if (position >= 3) View.VISIBLE else View.GONE - binding.ivEmpty4.visibility = if (position >= 4) View.VISIBLE else View.GONE - binding.ivEmpty5.visibility = if (position >= 5) View.VISIBLE else View.GONE - binding.ivEmpty1.setTag(it.data?.list[0]) - binding.ivEmpty2.setTag(it.data?.list[1]) - binding.ivEmpty3.setTag(it.data?.list[2]) - binding.ivEmpty4.setTag(it.data?.list[3]) - binding.ivEmpty5.setTag(it.data?.list[4]) - Glide.with(this).load(it.data?.list[0]?.image_url).into(binding.ivEmpty1) - Glide.with(this).load(it.data?.list[1]?.image_url).into(binding.ivEmpty2) - Glide.with(this).load(it.data?.list[2]?.image_url).into(binding.ivEmpty3) - Glide.with(this).load(it.data?.list[3]?.image_url).into(binding.ivEmpty4) - Glide.with(this).load(it.data?.list[4]?.image_url).into(binding.ivEmpty5) - + lists.size.let { size -> + setClickInfoAndVisibility(size, binding.ivEmpty1, it, 0, itemClickListener) + setClickInfoAndVisibility(size, binding.ivEmpty2, it, 1, itemClickListener) + setClickInfoAndVisibility(size, binding.ivEmpty3, it, 2, itemClickListener) + setClickInfoAndVisibility(size, binding.ivEmpty4, it, 3, itemClickListener) + setClickInfoAndVisibility(size, binding.ivEmpty5, it, 4, itemClickListener) } } mViewModel.searchData.observe(this) { @@ -118,6 +104,23 @@ class SearchActivity : BaseActivity() { mViewModel.hots() } + private fun setClickInfoAndVisibility( + size: Int, + iv: ShapeableImageView, + it: BaseRes, + index: Int, + itemClickListener: View.OnClickListener + ) { + if (size <= index) { + iv.visibility = View.GONE + } else { + iv.visibility = View.VISIBLE + iv.setTag(it.data?.list[index]) + ImageLoadUtil.loadImage(it.data?.list[index]?.image_url, iv) + iv.setOnClickListener(itemClickListener) + } + } + override fun onReturn() { super.onReturn() binding.emptyPan.visibility = View.VISIBLE diff --git a/app/src/main/res/drawable-xxhdpi/iv_genres_1.png b/app/src/main/res/drawable-xxhdpi/iv_genres_1.png index 33321af..9aa39e9 100644 Binary files a/app/src/main/res/drawable-xxhdpi/iv_genres_1.png and b/app/src/main/res/drawable-xxhdpi/iv_genres_1.png differ diff --git a/app/src/main/res/drawable-xxhdpi/iv_genres_1_first.png b/app/src/main/res/drawable-xxhdpi/iv_genres_1_first.png new file mode 100644 index 0000000..1385962 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/iv_genres_1_first.png differ diff --git a/app/src/main/res/drawable-xxhdpi/iv_genres_2.png b/app/src/main/res/drawable-xxhdpi/iv_genres_2.png index 998060a..5241125 100644 Binary files a/app/src/main/res/drawable-xxhdpi/iv_genres_2.png and b/app/src/main/res/drawable-xxhdpi/iv_genres_2.png differ diff --git a/app/src/main/res/drawable-xxhdpi/iv_genres_3.png b/app/src/main/res/drawable-xxhdpi/iv_genres_3.png index 94ab12b..33a53ce 100644 Binary files a/app/src/main/res/drawable-xxhdpi/iv_genres_3.png and b/app/src/main/res/drawable-xxhdpi/iv_genres_3.png differ diff --git a/app/src/main/res/drawable-xxhdpi/iv_genres_4.png b/app/src/main/res/drawable-xxhdpi/iv_genres_4.png index 86ee32f..5057f5a 100644 Binary files a/app/src/main/res/drawable-xxhdpi/iv_genres_4.png and b/app/src/main/res/drawable-xxhdpi/iv_genres_4.png differ diff --git a/app/src/main/res/drawable/bg_genres.xml b/app/src/main/res/drawable/bg_genres.xml index eee6481..ef0247c 100644 --- a/app/src/main/res/drawable/bg_genres.xml +++ b/app/src/main/res/drawable/bg_genres.xml @@ -2,8 +2,8 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_hot.xml b/app/src/main/res/layout/fragment_hot.xml index 8ce234b..b8dd918 100644 --- a/app/src/main/res/layout/fragment_hot.xml +++ b/app/src/main/res/layout/fragment_hot.xml @@ -45,6 +45,7 @@ android:layout_marginTop="-12dp" android:layout_marginRight="@dimen/padding_16px" android:overScrollMode="never" + tools:listitem="@layout/item_hot" android:scrollbars="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/item_genres.xml b/app/src/main/res/layout/item_genres.xml index 9f6d94c..45ff333 100644 --- a/app/src/main/res/layout/item_genres.xml +++ b/app/src/main/res/layout/item_genres.xml @@ -1,63 +1,87 @@ - + android:layout_height="@dimen/padding_263px" + android:layout_marginTop="@dimen/padding_n_120px" + android:background="@drawable/iv_genres_1"> - + android:orientation="horizontal" + android:weightSum="20"> - + + + android:layout_weight="18" + android:orientation="vertical"> - + - + - + - + - \ No newline at end of file + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_genres_first.xml b/app/src/main/res/layout/item_genres_first.xml new file mode 100644 index 0000000..34d0d47 --- /dev/null +++ b/app/src/main/res/layout/item_genres_first.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 057fbc2..8934809 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -44,6 +44,14 @@ 38dp 39dp 40dp + -40dp + -60dp + -50dp + -80dp + -90dp + -100dp + -110dp + -120dp 41dp 42dp 43dp diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 844e084..2d451e2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -27,7 +27,7 @@ squareupOkhttp = "4.10.0" squareupLoggingInterceptor = "4.10.0" squareupRetrofit = "2.9.0" squareupConverterGson = "2.9.0" -tencentMmkv = "1.3.7" +tencentMmkv = "1.3.14" utilcodex = "1.31.1" playServicesAdsIdentifier = "18.2.0" #androidBilling = "7.0.0"