mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	Remove the remaining MotionLayout (#5854)
* Remove the remaining MotionLayout * Use ImageButton instead of Blank View to handle taps in dead area And some tweaks
This commit is contained in:
		@@ -18,7 +18,6 @@ import eu.kanade.tachiyomi.source.model.SManga
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.getMainAppBarHeight
 | 
			
		||||
import eu.kanade.tachiyomi.ui.manga.MangaController
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.applySystemAnimatorScale
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
 | 
			
		||||
import eu.kanade.tachiyomi.util.view.loadAnyAutoPause
 | 
			
		||||
import eu.kanade.tachiyomi.util.view.setChips
 | 
			
		||||
@@ -90,9 +89,6 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
 | 
			
		||||
    inner class HeaderViewHolder(private val view: View) : RecyclerView.ViewHolder(view) {
 | 
			
		||||
        fun bind() {
 | 
			
		||||
            val summaryTransition = binding.mangaSummarySection.getTransition(R.id.manga_summary_section_transition)
 | 
			
		||||
            summaryTransition.applySystemAnimatorScale(view.context)
 | 
			
		||||
 | 
			
		||||
            // For rounded corners
 | 
			
		||||
            binding.mangaCover.clipToOutline = true
 | 
			
		||||
 | 
			
		||||
@@ -264,17 +260,14 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
                    val enabledLanguages = preferences.enabledLanguages().get()
 | 
			
		||||
                        .filterNot { it == "all" }
 | 
			
		||||
 | 
			
		||||
                    text = if (enabledLanguages.size == 1) {
 | 
			
		||||
                    val hasOneActiveLanguages = enabledLanguages.size == 1
 | 
			
		||||
                    val isInEnabledLanguages = source.lang in enabledLanguages
 | 
			
		||||
                    text = when {
 | 
			
		||||
                        // For edge cases where user disables a source they got manga of in their library.
 | 
			
		||||
                        if (source.lang !in enabledLanguages) {
 | 
			
		||||
                            mangaSource
 | 
			
		||||
                        } else {
 | 
			
		||||
                            // Hide the language tag when only one language is used.
 | 
			
		||||
                            source.name
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        // Display the language tag when multiple languages are used.
 | 
			
		||||
                        mangaSource
 | 
			
		||||
                        hasOneActiveLanguages && !isInEnabledLanguages -> mangaSource
 | 
			
		||||
                        // Hide the language tag when only one language is used.
 | 
			
		||||
                        hasOneActiveLanguages && isInEnabledLanguages -> source.name
 | 
			
		||||
                        else -> mangaSource
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    setOnClickListener {
 | 
			
		||||
@@ -286,16 +279,14 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Update manga status.
 | 
			
		||||
            binding.apply {
 | 
			
		||||
                val (statusDrawable, statusString) = when (manga.status) {
 | 
			
		||||
                    SManga.ONGOING -> R.drawable.ic_status_ongoing_24dp to R.string.ongoing
 | 
			
		||||
                    SManga.COMPLETED -> R.drawable.ic_status_completed_24dp to R.string.completed
 | 
			
		||||
                    SManga.LICENSED -> R.drawable.ic_status_licensed_24dp to R.string.licensed
 | 
			
		||||
                    else -> R.drawable.ic_status_unknown_24dp to R.string.unknown
 | 
			
		||||
                }
 | 
			
		||||
                mangaStatusIcon.setImageResource(statusDrawable)
 | 
			
		||||
                mangaStatus.setText(statusString)
 | 
			
		||||
            val (statusDrawable, statusString) = when (manga.status) {
 | 
			
		||||
                SManga.ONGOING -> R.drawable.ic_status_ongoing_24dp to R.string.ongoing
 | 
			
		||||
                SManga.COMPLETED -> R.drawable.ic_status_completed_24dp to R.string.completed
 | 
			
		||||
                SManga.LICENSED -> R.drawable.ic_status_licensed_24dp to R.string.licensed
 | 
			
		||||
                else -> R.drawable.ic_status_unknown_24dp to R.string.unknown
 | 
			
		||||
            }
 | 
			
		||||
            binding.mangaStatusIcon.setImageResource(statusDrawable)
 | 
			
		||||
            binding.mangaStatus.setText(statusString)
 | 
			
		||||
 | 
			
		||||
            // Set the favorite drawable to the correct one.
 | 
			
		||||
            setFavoriteButtonState(manga.favorite)
 | 
			
		||||
@@ -322,6 +313,7 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
                        controller::performGenreSearch
 | 
			
		||||
                    )
 | 
			
		||||
                } else {
 | 
			
		||||
                    binding.mangaGenresTagsCompact.isVisible = false
 | 
			
		||||
                    binding.mangaGenresTagsCompactChips.isVisible = false
 | 
			
		||||
                    binding.mangaGenresTagsFullChips.isVisible = false
 | 
			
		||||
                }
 | 
			
		||||
@@ -331,25 +323,20 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
                    binding.mangaSummaryText.clicks(),
 | 
			
		||||
                    binding.mangaInfoToggleMore.clicks(),
 | 
			
		||||
                    binding.mangaInfoToggleLess.clicks(),
 | 
			
		||||
                    binding.mangaSummarySection.clicks()
 | 
			
		||||
                    binding.mangaSummarySection.clicks(),
 | 
			
		||||
                )
 | 
			
		||||
                    .onEach { toggleMangaInfo() }
 | 
			
		||||
                    .launchIn(controller.viewScope)
 | 
			
		||||
 | 
			
		||||
                if (initialLoad) {
 | 
			
		||||
                    binding.mangaGenresTagsCompact.requestLayout()
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Expand manga info if navigated from source listing or explicitly set to
 | 
			
		||||
                // (e.g. on tablets)
 | 
			
		||||
                if (initialLoad && (fromSource || isTablet)) {
 | 
			
		||||
                    toggleMangaInfo()
 | 
			
		||||
                    initialLoad = false
 | 
			
		||||
                    // wrap_content and autoFixTextSize can cause unwanted behaviour this tries to solve it
 | 
			
		||||
                    binding.mangaFullTitle.requestLayout()
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Refreshes will change the state and it needs to be set to correct state to display correctly
 | 
			
		||||
                if (binding.mangaSummaryText.maxLines == maxLines) {
 | 
			
		||||
                    binding.mangaSummarySection.transitionToState(R.id.start)
 | 
			
		||||
                } else {
 | 
			
		||||
                    binding.mangaSummarySection.transitionToState(R.id.end)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -361,34 +348,28 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
        private fun toggleMangaInfo() {
 | 
			
		||||
            val isCurrentlyExpanded = binding.mangaSummaryText.maxLines != maxLines
 | 
			
		||||
 | 
			
		||||
            if (isCurrentlyExpanded) {
 | 
			
		||||
                binding.mangaSummarySection.transitionToStart()
 | 
			
		||||
            } else {
 | 
			
		||||
                binding.mangaSummarySection.transitionToEnd()
 | 
			
		||||
            }
 | 
			
		||||
            binding.mangaInfoToggleMore.isVisible = isCurrentlyExpanded
 | 
			
		||||
            binding.mangaInfoScrim.isVisible = isCurrentlyExpanded
 | 
			
		||||
            binding.mangaInfoToggleMoreScrim.isVisible = isCurrentlyExpanded
 | 
			
		||||
            binding.mangaGenresTagsCompact.isVisible = isCurrentlyExpanded
 | 
			
		||||
            binding.mangaGenresTagsCompactChips.isVisible = isCurrentlyExpanded
 | 
			
		||||
 | 
			
		||||
            binding.mangaInfoToggleLess.isVisible = !isCurrentlyExpanded
 | 
			
		||||
            binding.mangaGenresTagsFullChips.isVisible = !isCurrentlyExpanded
 | 
			
		||||
 | 
			
		||||
            binding.mangaSummaryText.text = updateDescription(manga.description, isCurrentlyExpanded)
 | 
			
		||||
 | 
			
		||||
            binding.mangaSummaryText.maxLines = if (isCurrentlyExpanded) {
 | 
			
		||||
                maxLines
 | 
			
		||||
            } else {
 | 
			
		||||
                Int.MAX_VALUE
 | 
			
		||||
            binding.mangaSummaryText.maxLines = when {
 | 
			
		||||
                isCurrentlyExpanded -> maxLines
 | 
			
		||||
                else -> Int.MAX_VALUE
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private fun updateDescription(description: String?, isCurrentlyExpanded: Boolean): CharSequence? {
 | 
			
		||||
            return if (description.isNullOrBlank()) {
 | 
			
		||||
                view.context.getString(R.string.unknown)
 | 
			
		||||
            } else {
 | 
			
		||||
                // Max lines of 3 with a blank line looks whack so we remove
 | 
			
		||||
                // any line breaks that is 2 or more and replace it with 1
 | 
			
		||||
                // however, don't do this if already expanded because we need those blank lines
 | 
			
		||||
                if (!isCurrentlyExpanded) {
 | 
			
		||||
                    description
 | 
			
		||||
                } else {
 | 
			
		||||
                    description
 | 
			
		||||
                        .replace(Regex("[\\r\\n]{2,}", setOf(RegexOption.MULTILINE)), "\n")
 | 
			
		||||
                }
 | 
			
		||||
            return when {
 | 
			
		||||
                description.isNullOrBlank() -> view.context.getString(R.string.unknown)
 | 
			
		||||
                isCurrentlyExpanded -> description.replace(Regex("[\\r\\n]{2,}", setOf(RegexOption.MULTILINE)), "\n")
 | 
			
		||||
                else -> description
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -400,10 +381,13 @@ class MangaInfoHeaderAdapter(
 | 
			
		||||
        private fun setFavoriteButtonState(isFavorite: Boolean) {
 | 
			
		||||
            // Set the Favorite drawable to the correct one.
 | 
			
		||||
            // Border drawable if false, filled drawable if true.
 | 
			
		||||
            val (iconResource, stringResource) = when (isFavorite) {
 | 
			
		||||
                true -> R.drawable.ic_favorite_24dp to R.string.in_library
 | 
			
		||||
                false -> R.drawable.ic_favorite_border_24dp to R.string.add_to_library
 | 
			
		||||
            }
 | 
			
		||||
            binding.btnFavorite.apply {
 | 
			
		||||
                setIconResource(if (isFavorite) R.drawable.ic_favorite_24dp else R.drawable.ic_favorite_border_24dp)
 | 
			
		||||
                text =
 | 
			
		||||
                    context.getString(if (isFavorite) R.string.in_library else R.string.add_to_library)
 | 
			
		||||
                setIconResource(iconResource)
 | 
			
		||||
                text = context.getString(stringResource)
 | 
			
		||||
                isActivated = isFavorite
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -183,12 +183,11 @@
 | 
			
		||||
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
 | 
			
		||||
    <androidx.constraintlayout.motion.widget.MotionLayout
 | 
			
		||||
    <androidx.constraintlayout.widget.ConstraintLayout
 | 
			
		||||
        android:id="@+id/manga_summary_section"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginTop="8dp"
 | 
			
		||||
        app:layoutDescription="@xml/manga_summary_section_scene"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@id/manga_actions">
 | 
			
		||||
@@ -198,17 +197,17 @@
 | 
			
		||||
            style="@style/TextAppearance.Regular.Body1.Secondary"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:layout_marginStart="16dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:clickable="true"
 | 
			
		||||
            android:ellipsize="end"
 | 
			
		||||
            android:focusable="true"
 | 
			
		||||
            android:maxLines="3"
 | 
			
		||||
            android:ellipsize="end"
 | 
			
		||||
            android:textIsSelectable="false"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/manga_cover"
 | 
			
		||||
            tools:text="Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content" />
 | 
			
		||||
            app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
            tools:text="Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content" />
 | 
			
		||||
 | 
			
		||||
        <View
 | 
			
		||||
            android:id="@+id/manga_info_scrim"
 | 
			
		||||
@@ -226,35 +225,39 @@
 | 
			
		||||
            android:layout_height="18sp"
 | 
			
		||||
            android:background="@drawable/manga_info_more_gradient"
 | 
			
		||||
            android:backgroundTint="?android:attr/colorBackground"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
            app:layout_constraintStart_toStartOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintTop_toTopOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.button.MaterialButton
 | 
			
		||||
        <ImageButton
 | 
			
		||||
            android:id="@+id/manga_info_toggle_more"
 | 
			
		||||
            style="@style/Widget.Tachiyomi.Button.InlineButton"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:background="@drawable/ic_expand_more_24dp"
 | 
			
		||||
            android:backgroundTint="?android:attr/textColorPrimary"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
            android:layout_marginBottom="-4dp"
 | 
			
		||||
            android:paddingStart="0dp"
 | 
			
		||||
            android:paddingEnd="0dp"
 | 
			
		||||
            android:src="@drawable/ic_expand_more_24dp"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@id/manga_summary_text"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:tint="?android:attr/textColorPrimary" />
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.button.MaterialButton
 | 
			
		||||
        <ImageButton
 | 
			
		||||
            android:id="@+id/manga_info_toggle_less"
 | 
			
		||||
            style="@style/Widget.Tachiyomi.Button.InlineButton"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:background="@drawable/ic_expand_less_24dp"
 | 
			
		||||
            android:backgroundTint="?android:attr/textColorPrimary"
 | 
			
		||||
            android:paddingStart="8dp"
 | 
			
		||||
            android:paddingEnd="8dp"
 | 
			
		||||
            android:src="@drawable/ic_expand_less_24dp"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            tools:visibility="gone" />
 | 
			
		||||
            app:tint="?android:attr/textColorPrimary"
 | 
			
		||||
            tools:visibility="visible" />
 | 
			
		||||
 | 
			
		||||
        <HorizontalScrollView
 | 
			
		||||
            android:id="@+id/manga_genres_tags_compact"
 | 
			
		||||
@@ -294,6 +297,7 @@
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_less"
 | 
			
		||||
            tools:visibility="gone" />
 | 
			
		||||
 | 
			
		||||
    </androidx.constraintlayout.motion.widget.MotionLayout>
 | 
			
		||||
 | 
			
		||||
    </androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
 | 
			
		||||
</androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
 
 | 
			
		||||
@@ -63,18 +63,18 @@
 | 
			
		||||
        android:layout_marginEnd="16dp"
 | 
			
		||||
        android:gravity="center_vertical"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="@id/manga_cover_barrier"
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="@id/manga_info_barrier"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/manga_cover">
 | 
			
		||||
        app:layout_constraintStart_toEndOf="@+id/manga_cover"
 | 
			
		||||
        app:layout_constraintTop_toTopOf="@id/manga_cover_barrier">
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/manga_full_title"
 | 
			
		||||
            style="@style/TextAppearance.Medium.Title"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:textIsSelectable="false"
 | 
			
		||||
            android:text="@string/manga_info_full_title_label" />
 | 
			
		||||
            android:text="@string/manga_info_full_title_label"
 | 
			
		||||
            android:textIsSelectable="false" />
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/manga_author"
 | 
			
		||||
@@ -155,8 +155,8 @@
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_marginStart="16dp"
 | 
			
		||||
        android:layout_marginEnd="16dp"
 | 
			
		||||
        android:layout_marginTop="4dp"
 | 
			
		||||
        android:layout_marginEnd="16dp"
 | 
			
		||||
        android:orientation="horizontal"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
@@ -195,30 +195,29 @@
 | 
			
		||||
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
 | 
			
		||||
    <androidx.constraintlayout.motion.widget.MotionLayout
 | 
			
		||||
    <androidx.constraintlayout.widget.ConstraintLayout
 | 
			
		||||
        android:id="@+id/manga_summary_section"
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
        android:layout_width="0dp"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@id/manga_actions"
 | 
			
		||||
        app:layoutDescription="@xml/manga_summary_section_scene">
 | 
			
		||||
        app:layout_constraintTop_toBottomOf="@id/manga_actions">
 | 
			
		||||
 | 
			
		||||
        <TextView
 | 
			
		||||
            android:id="@+id/manga_summary_text"
 | 
			
		||||
            style="@style/TextAppearance.Regular.Body1.Secondary"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:layout_marginStart="16dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:clickable="true"
 | 
			
		||||
            android:ellipsize="end"
 | 
			
		||||
            android:focusable="true"
 | 
			
		||||
            android:maxLines="3"
 | 
			
		||||
            android:ellipsize="end"
 | 
			
		||||
            android:textIsSelectable="false"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/manga_cover"
 | 
			
		||||
            app:layout_constraintTop_toTopOf="parent"
 | 
			
		||||
            tools:text="Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content Collapsed summary content" />
 | 
			
		||||
 | 
			
		||||
        <View
 | 
			
		||||
@@ -237,35 +236,39 @@
 | 
			
		||||
            android:layout_height="18sp"
 | 
			
		||||
            android:background="@drawable/manga_info_more_gradient"
 | 
			
		||||
            android:backgroundTint="?android:attr/colorBackground"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
            app:layout_constraintStart_toStartOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintTop_toTopOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.button.MaterialButton
 | 
			
		||||
        <ImageButton
 | 
			
		||||
            android:id="@+id/manga_info_toggle_more"
 | 
			
		||||
            style="@style/Widget.Tachiyomi.Button.InlineButton"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:background="@drawable/ic_expand_more_24dp"
 | 
			
		||||
            android:backgroundTint="?android:attr/textColorPrimary"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="@+id/manga_info_toggle_more"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
            android:layout_marginBottom="-4dp"
 | 
			
		||||
            android:paddingStart="0dp"
 | 
			
		||||
            android:paddingEnd="0dp"
 | 
			
		||||
            android:src="@drawable/ic_expand_more_24dp"
 | 
			
		||||
            app:layout_constraintBottom_toBottomOf="@id/manga_summary_text"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:tint="?android:attr/textColorPrimary" />
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.button.MaterialButton
 | 
			
		||||
        <ImageButton
 | 
			
		||||
            android:id="@+id/manga_info_toggle_less"
 | 
			
		||||
            style="@style/Widget.Tachiyomi.Button.InlineButton"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:background="@drawable/ic_expand_less_24dp"
 | 
			
		||||
            android:backgroundTint="?android:attr/textColorPrimary"
 | 
			
		||||
            android:paddingStart="8dp"
 | 
			
		||||
            android:paddingEnd="8dp"
 | 
			
		||||
            android:src="@drawable/ic_expand_less_24dp"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            app:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            tools:visibility="gone" />
 | 
			
		||||
            app:tint="?android:attr/textColorPrimary"
 | 
			
		||||
            tools:visibility="visible" />
 | 
			
		||||
 | 
			
		||||
        <HorizontalScrollView
 | 
			
		||||
            android:id="@+id/manga_genres_tags_compact"
 | 
			
		||||
@@ -305,6 +308,6 @@
 | 
			
		||||
            app:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_less"
 | 
			
		||||
            tools:visibility="gone" />
 | 
			
		||||
 | 
			
		||||
    </androidx.constraintlayout.motion.widget.MotionLayout>
 | 
			
		||||
    </androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
 | 
			
		||||
</androidx.constraintlayout.widget.ConstraintLayout>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,133 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:motion="http://schemas.android.com/apk/res-auto">
 | 
			
		||||
 | 
			
		||||
    <Transition
 | 
			
		||||
        motion:constraintSetEnd="@+id/end"
 | 
			
		||||
        motion:constraintSetStart="@id/start"
 | 
			
		||||
        android:id="@+id/manga_summary_section_transition"
 | 
			
		||||
        motion:duration="1">
 | 
			
		||||
        <KeyFrameSet></KeyFrameSet>
 | 
			
		||||
        <OnClick motion:clickAction="toggle" />
 | 
			
		||||
    </Transition>
 | 
			
		||||
 | 
			
		||||
    <ConstraintSet android:id="@+id/start">
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_toggle_more_scrim"
 | 
			
		||||
            android:layout_width="36sp"
 | 
			
		||||
            android:layout_height="18sp"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="@+id/manga_summary_text"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="@+id/manga_summary_text"
 | 
			
		||||
            motion:layout_constraintBottom_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            android:visibility="visible" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_toggle_more"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:visibility="visible"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintBottom_toBottomOf="@id/manga_summary_text"
 | 
			
		||||
            android:layout_marginBottom="-4dp" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_toggle_less"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@id/manga_summary_text" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_genres_tags_compact"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:visibility="visible"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_genres_tags_full_chips"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginStart="16dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_less" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@+id/manga_cover"
 | 
			
		||||
            android:layout_marginStart="16dp"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:id="@+id/manga_summary_text"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            android:layout_marginEnd="16dp" />
 | 
			
		||||
    </ConstraintSet>
 | 
			
		||||
 | 
			
		||||
    <ConstraintSet android:id="@+id/end">
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_summary_text"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginTop="8dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:layout_marginStart="16dp"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@+id/manga_cover"
 | 
			
		||||
            motion:visibilityMode="ignore" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_scrim"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="@+id/manga_summary_text"
 | 
			
		||||
            android:layout_width="0dp"
 | 
			
		||||
            android:layout_height="24sp"
 | 
			
		||||
            motion:layout_constraintBottom_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="@+id/manga_summary_text"
 | 
			
		||||
            android:visibility="invisible" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_toggle_more_scrim"
 | 
			
		||||
            android:layout_width="36sp"
 | 
			
		||||
            android:layout_height="18sp"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="@+id/manga_summary_text"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="@+id/manga_summary_text"
 | 
			
		||||
            motion:layout_constraintBottom_toBottomOf="@+id/manga_summary_text"
 | 
			
		||||
            android:visibility="gone" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_toggle_more"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintBottom_toBottomOf="@id/manga_summary_text" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_info_toggle_less"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:visibility="visible"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@id/manga_summary_text" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_genres_tags_compact"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:visibility="gone"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_more" />
 | 
			
		||||
        <Constraint
 | 
			
		||||
            android:id="@+id/manga_genres_tags_full_chips"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_marginStart="16dp"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:visibility="visible"
 | 
			
		||||
            motion:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
            motion:layout_constraintStart_toStartOf="parent"
 | 
			
		||||
            motion:layout_constraintTop_toBottomOf="@+id/manga_info_toggle_less" />
 | 
			
		||||
    </ConstraintSet>
 | 
			
		||||
</MotionScene>
 | 
			
		||||
		Reference in New Issue
	
	Block a user