From e5f58f20c74457a88c6c51ad121fba6408dd0d8a Mon Sep 17 00:00:00 2001 From: TwistedUmbrellaX Date: Mon, 18 Mar 2024 18:18:35 -0400 Subject: [PATCH 01/26] fix: undo all of the margin hacks Using 72dp as the height appears to have been a bit of a hack to appear beyond the navigation bar. In cases where the bar is not present, such as landscape, this left a gap between the bottom of the screen and bar. On API 23, the result was the opposite. All of this can be addressed by simply relying on the actual measurements and not compensating for compensation. --- app/src/main/AndroidManifest.xml | 2 + app/src/main/java/ani/dantotsu/Functions.kt | 7 + .../main/java/ani/dantotsu/MainActivity.kt | 10 +- .../dantotsu/media/MediaDetailsActivity.kt | 17 ++- .../ani/dantotsu/profile/ProfileActivity.kt | 15 +- .../dantotsu/profile/activity/FeedActivity.kt | 20 ++- .../main/res/layout-land/activity_media.xml | 128 +++++++++--------- app/src/main/res/layout/activity_feed.xml | 5 +- app/src/main/res/layout/activity_media.xml | 1 - app/src/main/res/layout/activity_profile.xml | 3 +- 10 files changed, 124 insertions(+), 84 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cf650323..5e5e6c34 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -108,6 +108,7 @@ android:parentActivityName=".MainActivity" /> Unit) { diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index 9a528b80..a680dd63 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -5,6 +5,7 @@ import android.annotation.SuppressLint import android.app.Activity import android.content.Intent import android.graphics.Rect +import android.content.res.Configuration import android.os.Bundle import android.text.SpannableStringBuilder import android.util.TypedValue @@ -24,6 +25,7 @@ import androidx.core.text.bold import androidx.core.text.color import androidx.core.view.marginBottom import androidx.core.view.updateLayoutParams +import androidx.core.view.updateMargins import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle @@ -105,7 +107,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi //Ui init initActivity(this) - binding.mediaViewPager.updateLayoutParams { bottomMargin += navBarHeight } + binding.mediaViewPager.updateLayoutParams { bottomMargin = navBarHeight } val oldMargin = binding.mediaViewPager.marginBottom AndroidBug5497Workaround.assistActivity(this) { if (it) { @@ -120,6 +122,9 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi binding.mediaTabContainer.visibility = View.VISIBLE } } + val navBarMargin = if (resources.configuration.orientation == + Configuration.ORIENTATION_LANDSCAPE) navBarHeight else 0 + binding.mediaTabContainer.updateLayoutParams { rightMargin = navBarMargin } binding.mediaBanner.updateLayoutParams { height += statusBarHeight } binding.mediaBannerNoKen.updateLayoutParams { height += statusBarHeight } binding.mediaClose.updateLayoutParams { topMargin += statusBarHeight } @@ -432,6 +437,14 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi return R.id.info } + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + val margin = if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) navBarHeight else 0 + val params : ViewGroup.MarginLayoutParams = + binding.mediaTabContainer.layoutParams as ViewGroup.MarginLayoutParams + params.updateMargins(right = margin) + } + override fun onResume() { if (this::tabLayout.isInitialized) { tabLayout.selectTab(selected) @@ -602,4 +615,4 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi companion object { var mediaSingleton: Media? = null } -} \ No newline at end of file +} diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt index 78867e37..668af45a 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt @@ -3,6 +3,7 @@ package ani.dantotsu.profile import android.animation.ObjectAnimator import android.annotation.SuppressLint import android.content.Intent +import android.content.res.Configuration import android.os.Bundle import android.util.TypedValue import android.view.View @@ -11,6 +12,7 @@ import android.widget.PopupMenu import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams +import androidx.core.view.updateMargins import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle @@ -56,7 +58,9 @@ class ProfileActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListene setContentView(binding.root) screenWidth = resources.displayMetrics.widthPixels.toFloat() navBar = binding.profileNavBar - navBar.updateLayoutParams { bottomMargin = navBarHeight } + val navBarMargin = if (resources.configuration.orientation == + Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight + navBar.updateLayoutParams { bottomMargin = navBarMargin } val feedTab = navBar.createTab(R.drawable.ic_round_filter_24, "Feed") val profileTab = navBar.createTab(R.drawable.ic_round_person_24, "Profile") @@ -279,6 +283,13 @@ class ProfileActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListene } } + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + val margin = if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight + val params : ViewGroup.MarginLayoutParams = navBar.layoutParams as ViewGroup.MarginLayoutParams + params.updateMargins(bottom = margin) + } + override fun onResume() { if (this::navBar.isInitialized) { navBar.selectTabAt(selected) @@ -301,4 +312,4 @@ class ProfileActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListene else -> ProfileFragment.newInstance(user) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt b/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt index 98f0492b..6a85c640 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt @@ -1,9 +1,11 @@ package ani.dantotsu.profile.activity +import android.content.res.Configuration import android.os.Bundle import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams +import androidx.core.view.updateMargins import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle @@ -28,14 +30,16 @@ class FeedActivity : AppCompatActivity() { binding = ActivityFeedBinding.inflate(layoutInflater) setContentView(binding.root) navBar = binding.feedNavBar - navBar.updateLayoutParams { bottomMargin += navBarHeight } + val navBarMargin = if (resources.configuration.orientation == + Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight + navBar.updateLayoutParams { bottomMargin = navBarMargin } val personalTab = navBar.createTab(R.drawable.ic_round_person_24, "Following") val globalTab = navBar.createTab(R.drawable.ic_globe_24, "Global") navBar.addTab(personalTab) navBar.addTab(globalTab) binding.listTitle.text = getString(R.string.activities) binding.feedViewPager.updateLayoutParams { - bottomMargin += navBarHeight + bottomMargin = navBarMargin topMargin += statusBarHeight } binding.listToolbar.updateLayoutParams { topMargin += statusBarHeight } @@ -61,6 +65,16 @@ class FeedActivity : AppCompatActivity() { } } + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + val margin = if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight + val params : ViewGroup.MarginLayoutParams = + binding.feedViewPager.layoutParams as ViewGroup.MarginLayoutParams + val paramsNav : ViewGroup.MarginLayoutParams = navBar.layoutParams as ViewGroup.MarginLayoutParams + params.updateMargins(bottom = margin) + paramsNav.updateMargins(bottom = margin) + } + override fun onResume() { super.onResume() navBar.selectTabAt(selected) @@ -80,4 +94,4 @@ class FeedActivity : AppCompatActivity() { } } } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout-land/activity_media.xml b/app/src/main/res/layout-land/activity_media.xml index 247c86a9..d0a94b53 100644 --- a/app/src/main/res/layout-land/activity_media.xml +++ b/app/src/main/res/layout-land/activity_media.xml @@ -6,71 +6,10 @@ android:layout_height="match_parent" android:orientation="horizontal"> - - - - - - - - - + android:layout_height="match_parent" + android:layout_weight="1"> + + + + + + + + + diff --git a/app/src/main/res/layout/activity_feed.xml b/app/src/main/res/layout/activity_feed.xml index 295a8a10..6537b261 100644 --- a/app/src/main/res/layout/activity_feed.xml +++ b/app/src/main/res/layout/activity_feed.xml @@ -43,14 +43,13 @@ android:id="@+id/feedViewPager" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginBottom="72dp" android:layout_marginTop="48dp" tools:ignore="SpeakableTextPresentCheck" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_media.xml b/app/src/main/res/layout/activity_media.xml index 3f7708a6..4f9590ed 100644 --- a/app/src/main/res/layout/activity_media.xml +++ b/app/src/main/res/layout/activity_media.xml @@ -235,7 +235,6 @@ android:id="@+id/mediaViewPager" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginBottom="72dp" android:nestedScrollingEnabled="true" tools:ignore="SpeakableTextPresentCheck" /> diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index 5b61ea3d..b88d8778 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -276,7 +276,6 @@ @@ -292,7 +291,7 @@ Date: Tue, 19 Mar 2024 01:47:31 -0400 Subject: [PATCH 02/26] fix: vertical AnimatedBottomBar --- app/build.gradle | 21 +- .../main/java/ani/dantotsu/MainActivity.kt | 2 - .../dantotsu/media/MediaDetailsActivity.kt | 125 ++--- .../ani/dantotsu/media/TripleNavAdapter.kt | 136 ----- .../media/anime/AnimeWatchFragment.kt | 2 +- .../dantotsu/media/manga/MangaReadFragment.kt | 2 +- .../main/res/layout-land/activity_media.xml | 75 +-- .../main/res/layout-v23/activity_media.xml | 497 ------------------ app/src/main/res/layout/activity_media.xml | 81 +-- 9 files changed, 90 insertions(+), 851 deletions(-) delete mode 100644 app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt delete mode 100644 app/src/main/res/layout-v23/activity_media.xml diff --git a/app/build.gradle b/app/build.gradle index f7a04f77..5c2e2d86 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,11 +75,11 @@ android { dependencies { - // FireBase +// FireBase googleImplementation platform('com.google.firebase:firebase-bom:32.7.4') googleImplementation 'com.google.firebase:firebase-analytics-ktx:21.5.1' googleImplementation 'com.google.firebase:firebase-crashlytics-ktx:18.6.2' -// Core +// Core implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.browser:browser:1.8.0' implementation 'androidx.core:core-ktx:1.12.0' @@ -96,7 +96,7 @@ dependencies { implementation 'androidx.preference:preference-ktx:1.2.1' implementation 'androidx.webkit:webkit:1.10.0' -// Glide +// Glide ext.glide_version = '4.16.0' api "com.github.bumptech.glide:glide:$glide_version" implementation "com.github.bumptech.glide:glide:$glide_version" @@ -104,7 +104,7 @@ dependencies { implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version" implementation 'jp.wasabeef:glide-transformations:4.3.0' -// Exoplayer +// Exoplayer ext.exo_version = '1.3.0' implementation "androidx.media3:media3-exoplayer:$exo_version" implementation "androidx.media3:media3-ui:$exo_version" @@ -116,10 +116,9 @@ dependencies { implementation "androidx.media3:media3-cast:$exo_version" implementation "androidx.mediarouter:mediarouter:1.6.0" -// UI +// UI implementation 'com.google.android.material:material:1.11.0' - //implementation 'nl.joery.animatedbottombar:library:1.1.0' - implementation 'com.github.rebelonion:AnimatedBottomBar:v1.1.0' + implementation 'com.github.RepoDevil:AnimatedBottomBar:514389d135' implementation 'com.flaviofaria:kenburnsview:1.0.7' implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0' implementation 'com.alexvasilkov:gesture-views:2.8.3' @@ -128,7 +127,7 @@ dependencies { implementation 'com.github.eltos:simpledialogfragments:v3.7' implementation 'com.github.AAChartModel:AAChartCore-Kotlin:93972bc' - // Markwon +// Markwon ext.markwon_version = '4.6.2' implementation "io.noties.markwon:core:$markwon_version" implementation "io.noties.markwon:editor:$markwon_version" @@ -138,15 +137,15 @@ dependencies { implementation "io.noties.markwon:html:$markwon_version" implementation "io.noties.markwon:image-glide:$markwon_version" -// Groupie +// Groupie ext.groupie_version = '2.10.1' implementation "com.github.lisawray.groupie:groupie:$groupie_version" implementation "com.github.lisawray.groupie:groupie-viewbinding:$groupie_version" -// string matching +// String Matching implementation 'me.xdrop:fuzzywuzzy:1.4.0' -// Aniyomi +// Aniyomi implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' implementation 'ru.beryukhov:flowreactivenetwork:1.0.4' diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index 0b933101..96fbb892 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -5,7 +5,6 @@ import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Intent import android.content.res.Configuration -import android.content.res.Resources import android.graphics.drawable.Animatable import android.graphics.drawable.GradientDrawable import android.net.Uri @@ -14,7 +13,6 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.provider.Settings -import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index a680dd63..221d2b0f 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -23,7 +23,6 @@ import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.ContextCompat import androidx.core.text.bold import androidx.core.text.color -import androidx.core.view.marginBottom import androidx.core.view.updateLayoutParams import androidx.core.view.updateMargins import androidx.fragment.app.Fragment @@ -48,7 +47,6 @@ import ani.dantotsu.media.manga.MangaReadFragment import ani.dantotsu.media.novel.NovelReadFragment import ani.dantotsu.navBarHeight import ani.dantotsu.openLinkInBrowser -import ani.dantotsu.others.AndroidBug5497Workaround import ani.dantotsu.others.ImageViewDialog import ani.dantotsu.others.getSerialized import ani.dantotsu.settings.saving.PrefManager @@ -64,6 +62,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext +import nl.joery.animatedbottombar.AnimatedBottomBar import kotlin.math.abs @@ -72,8 +71,8 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi lateinit var binding: ActivityMediaBinding private val scope = lifecycleScope private val model: MediaDetailsViewModel by viewModels() - lateinit var tabLayout: TripleNavAdapter var selected = 0 + lateinit var navBar: AnimatedBottomBar var anime = true private var adult = false @@ -102,29 +101,20 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi binding = ActivityMediaBinding.inflate(layoutInflater) setContentView(binding.root) screenWidth = resources.displayMetrics.widthPixels.toFloat() + navBar = binding.mediaBottomBar - val isVertical = resources.configuration.orientation - //Ui init + // Ui init initActivity(this) binding.mediaViewPager.updateLayoutParams { bottomMargin = navBarHeight } - val oldMargin = binding.mediaViewPager.marginBottom - AndroidBug5497Workaround.assistActivity(this) { - if (it) { - binding.mediaViewPager.updateLayoutParams { - bottomMargin = 0 - } - binding.mediaTabContainer.visibility = View.GONE - } else { - binding.mediaViewPager.updateLayoutParams { - bottomMargin = oldMargin - } - binding.mediaTabContainer.visibility = View.VISIBLE - } - } - val navBarMargin = if (resources.configuration.orientation == + val navBarRightMargin = if (resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) navBarHeight else 0 - binding.mediaTabContainer.updateLayoutParams { rightMargin = navBarMargin } + val navBarBottomMargin = if (resources.configuration.orientation == + Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight + navBar.updateLayoutParams { + rightMargin = navBarRightMargin + bottomMargin = navBarBottomMargin + } binding.mediaBanner.updateLayoutParams { height += statusBarHeight } binding.mediaBannerNoKen.updateLayoutParams { height += statusBarHeight } binding.mediaClose.updateLayoutParams { topMargin += statusBarHeight } @@ -152,7 +142,6 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi val banner = if (bannerAnimations) binding.mediaBanner else binding.mediaBannerNoKen val viewPager = binding.mediaViewPager - //tabLayout = binding.mediaTab as AnimatedBottomBar viewPager.isUserInputEnabled = false viewPager.setPageTransformer(ZoomOutPageTransformer()) @@ -347,14 +336,6 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi progress() } } - tabLayout = TripleNavAdapter( - binding.mediaTab1, - binding.mediaTab2, - binding.mediaTab3, - media.anime != null, - media.format ?: "", - isVertical == 1 - ) adult = media.isAdult if (media.anime != null) { viewPager.adapter = @@ -370,21 +351,38 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi anime = false } - selected = media.selected!!.window binding.mediaTitle.translationX = -screenWidth - tabLayout.selectionListener = { selected, newId -> - binding.commentInputLayout.visibility = if (selected == 2) View.VISIBLE else View.GONE - this.selected = selected - selectFromID(newId) - viewPager.setCurrentItem(selected, false) - val sel = model.loadSelected(media, isDownload) - sel.window = selected - model.saveSelected(media.id, sel) + val infoTab = navBar.createTab(R.drawable.ic_round_info_24, R.string.info, R.id.info) + val watchTab = if (anime) { + navBar.createTab(R.drawable.ic_round_movie_filter_24, R.string.watch, R.id.watch) + } else if (media.format == "NOVEL") { + navBar.createTab(R.drawable.ic_round_book_24, R.string.read, R.id.read) + } else { + navBar.createTab(R.drawable.ic_round_import_contacts_24, R.string.read, R.id.read) } - tabLayout.selectTab(selected) - selectFromID(tabLayout.selected) + val commentTab = navBar.createTab(R.drawable.ic_round_comment_24, R.string.comments, R.id.comment) + navBar.addTab(infoTab) + navBar.addTab(watchTab) + navBar.addTab(commentTab) + navBar.selectTabAt(selected) + navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { + override fun onTabSelected( + lastIndex: Int, + lastTab: AnimatedBottomBar.Tab?, + newIndex: Int, + newTab: AnimatedBottomBar.Tab + ) { + selected = newIndex + binding.commentInputLayout.visibility = if (selected == 2) View.VISIBLE else View.GONE + viewPager.setCurrentItem(selected, true) + val sel = model.loadSelected(media, isDownload) + sel.window = selected + model.saveSelected(media.id, sel) + } + }) + binding.commentInputLayout.visibility = if (selected == 2) View.VISIBLE else View.GONE viewPager.setCurrentItem(selected, false) if (model.continueMedia == null && media.cameFromContinue) { @@ -407,48 +405,19 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi } } - private fun selectFromID(id: Int) { - when (id) { - R.id.info -> { - selected = 0 - } - - R.id.watch, R.id.read -> { - selected = 1 - } - - R.id.comment -> { - selected = 2 - } - } - } - - private fun idFromSelect(): Int { - if (anime) when (selected) { - 0 -> return R.id.info - 1 -> return R.id.watch - 2 -> return R.id.comment - } - else when (selected) { - 0 -> return R.id.info - 1 -> return R.id.read - 2 -> return R.id.comment - } - return R.id.info - } - override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - val margin = if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) navBarHeight else 0 + val rightMargin = if (resources.configuration.orientation == + Configuration.ORIENTATION_LANDSCAPE) navBarHeight else 0 + val bottomMargin = if (resources.configuration.orientation == + Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight val params : ViewGroup.MarginLayoutParams = - binding.mediaTabContainer.layoutParams as ViewGroup.MarginLayoutParams - params.updateMargins(right = margin) + navBar.layoutParams as ViewGroup.MarginLayoutParams + params.updateMargins(right = rightMargin, bottom = bottomMargin) } override fun onResume() { - if (this::tabLayout.isInitialized) { - tabLayout.selectTab(selected) - } + navBar.selectTabAt(selected) super.onResume() } @@ -456,7 +425,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi ANIME, MANGA, NOVEL } - //ViewPager + // ViewPager private class ViewPagerAdapter( fragmentManager: FragmentManager, lifecycle: Lifecycle, diff --git a/app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt b/app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt deleted file mode 100644 index b76a0dff..00000000 --- a/app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt +++ /dev/null @@ -1,136 +0,0 @@ -package ani.dantotsu.media - -import android.graphics.Color -import android.view.ViewGroup -import androidx.core.view.updateLayoutParams -import ani.dantotsu.R -import ani.dantotsu.navBarHeight -import nl.joery.animatedbottombar.AnimatedBottomBar - -class TripleNavAdapter( - private val nav1: AnimatedBottomBar, - private val nav2: AnimatedBottomBar, - private val nav3: AnimatedBottomBar, - anime: Boolean, - format: String, - private val isScreenVertical: Boolean = false -) { - var selected: Int = 0 - var selectionListener: ((Int, Int) -> Unit)? = null - init { - nav1.tabs.clear() - nav2.tabs.clear() - nav3.tabs.clear() - val infoTab = nav1.createTab(R.drawable.ic_round_info_24, R.string.info, R.id.info) - val watchTab = if (anime) { - nav2.createTab(R.drawable.ic_round_movie_filter_24, R.string.watch, R.id.watch) - } else if (format == "NOVEL") { - nav2.createTab(R.drawable.ic_round_book_24, R.string.read, R.id.read) - } else { - nav2.createTab(R.drawable.ic_round_import_contacts_24, R.string.read, R.id.read) - } - val commentTab = nav3.createTab(R.drawable.ic_round_comment_24, R.string.comments, R.id.comment) - nav1.addTab(infoTab) - nav1.visibility = ViewGroup.VISIBLE - if (isScreenVertical) { - nav2.visibility = ViewGroup.GONE - nav3.visibility = ViewGroup.GONE - nav1.addTab(watchTab) - nav1.addTab(commentTab) - nav1.updateLayoutParams { - bottomMargin = navBarHeight - } - nav2.updateLayoutParams { - bottomMargin = navBarHeight - } - nav3.updateLayoutParams { - bottomMargin = navBarHeight - } - } else { - nav1.indicatorColor = Color.TRANSPARENT - nav2.indicatorColor = Color.TRANSPARENT - nav3.indicatorColor = Color.TRANSPARENT - nav2.visibility = ViewGroup.VISIBLE - nav3.visibility = ViewGroup.VISIBLE - nav2.addTab(watchTab) - nav3.addTab(commentTab) - nav2.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { - override fun onTabSelected( - lastIndex: Int, - lastTab: AnimatedBottomBar.Tab?, - newIndex: Int, - newTab: AnimatedBottomBar.Tab - ) { - selected = 1 - deselectOthers(selected) - selectionListener?.invoke(selected, newTab.id) - } - }) - nav3.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { - override fun onTabSelected( - lastIndex: Int, - lastTab: AnimatedBottomBar.Tab?, - newIndex: Int, - newTab: AnimatedBottomBar.Tab - ) { - selected = 2 - deselectOthers(selected) - selectionListener?.invoke(selected, newTab.id) - } - }) - } - nav1.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { - override fun onTabSelected( - lastIndex: Int, - lastTab: AnimatedBottomBar.Tab?, - newIndex: Int, - newTab: AnimatedBottomBar.Tab - ) { - if (!isScreenVertical) { - selected = 0 - deselectOthers(selected) - } else selected = newIndex - selectionListener?.invoke(selected, newTab.id) - } - }) - } - - private fun deselectOthers(selected: Int) { - if (selected == 0) { - nav2.clearSelection() - nav3.clearSelection() - } - if (selected == 1) { - nav1.clearSelection() - nav3.clearSelection() - } - if (selected == 2) { - nav1.clearSelection() - nav2.clearSelection() - } - } - - fun selectTab(tab: Int) { - selected = tab - if (!isScreenVertical) { - when (tab) { - 0 -> nav1.selectTabAt(0) - 1 -> nav2.selectTabAt(0) - 2 -> nav3.selectTabAt(0) - } - deselectOthers(selected) - } else { - nav1.selectTabAt(selected) - } - } - - fun setVisibility(visibility: Int) { - if (isScreenVertical) { - nav1.visibility = visibility - return - } - nav1.visibility = visibility - nav2.visibility = visibility - nav3.visibility = visibility - } -} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt index 50eef688..a67191db 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt @@ -346,7 +346,7 @@ class AnimeWatchFragment : Fragment() { activity.findViewById(R.id.mediaCover).visibility = visibility activity.findViewById(R.id.mediaClose).visibility = visibility - activity.tabLayout.setVisibility(visibility) + activity.navBar.setVisibility(visibility) activity.findViewById(R.id.fragmentExtensionsContainer).visibility = if (show) View.GONE else View.VISIBLE diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index 621e07fb..9f32049d 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -359,7 +359,7 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { activity.findViewById(R.id.mediaViewPager).visibility = visibility activity.findViewById(R.id.mediaCover).visibility = visibility activity.findViewById(R.id.mediaClose).visibility = visibility - activity.tabLayout.setVisibility(visibility) + activity.navBar.setVisibility(visibility) activity.findViewById(R.id.fragmentExtensionsContainer).visibility = if (show) View.GONE else View.VISIBLE } diff --git a/app/src/main/res/layout-land/activity_media.xml b/app/src/main/res/layout-land/activity_media.xml index d0a94b53..54f824f9 100644 --- a/app/src/main/res/layout-land/activity_media.xml +++ b/app/src/main/res/layout-land/activity_media.xml @@ -420,67 +420,22 @@ - - - - - - - - + android:layout_gravity="center_horizontal|bottom" + android:background="?attr/colorSurface" + android:padding="0dp" + app:abb_animationInterpolator="@anim/over_shoot" + app:abb_selectedTabType="text" + app:abb_textAppearance="@style/NavBarText" + app:itemActiveIndicatorStyle="@style/BottomNavBar" + app:itemIconTint="@color/tab_layout_icon" + app:itemRippleColor="#00000000" + app:itemTextAppearanceActive="@style/NavBarText" + app:itemTextAppearanceInactive="@style/NavBarText" + app:itemTextColor="@color/tab_layout_icon" + app:abb_isVerticalBar="true"/> diff --git a/app/src/main/res/layout-v23/activity_media.xml b/app/src/main/res/layout-v23/activity_media.xml deleted file mode 100644 index dd6fefbd..00000000 --- a/app/src/main/res/layout-v23/activity_media.xml +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -