diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ActorsService.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ActorsService.kt index d558b9c..61246b0 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ActorsService.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/api/service/ActorsService.kt @@ -5,6 +5,7 @@ import com.remax.visualnovel.entity.response.basenew.ResponseNew import com.remax.visualnovel.entity.request.ParamActorList import com.remax.visualnovel.entity.request.ParamActorTag import com.remax.visualnovel.entity.response.ActorBean +import com.remax.visualnovel.entity.response.ChatSound import com.remax.visualnovel.widget.custom.ActorTag import retrofit2.http.Body import retrofit2.http.GET @@ -19,5 +20,7 @@ interface ActorsService { suspend fun requestActorList(@Body param: ParamActorList): ResponseNew> + @GET(BuildConfig.API_BASE + "/tts/config/select/list") + suspend fun requestSoundList(): ResponseNew> } \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/request/ParamActorList.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/request/ParamActorList.kt index e42cc68..0f6fceb 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/request/ParamActorList.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/entity/request/ParamActorList.kt @@ -4,5 +4,5 @@ package com.remax.visualnovel.entity.request data class ParamActorList( var index: Int = 0, var limit: Int = 5, - var tagIds: List = listOf(), + var tagIds: MutableList = mutableListOf(), ) diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt index 87978db..8712d63 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ChatActivity.kt @@ -54,10 +54,6 @@ class ChatActivity : BaseBindingActivity() { override fun initView() { - /*ARouter.getInstance().inject(this) - StatusBarUtils.setStatusBarAndNavBarIsLight(this, false) - StatusBarUtils.setTransparent(this) - StatusBarUtil2.initImmersive(this, lightStatusBar = true) */ StatusBarUtil3.setImmersiveStatusBar(this, true) binding.toolbar.addRightIcon(R.mipmap.chat_title_setting) { binding.drawerMenu.openDrawer(GravityCompat.END) diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/MainActivity.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/MainActivity.kt index 7973715..729b874 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/MainActivity.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/MainActivity.kt @@ -17,12 +17,10 @@ import com.remax.visualnovel.event.model.tab.ContactTab import com.remax.visualnovel.event.model.tab.MainTab import com.remax.visualnovel.event.model.tab.OnTabChangedEvent import com.remax.visualnovel.extension.launchWithRequest -import com.remax.visualnovel.extension.setMargin import com.remax.visualnovel.extension.setOnClick import com.remax.visualnovel.extension.toast import com.remax.visualnovel.manager.login.LoginManager import com.remax.visualnovel.utils.Routers -import com.remax.visualnovel.utils.StatusBarUtils import com.hjq.permissions.XXPermissions import com.hjq.permissions.permission.PermissionLists import com.pengxr.modular.eventbus.generated.events.EventDefineOfUIEvents @@ -31,6 +29,7 @@ import com.remax.visualnovel.ui.main.actor.ActorListFragment import com.remax.visualnovel.ui.main.book.BookListFragment import com.remax.visualnovel.ui.main.history.HistoryFragment import com.remax.visualnovel.ui.main.managa.MangaListFragment +import com.remax.visualnovel.utils.StatusBarUtil3 import dagger.hilt.android.AndroidEntryPoint @@ -44,10 +43,9 @@ class MainActivity : BaseBindingActivity() { override fun initView() { ImmersionBar.with(this) .transparentStatusBar() - .statusBarColor(R.color.transparent) - .statusBarDarkFont(true) - .fitsSystemWindows(true) - .init(); + .init() + StatusBarUtil3.setImmersiveStatusBar(this, false) + onBackPressedDispatcher.addCallback(this) { if (mainViewModel.canBack) { @@ -60,8 +58,6 @@ class MainActivity : BaseBindingActivity() { with(binding) { with(viewPager2) { - setMargin(topMargin = StatusBarUtils.statusBarHeight) - val fragments = listOf( BookListFragment.newInstance(), MangaListFragment.newInstance(), diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/actor/ActorListFragment.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/actor/ActorListFragment.kt index c4e0b4e..36b6866 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/actor/ActorListFragment.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/actor/ActorListFragment.kt @@ -2,8 +2,6 @@ package com.remax.visualnovel.ui.main.actor import android.os.Bundle -import android.util.Log -import android.widget.Toast import androidx.fragment.app.viewModels import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.StaggeredGridLayoutManager @@ -21,7 +19,6 @@ import com.remax.visualnovel.entity.response.ActorBean import com.remax.visualnovel.extension.launchAndCollect2 import com.remax.visualnovel.utils.Routers import com.remax.visualnovel.utils.StatusBarUtil3 -import com.remax.visualnovel.widget.custom.ActorTag import dagger.hilt.android.AndroidEntryPoint import kotlin.getValue import kotlin.math.max @@ -52,13 +49,8 @@ class ActorListFragment : BaseBindingFragment() { } private fun setUI() { - with(binding.root) { - setPadding( - paddingLeft, - paddingTop + StatusBarUtil3.getStatusBarHeight(context), - paddingRight, - paddingBottom - ) + with (binding.toolbar) { + setPadding(paddingLeft, paddingTop + StatusBarUtil3.getStatusBarHeight(context), paddingRight, paddingBottom) } initTagLayout() @@ -105,12 +97,10 @@ class ActorListFragment : BaseBindingFragment() { tagFlowLayout.setTagDataList(tags) */ - tagFlowLayout.setOnTagClickListener { tag -> - Toast.makeText(context, "Clicked: ${tag.name}", Toast.LENGTH_SHORT).show() - } - - tagFlowLayout.setOnExpandStateChangeListener { isExpanded -> - Log.d("TagFlowLayout", "Expand state: $isExpanded") + tagFlowLayout.setOnSelectedTagsChangedListener { selectedTagIdList: List -> + mRequestParam.tagIds.clear() + mRequestParam.tagIds.addAll(selectedTagIdList) + getActorList(true, false) } } } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/book/BookListFragment.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/book/BookListFragment.kt index 5c12211..c8eeeee 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/book/BookListFragment.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/book/BookListFragment.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.viewModels import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter import com.dylanc.loadingstateview.BgColorType +import com.gyf.immersionbar.ImmersionBar import com.remax.visualnovel.app.base.BaseBindingFragment import com.remax.visualnovel.databinding.FragmentMainBookBinding import com.remax.visualnovel.utils.Routers @@ -29,13 +30,8 @@ class BookListFragment : BaseBindingFragment() { } private fun setUI() { - with(binding.root) { - setPadding( - paddingLeft, - paddingTop + StatusBarUtil3.getStatusBarHeight(context), - paddingRight, - paddingBottom - ) + with (binding.toolbar) { + setPadding(paddingLeft, paddingTop + StatusBarUtil3.getStatusBarHeight(context), paddingRight, paddingBottom) } } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/history/HistoryFragment.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/history/HistoryFragment.kt index 68e03c4..f4bb89b 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/history/HistoryFragment.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/history/HistoryFragment.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.viewModels import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter import com.dylanc.loadingstateview.BgColorType +import com.gyf.immersionbar.ImmersionBar import com.remax.visualnovel.app.base.BaseBindingFragment import com.remax.visualnovel.databinding.FragmentMainHistoryBinding import com.remax.visualnovel.utils.Routers @@ -18,7 +19,7 @@ import kotlin.getValue @Route(path = Routers.ROUTE_FRAG_HISTORY) class HistoryFragment : BaseBindingFragment() { - private val contactViewModel by viewModels() + private val mViewModel by viewModels() override fun onCreated(bundle: Bundle?) { setUI() @@ -29,13 +30,8 @@ class HistoryFragment : BaseBindingFragment() { } private fun setUI() { - with(binding.root) { - setPadding( - paddingLeft, - paddingTop + StatusBarUtil3.getStatusBarHeight(context), - paddingRight, - paddingBottom - ) + with (binding.toolbar) { + setPadding(paddingLeft, paddingTop + StatusBarUtil3.getStatusBarHeight(context), paddingRight, paddingBottom) } } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/managa/MangaListFragment.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/managa/MangaListFragment.kt index d76f078..1f5fe5b 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/managa/MangaListFragment.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/main/managa/MangaListFragment.kt @@ -5,6 +5,7 @@ import androidx.fragment.app.viewModels import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter import com.dylanc.loadingstateview.BgColorType +import com.gyf.immersionbar.ImmersionBar import com.remax.visualnovel.app.base.BaseBindingFragment import com.remax.visualnovel.databinding.FragmentMainMangaBinding import com.remax.visualnovel.utils.Routers @@ -18,7 +19,7 @@ import kotlin.getValue @Route(path = Routers.ROUTE_FRAG_MANGALIST) class MangaListFragment : BaseBindingFragment() { - private val contactViewModel by viewModels() + private val mViewModel by viewModels() override fun onCreated(bundle: Bundle?) { setUI() @@ -29,13 +30,12 @@ class MangaListFragment : BaseBindingFragment() { } private fun setUI() { - with(binding.root) { - setPadding( - paddingLeft, - paddingTop + StatusBarUtil3.getStatusBarHeight(context), - paddingRight, - paddingBottom - ) + with (binding.toolbar) { + setPadding(paddingLeft, paddingTop + StatusBarUtil3.getStatusBarHeight(context), paddingRight, paddingBottom) + } + + with(binding) { + } } diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/widget/custom/TagFlowLayout2.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/widget/custom/TagFlowLayout2.kt index 7d4f144..afccd4e 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/widget/custom/TagFlowLayout2.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/widget/custom/TagFlowLayout2.kt @@ -13,10 +13,10 @@ import androidx.appcompat.widget.AppCompatImageView import androidx.core.content.ContextCompat import com.remax.visualnovel.R import com.remax.visualnovel.extension.dpToPx -import com.remax.visualnovel.extension.spToPx import kotlin.math.max import kotlin.math.min import androidx.core.content.withStyledAttributes +import com.remax.visualnovel.utils.ResUtil import kotlin.collections.mutableListOf class TagFlowLayout2 @JvmOverloads constructor( @@ -26,11 +26,11 @@ class TagFlowLayout2 @JvmOverloads constructor( ) : ViewGroup(context, attrs, defStyleAttr) { // 属性变量 - private var horizontalSpacing = 10f.dpToPx() - private var verticalSpacing = 8f.dpToPx() - private var textSize = 12f.spToPx() - private var textColor = context.resources.getColor(R.color.tag_text_color) - private var textColorSelected = context.resources.getColor(R.color.white) + private var horizontalSpacing = ResUtil.getPixelSize(R.dimen.dp_10).toFloat() + private var verticalSpacing = ResUtil.getPixelSize(R.dimen.dp_8).toFloat() + private var textSize = ResUtil.getPixelSize(R.dimen.dp_12).toFloat() + private var textColor = ResUtil.getColor(R.color.tag_text_color) + private var textColorSelected = ResUtil.getColor(R.color.white) private var tagBackground: Drawable? = null private var maxLinesWhileShrink = 1 private var eachLineMaxTagNum = 2 @@ -39,19 +39,19 @@ class TagFlowLayout2 @JvmOverloads constructor( // 状态变量 - private var isExpanded = false + private var isExpanded = true // TODO- enable this as true if wanna default state is collapse private var actualLineCount = 0 private var showExpandButton = false private var eachLineAvailableWidth = 0 // 数据 - private val tagItems = mutableListOf() + private val mTagDataList = mutableListOf() private val tagViews = mutableListOf() private lateinit var expandIcon: ImageView // 监听器 - private var onTagClickListener: ((ActorTag) -> Unit)? = null - private var onExpandStateChangeListener: ((Boolean) -> Unit)? = null + private var onSelectedTagsChanged: ((List) -> Unit)? = null + init { initAttributes(attrs) @@ -110,23 +110,25 @@ class TagFlowLayout2 @JvmOverloads constructor( } } addView(expandIcon) + expandIcon.bringToFront() updateExpandButton() } fun setTagDataList(tags: List) { - tagItems.clear() + mTagDataList.clear() tagViews.forEach { removeView(it) } tagViews.clear() - tagItems.addAll(tags) + mTagDataList.addAll(tags) tags.forEach { tag -> val textView = createTagView(tag) tagViews.add(textView) addView(textView) } + expandIcon.bringToFront() requestLayout() } @@ -135,7 +137,7 @@ class TagFlowLayout2 @JvmOverloads constructor( text = tag.name setTextColor(textColor) textSize = textSize / resources.displayMetrics.scaledDensity - setPadding(10.dpToPx(), 7.dpToPx(), 10.dpToPx(), 7.dpToPx()) + setPadding(10.dpToPx(), 5.dpToPx(), 10.dpToPx(), 5.dpToPx()) setBackgroundResource(R.drawable.tag_flow_item_bg) isSingleLine = true ellipsize = TextUtils.TruncateAt.END @@ -143,14 +145,17 @@ class TagFlowLayout2 @JvmOverloads constructor( includeFontPadding = false setOnClickListener { - onTagClickListener?.invoke(tag) with(tag) { isSelected = !isSelected } - setTextColor(if (tag.isSelected) textColorSelected else textColor) setBackgroundResource(if (tag.isSelected) R.drawable.tag_flow_item_bg_selected else R.drawable.tag_flow_item_bg) requestLayout() + + onSelectedTagsChanged?.invoke( + mTagDataList + .filter { it.isSelected } + .map { it.id }) } } } @@ -185,7 +190,7 @@ class TagFlowLayout2 @JvmOverloads constructor( // 检查是否需要换行(考虑水平间距) val curLineNeedTotalWidth: Int = if (curLineTotalWidth == 0) childWidth - else curLineTotalWidth + horizontalSpacing.toInt() + childWidth + else curLineTotalWidth + horizontalSpacing.toInt() + childWidth if (curLineNeedTotalWidth > eachLineAvailableWidth) { // 换行处理 lineIndex++ @@ -290,7 +295,6 @@ class TagFlowLayout2 @JvmOverloads constructor( isExpanded = !isExpanded updateExpandButton() requestLayout() - onExpandStateChangeListener?.invoke(isExpanded) } private fun updateExpandButton() { @@ -298,13 +302,10 @@ class TagFlowLayout2 @JvmOverloads constructor( expandIcon.setImageDrawable(indicator) } - fun setOnTagClickListener(listener: (ActorTag) -> Unit) { - onTagClickListener = listener + fun setOnSelectedTagsChangedListener(listener: (List) -> Unit) { + onSelectedTagsChanged = listener } - fun setOnExpandStateChangeListener(listener: (Boolean) -> Unit) { - onExpandStateChangeListener = listener - } fun expand() { if (!isExpanded) { @@ -327,7 +328,7 @@ class TagFlowLayout2 @JvmOverloads constructor( } fun getSelectedTagList() : List { - return tagItems.filter { it.isSelected } + return mTagDataList.filter { it.isSelected } } diff --git a/VisualNovel/app/src/main/res/layout/activity_main.xml b/VisualNovel/app/src/main/res/layout/activity_main.xml index 30f5a42..ad1de9c 100644 --- a/VisualNovel/app/src/main/res/layout/activity_main.xml +++ b/VisualNovel/app/src/main/res/layout/activity_main.xml @@ -5,15 +5,16 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="false" + android:background="@mipmap/bg_level_1_page" android:orientation="vertical"> + + app:layout_constraintTop_toTopOf="parent"/> + + + + + + + + + + + + + + + + + + + \ No newline at end of file