themes and various bugs
This commit is contained in:
parent
dc165fa6bc
commit
63526c6ed3
114 changed files with 1719 additions and 558 deletions
|
@ -1,7 +1,11 @@
|
||||||
package ani.dantotsu
|
package ani.dantotsu
|
||||||
|
|
||||||
import android.animation.ObjectAnimator
|
import android.animation.ObjectAnimator
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.IntentFilter
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.drawable.Animatable
|
import android.graphics.drawable.Animatable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
@ -10,6 +14,7 @@ import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.animation.AnticipateInterpolator
|
import android.view.animation.AnticipateInterpolator
|
||||||
|
@ -41,8 +46,10 @@ import ani.dantotsu.media.MediaDetailsActivity
|
||||||
import ani.dantotsu.others.CustomBottomDialog
|
import ani.dantotsu.others.CustomBottomDialog
|
||||||
import ani.dantotsu.parsers.AnimeSources
|
import ani.dantotsu.parsers.AnimeSources
|
||||||
import ani.dantotsu.parsers.MangaSources
|
import ani.dantotsu.parsers.MangaSources
|
||||||
|
import ani.dantotsu.settings.SettingsActivity
|
||||||
import ani.dantotsu.settings.UserInterfaceSettings
|
import ani.dantotsu.settings.UserInterfaceSettings
|
||||||
import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription
|
import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
||||||
import io.noties.markwon.Markwon
|
import io.noties.markwon.Markwon
|
||||||
import io.noties.markwon.SoftBreakAddsNewLinePlugin
|
import io.noties.markwon.SoftBreakAddsNewLinePlugin
|
||||||
|
@ -68,6 +75,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
|
|
||||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
@ -228,6 +236,18 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
if (ActivityHelper.shouldRefreshMainActivity) {
|
||||||
|
ActivityHelper.shouldRefreshMainActivity = false
|
||||||
|
Refresh.all()
|
||||||
|
finish()
|
||||||
|
startActivity(Intent(this, MainActivity::class.java))
|
||||||
|
initActivity(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//ViewPager
|
//ViewPager
|
||||||
private class ViewPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
|
private class ViewPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
|
||||||
FragmentStateAdapter(fragmentManager, lifecycle) {
|
FragmentStateAdapter(fragmentManager, lifecycle) {
|
||||||
|
@ -245,3 +265,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object ActivityHelper {
|
||||||
|
var shouldRefreshMainActivity: Boolean = false
|
||||||
|
}
|
||||||
|
|
|
@ -7,10 +7,12 @@ import androidx.appcompat.app.AppCompatActivity
|
||||||
import ani.dantotsu.logError
|
import ani.dantotsu.logError
|
||||||
import ani.dantotsu.logger
|
import ani.dantotsu.logger
|
||||||
import ani.dantotsu.startMainActivity
|
import ani.dantotsu.startMainActivity
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class Login : AppCompatActivity() {
|
class Login : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
val data: Uri? = intent?.data
|
val data: Uri? = intent?.data
|
||||||
logger(data.toString())
|
logger(data.toString())
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -6,10 +6,12 @@ import android.os.Bundle
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import ani.dantotsu.loadMedia
|
import ani.dantotsu.loadMedia
|
||||||
import ani.dantotsu.startMainActivity
|
import ani.dantotsu.startMainActivity
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class UrlMedia : Activity() {
|
class UrlMedia : Activity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
var id: Int? = intent?.extras?.getInt("media", 0) ?: 0
|
var id: Int? = intent?.extras?.getInt("media", 0) ?: 0
|
||||||
var isMAL = false
|
var isMAL = false
|
||||||
var continueMedia = true
|
var continueMedia = true
|
||||||
|
|
|
@ -11,12 +11,14 @@ import androidx.appcompat.app.AppCompatActivity
|
||||||
import ani.dantotsu.R
|
import ani.dantotsu.R
|
||||||
import ani.dantotsu.connections.discord.Discord.saveToken
|
import ani.dantotsu.connections.discord.Discord.saveToken
|
||||||
import ani.dantotsu.startMainActivity
|
import ani.dantotsu.startMainActivity
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class Login : AppCompatActivity() {
|
class Login : AppCompatActivity() {
|
||||||
|
|
||||||
@SuppressLint("SetJavaScriptEnabled")
|
@SuppressLint("SetJavaScriptEnabled")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
val process = getProcessName()
|
val process = getProcessName()
|
||||||
if (packageName != process) WebView.setDataDirectorySuffix(process)
|
if (packageName != process) WebView.setDataDirectorySuffix(process)
|
||||||
|
|
|
@ -7,12 +7,14 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import ani.dantotsu.*
|
import ani.dantotsu.*
|
||||||
import ani.dantotsu.connections.mal.MAL.clientId
|
import ani.dantotsu.connections.mal.MAL.clientId
|
||||||
import ani.dantotsu.connections.mal.MAL.saveResponse
|
import ani.dantotsu.connections.mal.MAL.saveResponse
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class Login : AppCompatActivity() {
|
class Login : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
try {
|
try {
|
||||||
val data: Uri = intent?.data
|
val data: Uri = intent?.data
|
||||||
?: throw Exception(getString(R.string.mal_login_uri_not_found))
|
?: throw Exception(getString(R.string.mal_login_uri_not_found))
|
||||||
|
|
|
@ -63,6 +63,7 @@ object Helper {
|
||||||
SubtitleType.VTT -> MimeTypes.TEXT_VTT
|
SubtitleType.VTT -> MimeTypes.TEXT_VTT
|
||||||
SubtitleType.ASS -> MimeTypes.TEXT_SSA
|
SubtitleType.ASS -> MimeTypes.TEXT_SSA
|
||||||
SubtitleType.SRT -> MimeTypes.APPLICATION_SUBRIP
|
SubtitleType.SRT -> MimeTypes.APPLICATION_SUBRIP
|
||||||
|
SubtitleType.UNKNOWN -> MimeTypes.TEXT_SSA
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -163,6 +163,7 @@ class AnimePageAdapter : RecyclerView.Adapter<AnimePageAdapter.AnimePageViewHold
|
||||||
fun updateAvatar() {
|
fun updateAvatar() {
|
||||||
if (Anilist.avatar != null && ready.value == true) {
|
if (Anilist.avatar != null && ready.value == true) {
|
||||||
binding.animeUserAvatar.loadImage(Anilist.avatar)
|
binding.animeUserAvatar.loadImage(Anilist.avatar)
|
||||||
|
binding.animeUserAvatar.imageTintList = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.viewpager2.widget.ViewPager2
|
import androidx.viewpager2.widget.ViewPager2
|
||||||
import ani.dantotsu.media.GenreActivity
|
import ani.dantotsu.media.GenreActivity
|
||||||
import ani.dantotsu.MediaPageTransformer
|
import ani.dantotsu.MediaPageTransformer
|
||||||
|
import ani.dantotsu.R
|
||||||
import ani.dantotsu.connections.anilist.Anilist
|
import ani.dantotsu.connections.anilist.Anilist
|
||||||
import ani.dantotsu.databinding.ItemMangaPageBinding
|
import ani.dantotsu.databinding.ItemMangaPageBinding
|
||||||
import ani.dantotsu.loadData
|
import ani.dantotsu.loadData
|
||||||
|
@ -153,6 +154,7 @@ class MangaPageAdapter : RecyclerView.Adapter<MangaPageAdapter.MangaPageViewHold
|
||||||
fun updateAvatar() {
|
fun updateAvatar() {
|
||||||
if (Anilist.avatar != null && ready.value == true) {
|
if (Anilist.avatar != null && ready.value == true) {
|
||||||
binding.mangaUserAvatar.loadImage(Anilist.avatar)
|
binding.mangaUserAvatar.loadImage(Anilist.avatar)
|
||||||
|
binding.mangaUserAvatar.imageTintList = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,12 @@ import ani.dantotsu.isOnline
|
||||||
import ani.dantotsu.navBarHeight
|
import ani.dantotsu.navBarHeight
|
||||||
import ani.dantotsu.startMainActivity
|
import ani.dantotsu.startMainActivity
|
||||||
import ani.dantotsu.statusBarHeight
|
import ani.dantotsu.statusBarHeight
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class NoInternet : AppCompatActivity() {
|
class NoInternet : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
|
|
||||||
val binding = ActivityNoInternetBinding.inflate(layoutInflater)
|
val binding = ActivityNoInternetBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
|
@ -15,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import ani.dantotsu.*
|
import ani.dantotsu.*
|
||||||
import ani.dantotsu.databinding.ActivityAuthorBinding
|
import ani.dantotsu.databinding.ActivityAuthorBinding
|
||||||
import ani.dantotsu.others.getSerialized
|
import ani.dantotsu.others.getSerialized
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
@ -28,6 +29,7 @@ class AuthorActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityAuthorBinding.inflate(layoutInflater)
|
binding = ActivityAuthorBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import ani.dantotsu.R
|
||||||
import ani.dantotsu.Refresh
|
import ani.dantotsu.Refresh
|
||||||
import ani.dantotsu.databinding.ActivityListBinding
|
import ani.dantotsu.databinding.ActivityListBinding
|
||||||
import ani.dantotsu.media.user.ListViewPagerAdapter
|
import ani.dantotsu.media.user.ListViewPagerAdapter
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -27,6 +28,7 @@ class CalendarActivity : AppCompatActivity() {
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityListBinding.inflate(layoutInflater)
|
binding = ActivityListBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ import ani.dantotsu.databinding.ActivityCharacterBinding
|
||||||
import ani.dantotsu.others.ImageViewDialog
|
import ani.dantotsu.others.ImageViewDialog
|
||||||
import ani.dantotsu.others.getSerialized
|
import ani.dantotsu.others.getSerialized
|
||||||
import ani.dantotsu.settings.UserInterfaceSettings
|
import ani.dantotsu.settings.UserInterfaceSettings
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -33,6 +34,7 @@ class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChang
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityCharacterBinding.inflate(layoutInflater)
|
binding = ActivityCharacterBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import ani.dantotsu.initActivity
|
||||||
import ani.dantotsu.loadData
|
import ani.dantotsu.loadData
|
||||||
import ani.dantotsu.navBarHeight
|
import ani.dantotsu.navBarHeight
|
||||||
import ani.dantotsu.statusBarHeight
|
import ani.dantotsu.statusBarHeight
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -25,6 +26,7 @@ class GenreActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityGenreBinding.inflate(layoutInflater)
|
binding = ActivityGenreBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
initActivity(this)
|
initActivity(this)
|
||||||
|
|
|
@ -47,6 +47,7 @@ import ani.dantotsu.saveData
|
||||||
import ani.dantotsu.settings.UserInterfaceSettings
|
import ani.dantotsu.settings.UserInterfaceSettings
|
||||||
import ani.dantotsu.snackString
|
import ani.dantotsu.snackString
|
||||||
import ani.dantotsu.statusBarHeight
|
import ani.dantotsu.statusBarHeight
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.flaviofaria.kenburnsview.RandomTransitionGenerator
|
import com.flaviofaria.kenburnsview.RandomTransitionGenerator
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
import com.google.android.material.appbar.AppBarLayout
|
||||||
import com.google.android.material.navigation.NavigationBarView
|
import com.google.android.material.navigation.NavigationBarView
|
||||||
|
@ -71,6 +72,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityMediaBinding.inflate(layoutInflater)
|
binding = ActivityMediaBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
screenWidth = resources.displayMetrics.widthPixels.toFloat()
|
screenWidth = resources.displayMetrics.widthPixels.toFloat()
|
||||||
|
@ -79,7 +81,8 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
initActivity(this)
|
initActivity(this)
|
||||||
uiSettings = loadData<UserInterfaceSettings>("ui_settings") ?: UserInterfaceSettings()
|
uiSettings = loadData<UserInterfaceSettings>("ui_settings") ?: UserInterfaceSettings()
|
||||||
if (!uiSettings.immersiveMode) this.window.statusBarColor = ContextCompat.getColor(this, R.color.nav_bg_inv)
|
if (!uiSettings.immersiveMode) this.window.statusBarColor =
|
||||||
|
ContextCompat.getColor(this, R.color.nav_bg_inv)
|
||||||
|
|
||||||
binding.mediaBanner.updateLayoutParams { height += statusBarHeight }
|
binding.mediaBanner.updateLayoutParams { height += statusBarHeight }
|
||||||
binding.mediaBannerNoKen.updateLayoutParams { height += statusBarHeight }
|
binding.mediaBannerNoKen.updateLayoutParams { height += statusBarHeight }
|
||||||
|
@ -101,10 +104,14 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
if (uiSettings.bannerAnimations) {
|
if (uiSettings.bannerAnimations) {
|
||||||
val adi = AccelerateDecelerateInterpolator()
|
val adi = AccelerateDecelerateInterpolator()
|
||||||
val generator = RandomTransitionGenerator((10000 + 15000 * (uiSettings.animationSpeed)).toLong(), adi)
|
val generator = RandomTransitionGenerator(
|
||||||
|
(10000 + 15000 * (uiSettings.animationSpeed)).toLong(),
|
||||||
|
adi
|
||||||
|
)
|
||||||
binding.mediaBanner.setTransitionGenerator(generator)
|
binding.mediaBanner.setTransitionGenerator(generator)
|
||||||
}
|
}
|
||||||
val banner = if (uiSettings.bannerAnimations) binding.mediaBanner else binding.mediaBannerNoKen
|
val banner =
|
||||||
|
if (uiSettings.bannerAnimations) binding.mediaBanner else binding.mediaBannerNoKen
|
||||||
val viewPager = binding.mediaViewPager
|
val viewPager = binding.mediaViewPager
|
||||||
tabLayout = binding.mediaTab as NavigationBarView
|
tabLayout = binding.mediaTab as NavigationBarView
|
||||||
viewPager.isUserInputEnabled = false
|
viewPager.isUserInputEnabled = false
|
||||||
|
@ -167,8 +174,8 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
binding.mediaFav,
|
binding.mediaFav,
|
||||||
R.drawable.ic_round_favorite_24,
|
R.drawable.ic_round_favorite_24,
|
||||||
R.drawable.ic_round_favorite_border_24,
|
R.drawable.ic_round_favorite_border_24,
|
||||||
R.color.nav_tab,
|
com.google.android.material.R.attr.colorSecondary,
|
||||||
R.color.fav,
|
com.google.android.material.R.attr.colorSecondary,
|
||||||
media.isFav
|
media.isFav
|
||||||
) {
|
) {
|
||||||
media.isFav = it
|
media.isFav = it
|
||||||
|
@ -180,17 +187,32 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("ResourceType")
|
||||||
fun total() {
|
fun total() {
|
||||||
val text = SpannableStringBuilder().apply {
|
val text = SpannableStringBuilder().apply {
|
||||||
val white = ContextCompat.getColor(this@MediaDetailsActivity, R.color.bg_opp)
|
val typedValue = TypedValue()
|
||||||
|
this@MediaDetailsActivity.theme.resolveAttribute(com.google.android.material.R.attr.colorOnBackground, typedValue, true)
|
||||||
|
val white = typedValue.data
|
||||||
if (media.userStatus != null) {
|
if (media.userStatus != null) {
|
||||||
append(if (media.anime != null) getString(R.string.watched_num) else getString(R.string.read_num))
|
append(if (media.anime != null) getString(R.string.watched_num) else getString(R.string.read_num))
|
||||||
val typedValue = TypedValue()
|
val typedValue = TypedValue()
|
||||||
theme.resolveAttribute(com.google.android.material.R.attr.colorSecondary, typedValue, true)
|
theme.resolveAttribute(
|
||||||
|
com.google.android.material.R.attr.colorSecondary,
|
||||||
|
typedValue,
|
||||||
|
true
|
||||||
|
)
|
||||||
bold { color(typedValue.data) { append("${media.userProgress}") } }
|
bold { color(typedValue.data) { append("${media.userProgress}") } }
|
||||||
append(if (media.anime != null) getString(R.string.episodes_out_of) else getString(R.string.chapters_out_of))
|
append(
|
||||||
|
if (media.anime != null) getString(R.string.episodes_out_of) else getString(
|
||||||
|
R.string.chapters_out_of
|
||||||
|
)
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
append(if (media.anime != null) getString(R.string.episodes_total_of) else getString(R.string.chapters_total_of))
|
append(
|
||||||
|
if (media.anime != null) getString(R.string.episodes_total_of) else getString(
|
||||||
|
R.string.chapters_total_of
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
if (media.anime != null) {
|
if (media.anime != null) {
|
||||||
if (media.anime!!.nextAiringEpisode != null) {
|
if (media.anime!!.nextAiringEpisode != null) {
|
||||||
|
@ -206,8 +228,12 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
fun progress() {
|
fun progress() {
|
||||||
val statuses: Array<String> = resources.getStringArray(R.array.status)
|
val statuses: Array<String> = resources.getStringArray(R.array.status)
|
||||||
val statusStrings = if (media.manga==null) resources.getStringArray(R.array.status_anime) else resources.getStringArray(R.array.status_manga)
|
val statusStrings =
|
||||||
val userStatus = if(media.userStatus != null) statusStrings[statuses.indexOf(media.userStatus)] else statusStrings[0]
|
if (media.manga == null) resources.getStringArray(R.array.status_anime) else resources.getStringArray(
|
||||||
|
R.array.status_manga
|
||||||
|
)
|
||||||
|
val userStatus =
|
||||||
|
if (media.userStatus != null) statusStrings[statuses.indexOf(media.userStatus)] else statusStrings[0]
|
||||||
|
|
||||||
if (media.userStatus != null) {
|
if (media.userStatus != null) {
|
||||||
binding.mediaTotal.visibility = View.VISIBLE
|
binding.mediaTotal.visibility = View.VISIBLE
|
||||||
|
@ -234,7 +260,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
if (it != null) {
|
if (it != null) {
|
||||||
media = it
|
media = it
|
||||||
scope.launch {
|
scope.launch {
|
||||||
if(media.isFav!=favButton?.clicked) favButton?.clicked()
|
if (media.isFav != favButton?.clicked) favButton?.clicked()
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.mediaNotify.setOnClickListener {
|
binding.mediaNotify.setOnClickListener {
|
||||||
|
@ -258,10 +284,15 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
tabLayout.menu.clear()
|
tabLayout.menu.clear()
|
||||||
if (media.anime != null) {
|
if (media.anime != null) {
|
||||||
viewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, SupportedMedia.ANIME)
|
viewPager.adapter =
|
||||||
|
ViewPagerAdapter(supportFragmentManager, lifecycle, SupportedMedia.ANIME)
|
||||||
tabLayout.inflateMenu(R.menu.anime_menu_detail)
|
tabLayout.inflateMenu(R.menu.anime_menu_detail)
|
||||||
} else if (media.manga != null) {
|
} else if (media.manga != null) {
|
||||||
viewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, if(media.format=="NOVEL") SupportedMedia.NOVEL else SupportedMedia.MANGA)
|
viewPager.adapter = ViewPagerAdapter(
|
||||||
|
supportFragmentManager,
|
||||||
|
lifecycle,
|
||||||
|
if (media.format == "NOVEL") SupportedMedia.NOVEL else SupportedMedia.MANGA
|
||||||
|
)
|
||||||
tabLayout.inflateMenu(R.menu.manga_menu_detail)
|
tabLayout.inflateMenu(R.menu.manga_menu_detail)
|
||||||
anime = false
|
anime = false
|
||||||
}
|
}
|
||||||
|
@ -303,9 +334,10 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
private fun selectFromID(id: Int) {
|
private fun selectFromID(id: Int) {
|
||||||
when (id) {
|
when (id) {
|
||||||
R.id.info -> {
|
R.id.info -> {
|
||||||
selected = 0
|
selected = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.watch, R.id.read -> {
|
R.id.watch, R.id.read -> {
|
||||||
selected = 1
|
selected = 1
|
||||||
}
|
}
|
||||||
|
@ -329,9 +361,10 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
super.onResume()
|
super.onResume()
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum class SupportedMedia{
|
private enum class SupportedMedia {
|
||||||
ANIME, MANGA, NOVEL
|
ANIME, MANGA, NOVEL
|
||||||
}
|
}
|
||||||
|
|
||||||
//ViewPager
|
//ViewPager
|
||||||
private class ViewPagerAdapter(
|
private class ViewPagerAdapter(
|
||||||
fragmentManager: FragmentManager,
|
fragmentManager: FragmentManager,
|
||||||
|
@ -342,13 +375,14 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
override fun getItemCount(): Int = 2
|
override fun getItemCount(): Int = 2
|
||||||
|
|
||||||
override fun createFragment(position: Int): Fragment = when (position){
|
override fun createFragment(position: Int): Fragment = when (position) {
|
||||||
0 -> MediaInfoFragment()
|
0 -> MediaInfoFragment()
|
||||||
1 -> when(media){
|
1 -> when (media) {
|
||||||
SupportedMedia.ANIME -> AnimeWatchFragment()
|
SupportedMedia.ANIME -> AnimeWatchFragment()
|
||||||
SupportedMedia.MANGA -> MangaReadFragment()
|
SupportedMedia.MANGA -> MangaReadFragment()
|
||||||
SupportedMedia.NOVEL -> NovelReadFragment()
|
SupportedMedia.NOVEL -> NovelReadFragment()
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> MediaInfoFragment()
|
else -> MediaInfoFragment()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -363,27 +397,41 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
if (mMaxScrollSize == 0) mMaxScrollSize = appBar.totalScrollRange
|
if (mMaxScrollSize == 0) mMaxScrollSize = appBar.totalScrollRange
|
||||||
val percentage = abs(i) * 100 / mMaxScrollSize
|
val percentage = abs(i) * 100 / mMaxScrollSize
|
||||||
|
|
||||||
binding.mediaCover.visibility = if (binding.mediaCover.scaleX == 0f) View.GONE else View.VISIBLE
|
binding.mediaCover.visibility =
|
||||||
|
if (binding.mediaCover.scaleX == 0f) View.GONE else View.VISIBLE
|
||||||
val duration = (200 * uiSettings.animationSpeed).toLong()
|
val duration = (200 * uiSettings.animationSpeed).toLong()
|
||||||
|
val typedValue = TypedValue()
|
||||||
|
this@MediaDetailsActivity.theme.resolveAttribute(com.google.android.material.R.attr.colorSecondary, typedValue, true)
|
||||||
|
val color = typedValue.data
|
||||||
if (percentage >= percent && !isCollapsed) {
|
if (percentage >= percent && !isCollapsed) {
|
||||||
isCollapsed = true
|
isCollapsed = true
|
||||||
ObjectAnimator.ofFloat(binding.mediaTitle, "translationX", 0f).setDuration(duration).start()
|
ObjectAnimator.ofFloat(binding.mediaTitle, "translationX", 0f).setDuration(duration)
|
||||||
ObjectAnimator.ofFloat(binding.mediaAccessContainer, "translationX", screenWidth).setDuration(duration).start()
|
.start()
|
||||||
ObjectAnimator.ofFloat(binding.mediaCover, "translationX", screenWidth).setDuration(duration).start()
|
ObjectAnimator.ofFloat(binding.mediaAccessContainer, "translationX", screenWidth)
|
||||||
ObjectAnimator.ofFloat(binding.mediaCollapseContainer, "translationX", screenWidth).setDuration(duration).start()
|
.setDuration(duration).start()
|
||||||
|
ObjectAnimator.ofFloat(binding.mediaCover, "translationX", screenWidth)
|
||||||
|
.setDuration(duration).start()
|
||||||
|
ObjectAnimator.ofFloat(binding.mediaCollapseContainer, "translationX", screenWidth)
|
||||||
|
.setDuration(duration).start()
|
||||||
binding.mediaBanner.pause()
|
binding.mediaBanner.pause()
|
||||||
if (!uiSettings.immersiveMode) this.window.statusBarColor = ContextCompat.getColor(this, R.color.nav_bg)
|
if (!uiSettings.immersiveMode) this.window.statusBarColor = color
|
||||||
}
|
}
|
||||||
if (percentage <= percent && isCollapsed) {
|
if (percentage <= percent && isCollapsed) {
|
||||||
isCollapsed = false
|
isCollapsed = false
|
||||||
ObjectAnimator.ofFloat(binding.mediaTitle, "translationX", -screenWidth).setDuration(duration).start()
|
ObjectAnimator.ofFloat(binding.mediaTitle, "translationX", -screenWidth)
|
||||||
ObjectAnimator.ofFloat(binding.mediaAccessContainer, "translationX", 0f).setDuration(duration).start()
|
.setDuration(duration).start()
|
||||||
ObjectAnimator.ofFloat(binding.mediaCover, "translationX", 0f).setDuration(duration).start()
|
ObjectAnimator.ofFloat(binding.mediaAccessContainer, "translationX", 0f)
|
||||||
ObjectAnimator.ofFloat(binding.mediaCollapseContainer, "translationX", 0f).setDuration(duration).start()
|
.setDuration(duration).start()
|
||||||
|
ObjectAnimator.ofFloat(binding.mediaCover, "translationX", 0f).setDuration(duration)
|
||||||
|
.start()
|
||||||
|
ObjectAnimator.ofFloat(binding.mediaCollapseContainer, "translationX", 0f)
|
||||||
|
.setDuration(duration).start()
|
||||||
if (uiSettings.bannerAnimations) binding.mediaBanner.resume()
|
if (uiSettings.bannerAnimations) binding.mediaBanner.resume()
|
||||||
if (!uiSettings.immersiveMode) this.window.statusBarColor = ContextCompat.getColor(this, R.color.nav_bg_inv)
|
if (!uiSettings.immersiveMode) this.window.statusBarColor = color
|
||||||
}
|
}
|
||||||
if (percentage == 1 && model.scrolledToTop.value != false) model.scrolledToTop.postValue(false)
|
if (percentage == 1 && model.scrolledToTop.value != false) model.scrolledToTop.postValue(
|
||||||
|
false
|
||||||
|
)
|
||||||
if (percentage == 0 && model.scrolledToTop.value != true) model.scrolledToTop.postValue(true)
|
if (percentage == 0 && model.scrolledToTop.value != true) model.scrolledToTop.postValue(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,7 +474,8 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
ObjectAnimator.ofFloat(image, "scaleY", 1f, 0f).setDuration(100).start()
|
ObjectAnimator.ofFloat(image, "scaleY", 1f, 0f).setDuration(100).start()
|
||||||
delay(100)
|
delay(100)
|
||||||
if (clicked) {
|
if (clicked) {
|
||||||
ObjectAnimator.ofArgb(image,
|
ObjectAnimator.ofArgb(
|
||||||
|
image,
|
||||||
"ColorFilter",
|
"ColorFilter",
|
||||||
ContextCompat.getColor(context, c1),
|
ContextCompat.getColor(context, c1),
|
||||||
ContextCompat.getColor(context, c2)
|
ContextCompat.getColor(context, c2)
|
||||||
|
@ -449,7 +498,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
|
||||||
|
|
||||||
fun enabled(enabled: Boolean) {
|
fun enabled(enabled: Boolean) {
|
||||||
disabled = !enabled
|
disabled = !enabled
|
||||||
image.alpha = if(disabled) 0.33f else 1f
|
image.alpha = if (disabled) 0.33f else 1f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ import ani.dantotsu.connections.anilist.Anilist
|
||||||
import ani.dantotsu.databinding.BottomSheetMediaListSmallBinding
|
import ani.dantotsu.databinding.BottomSheetMediaListSmallBinding
|
||||||
import ani.dantotsu.connections.mal.MAL
|
import ani.dantotsu.connections.mal.MAL
|
||||||
import ani.dantotsu.others.getSerialized
|
import ani.dantotsu.others.getSerialized
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
|
@ -16,6 +16,7 @@ import ani.dantotsu.connections.anilist.Anilist
|
||||||
import ani.dantotsu.connections.anilist.AnilistSearch
|
import ani.dantotsu.connections.anilist.AnilistSearch
|
||||||
import ani.dantotsu.connections.anilist.SearchResults
|
import ani.dantotsu.connections.anilist.SearchResults
|
||||||
import ani.dantotsu.databinding.ActivitySearchBinding
|
import ani.dantotsu.databinding.ActivitySearchBinding
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -37,6 +38,7 @@ class SearchActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivitySearchBinding.inflate(layoutInflater)
|
binding = ActivitySearchBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
initActivity(this)
|
initActivity(this)
|
||||||
|
|
|
@ -15,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import ani.dantotsu.*
|
import ani.dantotsu.*
|
||||||
import ani.dantotsu.databinding.ActivityStudioBinding
|
import ani.dantotsu.databinding.ActivityStudioBinding
|
||||||
import ani.dantotsu.others.getSerialized
|
import ani.dantotsu.others.getSerialized
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
@ -28,6 +29,7 @@ class StudioActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityStudioBinding.inflate(layoutInflater)
|
binding = ActivityStudioBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
48
app/src/main/java/ani/dantotsu/media/SubtitleDownloader.kt
Normal file
48
app/src/main/java/ani/dantotsu/media/SubtitleDownloader.kt
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package ani.dantotsu.media
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Environment
|
||||||
|
import ani.dantotsu.parsers.SubtitleType
|
||||||
|
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||||
|
import okhttp3.Request
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
import java.io.File
|
||||||
|
import java.io.FileOutputStream
|
||||||
|
import java.io.IOException
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
|
import java.io.FileInputStream
|
||||||
|
|
||||||
|
class SubtitleDownloader {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
//doesn't really download the subtitles -\_(o_o)_/-
|
||||||
|
suspend fun downloadSubtitles(context: Context, url: String): SubtitleType =
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
// Initialize the NetworkHelper instance. Replace this line based on how you usually initialize it
|
||||||
|
val networkHelper = Injekt.get<NetworkHelper>()
|
||||||
|
val request = Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val response = networkHelper.client.newCall(request).execute()
|
||||||
|
|
||||||
|
// Check if response is successful
|
||||||
|
if (response.isSuccessful) {
|
||||||
|
val responseBody = response.body?.string()
|
||||||
|
|
||||||
|
|
||||||
|
val subtitleType = when {
|
||||||
|
responseBody?.contains("[Script Info]") == true -> SubtitleType.ASS
|
||||||
|
responseBody?.contains("WEBVTT") == true -> SubtitleType.VTT
|
||||||
|
else -> SubtitleType.SRT
|
||||||
|
}
|
||||||
|
|
||||||
|
return@withContext subtitleType
|
||||||
|
} else {
|
||||||
|
return@withContext SubtitleType.UNKNOWN
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -53,6 +53,7 @@ import androidx.media3.datasource.okhttp.OkHttpDataSource
|
||||||
import androidx.media3.exoplayer.ExoPlayer
|
import androidx.media3.exoplayer.ExoPlayer
|
||||||
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
|
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
|
||||||
import androidx.media3.exoplayer.trackselection.DefaultTrackSelector
|
import androidx.media3.exoplayer.trackselection.DefaultTrackSelector
|
||||||
|
import androidx.media3.exoplayer.util.EventLogger
|
||||||
import androidx.media3.session.MediaSession
|
import androidx.media3.session.MediaSession
|
||||||
import androidx.media3.ui.*
|
import androidx.media3.ui.*
|
||||||
import androidx.media3.ui.CaptionStyleCompat.*
|
import androidx.media3.ui.CaptionStyleCompat.*
|
||||||
|
@ -65,6 +66,7 @@ import ani.dantotsu.connections.updateProgress
|
||||||
import ani.dantotsu.databinding.ActivityExoplayerBinding
|
import ani.dantotsu.databinding.ActivityExoplayerBinding
|
||||||
import ani.dantotsu.media.Media
|
import ani.dantotsu.media.Media
|
||||||
import ani.dantotsu.media.MediaDetailsViewModel
|
import ani.dantotsu.media.MediaDetailsViewModel
|
||||||
|
import ani.dantotsu.media.SubtitleDownloader
|
||||||
import ani.dantotsu.others.AniSkip
|
import ani.dantotsu.others.AniSkip
|
||||||
import ani.dantotsu.others.AniSkip.getType
|
import ani.dantotsu.others.AniSkip.getType
|
||||||
import ani.dantotsu.others.Download.download
|
import ani.dantotsu.others.Download.download
|
||||||
|
@ -74,6 +76,7 @@ import ani.dantotsu.parsers.*
|
||||||
import ani.dantotsu.settings.PlayerSettings
|
import ani.dantotsu.settings.PlayerSettings
|
||||||
import ani.dantotsu.settings.PlayerSettingsActivity
|
import ani.dantotsu.settings.PlayerSettingsActivity
|
||||||
import ani.dantotsu.settings.UserInterfaceSettings
|
import ani.dantotsu.settings.UserInterfaceSettings
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.google.android.material.slider.Slider
|
import com.google.android.material.slider.Slider
|
||||||
import com.lagradost.nicehttp.ignoreAllSSLErrors
|
import com.lagradost.nicehttp.ignoreAllSSLErrors
|
||||||
|
@ -81,12 +84,15 @@ import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import okhttp3.internal.immutableListOf
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
@SuppressLint("SetTextI18n", "ClickableViewAccessibility")
|
||||||
class ExoplayerView : AppCompatActivity(), Player.Listener {
|
class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
@ -183,7 +189,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
val displayCutout = window.decorView.rootWindowInsets.displayCutout
|
val displayCutout = window.decorView.rootWindowInsets.displayCutout
|
||||||
if (displayCutout != null) {
|
if (displayCutout != null) {
|
||||||
if (displayCutout.boundingRects.size > 0) {
|
if (displayCutout.boundingRects.size > 0) {
|
||||||
notchHeight = min(displayCutout.boundingRects[0].width(), displayCutout.boundingRects[0].height())
|
notchHeight = min(
|
||||||
|
displayCutout.boundingRects[0].width(),
|
||||||
|
displayCutout.boundingRects[0].height()
|
||||||
|
)
|
||||||
checkNotch()
|
checkNotch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,101 +203,104 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
private fun checkNotch() {
|
private fun checkNotch() {
|
||||||
if (notchHeight != 0) {
|
if (notchHeight != 0) {
|
||||||
val orientation = resources.configuration.orientation
|
val orientation = resources.configuration.orientation
|
||||||
playerView.findViewById<View>(R.id.exo_controller_margin).updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
playerView.findViewById<View>(R.id.exo_controller_margin)
|
||||||
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
marginStart = notchHeight
|
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||||
marginEnd = notchHeight
|
marginStart = notchHeight
|
||||||
topMargin = 0
|
marginEnd = notchHeight
|
||||||
} else {
|
topMargin = 0
|
||||||
topMargin = notchHeight
|
} else {
|
||||||
marginStart = 0
|
topMargin = notchHeight
|
||||||
marginEnd = 0
|
marginStart = 0
|
||||||
|
marginEnd = 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
playerView.findViewById<View>(androidx.media3.ui.R.id.exo_buffering).translationY =
|
playerView.findViewById<View>(androidx.media3.ui.R.id.exo_buffering).translationY =
|
||||||
(if (orientation == Configuration.ORIENTATION_LANDSCAPE) 0 else (notchHeight + 8f.px)).dp
|
(if (orientation == Configuration.ORIENTATION_LANDSCAPE) 0 else (notchHeight + 8f.px)).dp
|
||||||
exoBrightnessCont.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
exoBrightnessCont.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
marginEnd = if (orientation == Configuration.ORIENTATION_LANDSCAPE) notchHeight else 0
|
marginEnd =
|
||||||
|
if (orientation == Configuration.ORIENTATION_LANDSCAPE) notchHeight else 0
|
||||||
}
|
}
|
||||||
exoVolumeCont.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
exoVolumeCont.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
marginStart = if (orientation == Configuration.ORIENTATION_LANDSCAPE) notchHeight else 0
|
marginStart =
|
||||||
|
if (orientation == Configuration.ORIENTATION_LANDSCAPE) notchHeight else 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupSubFormatting(playerView: PlayerView, settings: PlayerSettings) {
|
private fun setupSubFormatting(playerView: PlayerView, settings: PlayerSettings) {
|
||||||
val primaryColor = when (settings.primaryColor) {
|
val primaryColor = when (settings.primaryColor) {
|
||||||
0 -> Color.BLACK
|
0 -> Color.BLACK
|
||||||
1 -> Color.DKGRAY
|
1 -> Color.DKGRAY
|
||||||
2 -> Color.GRAY
|
2 -> Color.GRAY
|
||||||
3 -> Color.LTGRAY
|
3 -> Color.LTGRAY
|
||||||
4 -> Color.WHITE
|
4 -> Color.WHITE
|
||||||
5 -> Color.RED
|
5 -> Color.RED
|
||||||
6 -> Color.YELLOW
|
6 -> Color.YELLOW
|
||||||
7 -> Color.GREEN
|
7 -> Color.GREEN
|
||||||
8 -> Color.CYAN
|
8 -> Color.CYAN
|
||||||
9 -> Color.BLUE
|
9 -> Color.BLUE
|
||||||
10 -> Color.MAGENTA
|
10 -> Color.MAGENTA
|
||||||
11 -> Color.TRANSPARENT
|
11 -> Color.TRANSPARENT
|
||||||
else -> Color.WHITE
|
else -> Color.WHITE
|
||||||
}
|
}
|
||||||
val secondaryColor = when (settings.secondaryColor) {
|
val secondaryColor = when (settings.secondaryColor) {
|
||||||
0 -> Color.BLACK
|
0 -> Color.BLACK
|
||||||
1 -> Color.DKGRAY
|
1 -> Color.DKGRAY
|
||||||
2 -> Color.GRAY
|
2 -> Color.GRAY
|
||||||
3 -> Color.LTGRAY
|
3 -> Color.LTGRAY
|
||||||
4 -> Color.WHITE
|
4 -> Color.WHITE
|
||||||
5 -> Color.RED
|
5 -> Color.RED
|
||||||
6 -> Color.YELLOW
|
6 -> Color.YELLOW
|
||||||
7 -> Color.GREEN
|
7 -> Color.GREEN
|
||||||
8 -> Color.CYAN
|
8 -> Color.CYAN
|
||||||
9 -> Color.BLUE
|
9 -> Color.BLUE
|
||||||
10 -> Color.MAGENTA
|
10 -> Color.MAGENTA
|
||||||
11 -> Color.TRANSPARENT
|
11 -> Color.TRANSPARENT
|
||||||
else -> Color.BLACK
|
else -> Color.BLACK
|
||||||
}
|
}
|
||||||
val outline = when (settings.outline) {
|
val outline = when (settings.outline) {
|
||||||
0 -> EDGE_TYPE_OUTLINE // Normal
|
0 -> EDGE_TYPE_OUTLINE // Normal
|
||||||
1 -> EDGE_TYPE_DEPRESSED // Shine
|
1 -> EDGE_TYPE_DEPRESSED // Shine
|
||||||
2 -> EDGE_TYPE_DROP_SHADOW // Drop shadow
|
2 -> EDGE_TYPE_DROP_SHADOW // Drop shadow
|
||||||
3 -> EDGE_TYPE_NONE // No outline
|
3 -> EDGE_TYPE_NONE // No outline
|
||||||
else -> EDGE_TYPE_OUTLINE // Normal
|
else -> EDGE_TYPE_OUTLINE // Normal
|
||||||
}
|
}
|
||||||
val subBackground = when (settings.subBackground) {
|
val subBackground = when (settings.subBackground) {
|
||||||
0 -> Color.TRANSPARENT
|
0 -> Color.TRANSPARENT
|
||||||
1 -> Color.BLACK
|
1 -> Color.BLACK
|
||||||
2 -> Color.DKGRAY
|
2 -> Color.DKGRAY
|
||||||
3 -> Color.GRAY
|
3 -> Color.GRAY
|
||||||
4 -> Color.LTGRAY
|
4 -> Color.LTGRAY
|
||||||
5 -> Color.WHITE
|
5 -> Color.WHITE
|
||||||
6 -> Color.RED
|
6 -> Color.RED
|
||||||
7 -> Color.YELLOW
|
7 -> Color.YELLOW
|
||||||
8 -> Color.GREEN
|
8 -> Color.GREEN
|
||||||
9 -> Color.CYAN
|
9 -> Color.CYAN
|
||||||
10 -> Color.BLUE
|
10 -> Color.BLUE
|
||||||
11 -> Color.MAGENTA
|
11 -> Color.MAGENTA
|
||||||
else -> Color.TRANSPARENT
|
else -> Color.TRANSPARENT
|
||||||
}
|
}
|
||||||
val subWindow = when (settings.subWindow) {
|
val subWindow = when (settings.subWindow) {
|
||||||
0 -> Color.TRANSPARENT
|
0 -> Color.TRANSPARENT
|
||||||
1 -> Color.BLACK
|
1 -> Color.BLACK
|
||||||
2 -> Color.DKGRAY
|
2 -> Color.DKGRAY
|
||||||
3 -> Color.GRAY
|
3 -> Color.GRAY
|
||||||
4 -> Color.LTGRAY
|
4 -> Color.LTGRAY
|
||||||
5 -> Color.WHITE
|
5 -> Color.WHITE
|
||||||
6 -> Color.RED
|
6 -> Color.RED
|
||||||
7 -> Color.YELLOW
|
7 -> Color.YELLOW
|
||||||
8 -> Color.GREEN
|
8 -> Color.GREEN
|
||||||
9 -> Color.CYAN
|
9 -> Color.CYAN
|
||||||
10 -> Color.BLUE
|
10 -> Color.BLUE
|
||||||
11 -> Color.MAGENTA
|
11 -> Color.MAGENTA
|
||||||
else -> Color.TRANSPARENT
|
else -> Color.TRANSPARENT
|
||||||
}
|
}
|
||||||
val font = when (settings.font) {
|
val font = when (settings.font) {
|
||||||
0 -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold)
|
0 -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold)
|
||||||
1 -> ResourcesCompat.getFont(this, R.font.poppins_bold)
|
1 -> ResourcesCompat.getFont(this, R.font.poppins_bold)
|
||||||
2 -> ResourcesCompat.getFont(this, R.font.poppins)
|
2 -> ResourcesCompat.getFont(this, R.font.poppins)
|
||||||
3 -> ResourcesCompat.getFont(this, R.font.poppins_thin)
|
3 -> ResourcesCompat.getFont(this, R.font.poppins_thin)
|
||||||
else -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold)
|
else -> ResourcesCompat.getFont(this, R.font.poppins_semi_bold)
|
||||||
}
|
}
|
||||||
playerView.subtitleView?.setStyle(
|
playerView.subtitleView?.setStyle(
|
||||||
|
@ -305,6 +317,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityExoplayerBinding.inflate(layoutInflater)
|
binding = ActivityExoplayerBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
@ -316,8 +329,18 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
finishAndRemoveTask()
|
finishAndRemoveTask()
|
||||||
}
|
}
|
||||||
|
|
||||||
settings = loadData("player_settings") ?: PlayerSettings().apply { saveData("player_settings", this) }
|
settings = loadData("player_settings") ?: PlayerSettings().apply {
|
||||||
uiSettings = loadData("ui_settings") ?: UserInterfaceSettings().apply { saveData("ui_settings", this) }
|
saveData(
|
||||||
|
"player_settings",
|
||||||
|
this
|
||||||
|
)
|
||||||
|
}
|
||||||
|
uiSettings = loadData("ui_settings") ?: UserInterfaceSettings().apply {
|
||||||
|
saveData(
|
||||||
|
"ui_settings",
|
||||||
|
this
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
playerView = findViewById(R.id.player_view)
|
playerView = findViewById(R.id.player_view)
|
||||||
exoQuality = playerView.findViewById(R.id.exo_quality)
|
exoQuality = playerView.findViewById(R.id.exo_quality)
|
||||||
|
@ -360,17 +383,20 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
requestedOrientation = rotation
|
requestedOrientation = rotation
|
||||||
it.visibility = View.GONE
|
it.visibility = View.GONE
|
||||||
}
|
}
|
||||||
orientationListener = object : OrientationEventListener(this, SensorManager.SENSOR_DELAY_UI) {
|
orientationListener =
|
||||||
override fun onOrientationChanged(orientation: Int) {
|
object : OrientationEventListener(this, SensorManager.SENSOR_DELAY_UI) {
|
||||||
if (orientation in 45..135) {
|
override fun onOrientationChanged(orientation: Int) {
|
||||||
if (rotation != ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE) exoRotate.visibility = View.VISIBLE
|
if (orientation in 45..135) {
|
||||||
rotation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
|
if (rotation != ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE) exoRotate.visibility =
|
||||||
} else if (orientation in 225..315) {
|
View.VISIBLE
|
||||||
if (rotation != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) exoRotate.visibility = View.VISIBLE
|
rotation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
|
||||||
rotation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
|
} else if (orientation in 225..315) {
|
||||||
|
if (rotation != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) exoRotate.visibility =
|
||||||
|
View.VISIBLE
|
||||||
|
rotation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
orientationListener?.enable()
|
orientationListener?.enable()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,7 +404,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
|
|
||||||
playerView.subtitleView?.alpha = when (settings.subtitles) {
|
playerView.subtitleView?.alpha = when (settings.subtitles) {
|
||||||
true -> 1f
|
true -> 1f
|
||||||
false -> 0f
|
false -> 0f
|
||||||
}
|
}
|
||||||
val fontSize = settings.fontSize.toFloat()
|
val fontSize = settings.fontSize.toFloat()
|
||||||
|
@ -401,7 +427,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
isTimeStampsLoaded = true
|
isTimeStampsLoaded = true
|
||||||
exoSkipOpEd.visibility = if (it != null) {
|
exoSkipOpEd.visibility = if (it != null) {
|
||||||
val adGroups = it.flatMap {
|
val adGroups = it.flatMap {
|
||||||
listOf(it.interval.startTime.toLong() * 1000, it.interval.endTime.toLong() * 1000)
|
listOf(
|
||||||
|
it.interval.startTime.toLong() * 1000,
|
||||||
|
it.interval.endTime.toLong() * 1000
|
||||||
|
)
|
||||||
}.toLongArray()
|
}.toLongArray()
|
||||||
val playedAdGroups = it.flatMap {
|
val playedAdGroups = it.flatMap {
|
||||||
listOf(false, false)
|
listOf(false, false)
|
||||||
|
@ -441,7 +470,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
// Picture-in-picture
|
// Picture-in-picture
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
pipEnabled = packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) && settings.pip
|
pipEnabled =
|
||||||
|
packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) && settings.pip
|
||||||
if (pipEnabled) {
|
if (pipEnabled) {
|
||||||
exoPip.visibility = View.VISIBLE
|
exoPip.visibility = View.VISIBLE
|
||||||
exoPip.setOnClickListener {
|
exoPip.setOnClickListener {
|
||||||
|
@ -456,7 +486,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
val container = playerView.findViewById<View>(R.id.exo_controller_cont)
|
val container = playerView.findViewById<View>(R.id.exo_controller_cont)
|
||||||
val screen = playerView.findViewById<View>(R.id.exo_black_screen)
|
val screen = playerView.findViewById<View>(R.id.exo_black_screen)
|
||||||
val lockButton = playerView.findViewById<ImageButton>(R.id.exo_unlock)
|
val lockButton = playerView.findViewById<ImageButton>(R.id.exo_unlock)
|
||||||
val timeline = playerView.findViewById<ExtendedTimeBar>(androidx.media3.ui.R.id.exo_progress)
|
val timeline =
|
||||||
|
playerView.findViewById<ExtendedTimeBar>(androidx.media3.ui.R.id.exo_progress)
|
||||||
playerView.findViewById<ImageButton>(R.id.exo_lock).setOnClickListener {
|
playerView.findViewById<ImageButton>(R.id.exo_lock).setOnClickListener {
|
||||||
locked = true
|
locked = true
|
||||||
screen.visibility = View.GONE
|
screen.visibility = View.GONE
|
||||||
|
@ -496,17 +527,22 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
dialog.findViewById<Slider>(R.id.seekbar).addOnChangeListener { _, value, _ ->
|
dialog.findViewById<Slider>(R.id.seekbar).addOnChangeListener { _, value, _ ->
|
||||||
settings.skipTime = value.toInt()
|
settings.skipTime = value.toInt()
|
||||||
saveData(player, settings)
|
saveData(player, settings)
|
||||||
playerView.findViewById<TextView>(R.id.exo_skip_time).text = settings.skipTime.toString()
|
playerView.findViewById<TextView>(R.id.exo_skip_time).text =
|
||||||
dialog.findViewById<TextView>(R.id.seekbar_value).text = settings.skipTime.toString()
|
settings.skipTime.toString()
|
||||||
|
dialog.findViewById<TextView>(R.id.seekbar_value).text =
|
||||||
|
settings.skipTime.toString()
|
||||||
}
|
}
|
||||||
dialog.findViewById<Slider>(R.id.seekbar).addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
dialog.findViewById<Slider>(R.id.seekbar)
|
||||||
override fun onStartTrackingTouch(slider: Slider) {}
|
.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||||
override fun onStopTrackingTouch(slider: Slider) {
|
override fun onStartTrackingTouch(slider: Slider) {}
|
||||||
dialog.dismiss()
|
override fun onStopTrackingTouch(slider: Slider) {
|
||||||
}
|
dialog.dismiss()
|
||||||
})
|
}
|
||||||
dialog.findViewById<TextView>(R.id.seekbar_title).text = getString(R.string.skip_time)
|
})
|
||||||
dialog.findViewById<TextView>(R.id.seekbar_value).text = settings.skipTime.toString()
|
dialog.findViewById<TextView>(R.id.seekbar_title).text =
|
||||||
|
getString(R.string.skip_time)
|
||||||
|
dialog.findViewById<TextView>(R.id.seekbar_value).text =
|
||||||
|
settings.skipTime.toString()
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
dialog.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
dialog.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||||||
dialog.show()
|
dialog.show()
|
||||||
|
@ -521,7 +557,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
val brightnessRunnable = Runnable {
|
val brightnessRunnable = Runnable {
|
||||||
if (exoBrightnessCont.alpha == 1f)
|
if (exoBrightnessCont.alpha == 1f)
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
ObjectAnimator.ofFloat(exoBrightnessCont, "alpha", 1f, 0f).setDuration(gestureSpeed).start()
|
ObjectAnimator.ofFloat(exoBrightnessCont, "alpha", 1f, 0f)
|
||||||
|
.setDuration(gestureSpeed).start()
|
||||||
delay(gestureSpeed)
|
delay(gestureSpeed)
|
||||||
exoBrightnessCont.visibility = View.GONE
|
exoBrightnessCont.visibility = View.GONE
|
||||||
checkNotch()
|
checkNotch()
|
||||||
|
@ -530,7 +567,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
val volumeRunnable = Runnable {
|
val volumeRunnable = Runnable {
|
||||||
if (exoVolumeCont.alpha == 1f)
|
if (exoVolumeCont.alpha == 1f)
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
ObjectAnimator.ofFloat(exoVolumeCont, "alpha", 1f, 0f).setDuration(gestureSpeed).start()
|
ObjectAnimator.ofFloat(exoVolumeCont, "alpha", 1f, 0f).setDuration(gestureSpeed)
|
||||||
|
.start()
|
||||||
delay(gestureSpeed)
|
delay(gestureSpeed)
|
||||||
exoVolumeCont.visibility = View.GONE
|
exoVolumeCont.visibility = View.GONE
|
||||||
checkNotch()
|
checkNotch()
|
||||||
|
@ -548,25 +586,65 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
fun handleController() {
|
fun handleController() {
|
||||||
if (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) !isInPictureInPictureMode else true) {
|
if (if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) !isInPictureInPictureMode else true) {
|
||||||
if (playerView.isControllerFullyVisible) {
|
if (playerView.isControllerFullyVisible) {
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_controller), "alpha", 1f, 0f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_controller),
|
||||||
|
"alpha",
|
||||||
|
1f,
|
||||||
|
0f
|
||||||
|
)
|
||||||
.setDuration(controllerDuration).start()
|
.setDuration(controllerDuration).start()
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_bottom_cont), "translationY", 0f, 128f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_bottom_cont),
|
||||||
|
"translationY",
|
||||||
|
0f,
|
||||||
|
128f
|
||||||
|
)
|
||||||
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_timeline_cont), "translationY", 0f, 128f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_timeline_cont),
|
||||||
|
"translationY",
|
||||||
|
0f,
|
||||||
|
128f
|
||||||
|
)
|
||||||
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_top_cont), "translationY", 0f, -128f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_top_cont),
|
||||||
|
"translationY",
|
||||||
|
0f,
|
||||||
|
-128f
|
||||||
|
)
|
||||||
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
||||||
playerView.postDelayed({ playerView.hideController() }, controllerDuration)
|
playerView.postDelayed({ playerView.hideController() }, controllerDuration)
|
||||||
} else {
|
} else {
|
||||||
checkNotch()
|
checkNotch()
|
||||||
playerView.showController()
|
playerView.showController()
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_controller), "alpha", 0f, 1f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_controller),
|
||||||
|
"alpha",
|
||||||
|
0f,
|
||||||
|
1f
|
||||||
|
)
|
||||||
.setDuration(controllerDuration).start()
|
.setDuration(controllerDuration).start()
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_bottom_cont), "translationY", 128f, 0f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_bottom_cont),
|
||||||
|
"translationY",
|
||||||
|
128f,
|
||||||
|
0f
|
||||||
|
)
|
||||||
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_timeline_cont), "translationY", 128f, 0f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_timeline_cont),
|
||||||
|
"translationY",
|
||||||
|
128f,
|
||||||
|
0f
|
||||||
|
)
|
||||||
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
||||||
ObjectAnimator.ofFloat(playerView.findViewById(R.id.exo_top_cont), "translationY", -128f, 0f)
|
ObjectAnimator.ofFloat(
|
||||||
|
playerView.findViewById(R.id.exo_top_cont),
|
||||||
|
"translationY",
|
||||||
|
-128f,
|
||||||
|
0f
|
||||||
|
)
|
||||||
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
.apply { interpolator = overshoot;duration = controllerDuration;start() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -651,8 +729,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!settings.doubleTap) {
|
if (!settings.doubleTap) {
|
||||||
playerView.findViewById<View>(R.id.exo_fast_forward_button_cont).visibility = View.VISIBLE
|
playerView.findViewById<View>(R.id.exo_fast_forward_button_cont).visibility =
|
||||||
playerView.findViewById<View>(R.id.exo_fast_rewind_button_cont).visibility = View.VISIBLE
|
View.VISIBLE
|
||||||
|
playerView.findViewById<View>(R.id.exo_fast_rewind_button_cont).visibility =
|
||||||
|
View.VISIBLE
|
||||||
playerView.findViewById<ImageButton>(R.id.exo_fast_forward_button).setOnClickListener {
|
playerView.findViewById<ImageButton>(R.id.exo_fast_forward_button).setOnClickListener {
|
||||||
if (isInitialized) {
|
if (isInitialized) {
|
||||||
seek(true)
|
seek(true)
|
||||||
|
@ -696,7 +776,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
exoBrightness.addOnChangeListener { _, value, _ ->
|
exoBrightness.addOnChangeListener { _, value, _ ->
|
||||||
val lp = window.attributes
|
val lp = window.attributes
|
||||||
lp.screenBrightness = brightnessConverter((value.takeIf { !it.isNaN() } ?: 0f) / 10, false)
|
lp.screenBrightness =
|
||||||
|
brightnessConverter((value.takeIf { !it.isNaN() } ?: 0f) / 10, false)
|
||||||
window.attributes = lp
|
window.attributes = lp
|
||||||
brightnessHide()
|
brightnessHide()
|
||||||
}
|
}
|
||||||
|
@ -757,7 +838,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSingleClick(event: MotionEvent) = if (isSeeking) doubleTap(false, event) else handleController()
|
override fun onSingleClick(event: MotionEvent) =
|
||||||
|
if (isSeeking) doubleTap(false, event) else handleController()
|
||||||
})
|
})
|
||||||
val rewindArea = playerView.findViewById<View>(R.id.exo_rewind_area)
|
val rewindArea = playerView.findViewById<View>(R.id.exo_rewind_area)
|
||||||
rewindArea.isClickable = true
|
rewindArea.isClickable = true
|
||||||
|
@ -786,7 +868,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSingleClick(event: MotionEvent) = if (isSeeking) doubleTap(true, event) else handleController()
|
override fun onSingleClick(event: MotionEvent) =
|
||||||
|
if (isSeeking) doubleTap(true, event) else handleController()
|
||||||
})
|
})
|
||||||
val forwardArea = playerView.findViewById<View>(R.id.exo_forward_area)
|
val forwardArea = playerView.findViewById<View>(R.id.exo_forward_area)
|
||||||
forwardArea.isClickable = true
|
forwardArea.isClickable = true
|
||||||
|
@ -817,7 +900,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
model.watchSources = if (media.isAdult) HAnimeSources else AnimeSources
|
model.watchSources = if (media.isAdult) HAnimeSources else AnimeSources
|
||||||
serverInfo.text = model.watchSources!!.names.getOrNull(media.selected!!.sourceIndex) ?: model.watchSources!!.names[0]
|
serverInfo.text = model.watchSources!!.names.getOrNull(media.selected!!.sourceIndex)
|
||||||
|
?: model.watchSources!!.names[0]
|
||||||
|
|
||||||
model.epChanged.observe(this) {
|
model.epChanged.observe(this) {
|
||||||
epChanging = !it
|
epChanging = !it
|
||||||
|
@ -906,7 +990,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
rpc?.send {
|
rpc?.send {
|
||||||
type = RPC.Type.WATCHING
|
type = RPC.Type.WATCHING
|
||||||
activityName = media.userPreferredName
|
activityName = media.userPreferredName
|
||||||
details = ep.title?.takeIf { it.isNotEmpty() } ?: getString(R.string.episode_num, ep.number)
|
details = ep.title?.takeIf { it.isNotEmpty() } ?: getString(
|
||||||
|
R.string.episode_num,
|
||||||
|
ep.number
|
||||||
|
)
|
||||||
state = "Episode : ${ep.number}/${media.anime?.totalEpisodes ?: "??"}"
|
state = "Episode : ${ep.number}/${media.anime?.totalEpisodes ?: "??"}"
|
||||||
media.cover?.let { cover ->
|
media.cover?.let { cover ->
|
||||||
largeImage = RPC.Link(media.userPreferredName, cover)
|
largeImage = RPC.Link(media.userPreferredName, cover)
|
||||||
|
@ -922,25 +1009,25 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
//FullScreen
|
//FullScreen
|
||||||
isFullscreen = loadData("${media.id}_fullscreenInt", this) ?: isFullscreen
|
isFullscreen = loadData("${media.id}_fullscreenInt", this) ?: isFullscreen
|
||||||
playerView.resizeMode = when (isFullscreen) {
|
playerView.resizeMode = when (isFullscreen) {
|
||||||
0 -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
0 -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
||||||
1 -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
|
1 -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
|
||||||
2 -> AspectRatioFrameLayout.RESIZE_MODE_FILL
|
2 -> AspectRatioFrameLayout.RESIZE_MODE_FILL
|
||||||
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
||||||
}
|
}
|
||||||
|
|
||||||
exoScreen.setOnClickListener {
|
exoScreen.setOnClickListener {
|
||||||
if (isFullscreen < 2) isFullscreen += 1 else isFullscreen = 0
|
if (isFullscreen < 2) isFullscreen += 1 else isFullscreen = 0
|
||||||
playerView.resizeMode = when (isFullscreen) {
|
playerView.resizeMode = when (isFullscreen) {
|
||||||
0 -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
0 -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
||||||
1 -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
|
1 -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
|
||||||
2 -> AspectRatioFrameLayout.RESIZE_MODE_FILL
|
2 -> AspectRatioFrameLayout.RESIZE_MODE_FILL
|
||||||
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
||||||
}
|
}
|
||||||
snackString(
|
snackString(
|
||||||
when (isFullscreen) {
|
when (isFullscreen) {
|
||||||
0 -> "Original"
|
0 -> "Original"
|
||||||
1 -> "Zoom"
|
1 -> "Zoom"
|
||||||
2 -> "Stretch"
|
2 -> "Stretch"
|
||||||
else -> "Original"
|
else -> "Original"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -959,7 +1046,11 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
//Settings
|
//Settings
|
||||||
exoSettings.setOnClickListener {
|
exoSettings.setOnClickListener {
|
||||||
saveData("${media.id}_${media.anime!!.selectedEpisode}", exoPlayer.currentPosition, this)
|
saveData(
|
||||||
|
"${media.id}_${media.anime!!.selectedEpisode}",
|
||||||
|
exoPlayer.currentPosition,
|
||||||
|
this
|
||||||
|
)
|
||||||
val intent = Intent(this, PlayerSettingsActivity::class.java).apply {
|
val intent = Intent(this, PlayerSettingsActivity::class.java).apply {
|
||||||
putExtra("subtitle", subtitle)
|
putExtra("subtitle", subtitle)
|
||||||
}
|
}
|
||||||
|
@ -979,7 +1070,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
playbackParameters = PlaybackParameters(speeds[curSpeed])
|
playbackParameters = PlaybackParameters(speeds[curSpeed])
|
||||||
var speed: Float
|
var speed: Float
|
||||||
val speedDialog = AlertDialog.Builder(this, R.style.DialogTheme).setTitle(getString(R.string.speed))
|
val speedDialog =
|
||||||
|
AlertDialog.Builder(this, R.style.DialogTheme).setTitle(getString(R.string.speed))
|
||||||
exoSpeed.setOnClickListener {
|
exoSpeed.setOnClickListener {
|
||||||
speedDialog.setSingleChoiceItems(speedsName, curSpeed) { dialog, i ->
|
speedDialog.setSingleChoiceItems(speedsName, curSpeed) { dialog, i ->
|
||||||
if (isInitialized) {
|
if (isInitialized) {
|
||||||
|
@ -1018,16 +1110,19 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
isFullscreen = settings.resize
|
isFullscreen = settings.resize
|
||||||
playerView.resizeMode = when (settings.resize) {
|
playerView.resizeMode = when (settings.resize) {
|
||||||
0 -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
0 -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
||||||
1 -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
|
1 -> AspectRatioFrameLayout.RESIZE_MODE_ZOOM
|
||||||
2 -> AspectRatioFrameLayout.RESIZE_MODE_FILL
|
2 -> AspectRatioFrameLayout.RESIZE_MODE_FILL
|
||||||
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
else -> AspectRatioFrameLayout.RESIZE_MODE_FIT
|
||||||
}
|
}
|
||||||
|
|
||||||
preloading = false
|
preloading = false
|
||||||
val showProgressDialog = if (settings.askIndividual) loadData<Boolean>("${media.id}_progressDialog") ?: true else false
|
val showProgressDialog =
|
||||||
|
if (settings.askIndividual) loadData<Boolean>("${media.id}_progressDialog")
|
||||||
|
?: true else false
|
||||||
if (showProgressDialog && Anilist.userid != null && if (media.isAdult) settings.updateForH else true)
|
if (showProgressDialog && Anilist.userid != null && if (media.isAdult) settings.updateForH else true)
|
||||||
AlertDialog.Builder(this, R.style.DialogTheme).setTitle(getString(R.string.auto_update, media.userPreferredName))
|
AlertDialog.Builder(this, R.style.DialogTheme)
|
||||||
|
.setTitle(getString(R.string.auto_update, media.userPreferredName))
|
||||||
.apply {
|
.apply {
|
||||||
setOnCancelListener { hideSystemBars() }
|
setOnCancelListener { hideSystemBars() }
|
||||||
setCancelable(false)
|
setCancelable(false)
|
||||||
|
@ -1074,16 +1169,16 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
|
|
||||||
subtitle = intent.getSerialized("subtitle")
|
subtitle = intent.getSerialized("subtitle")
|
||||||
?: when (val subLang: String? = loadData("subLang_${media.id}", this)) {
|
?: when (val subLang: String? = loadData("subLang_${media.id}", this)) {
|
||||||
null -> {
|
null -> {
|
||||||
when (episode.selectedSubtitle) {
|
when (episode.selectedSubtitle) {
|
||||||
null -> null
|
null -> null
|
||||||
-1 -> ext.subtitles.find { it.language.trim() == "English" || it.language == "en-US" }
|
-1 -> ext.subtitles.find { it.language.trim() == "English" || it.language == "en-US" }
|
||||||
else -> ext.subtitles.getOrNull(episode.selectedSubtitle!!)
|
else -> ext.subtitles.getOrNull(episode.selectedSubtitle!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"None" -> ext.subtitles.let { null }
|
"None" -> ext.subtitles.let { null }
|
||||||
else -> ext.subtitles.find { it.language == subLang }
|
else -> ext.subtitles.find { it.language == subLang }
|
||||||
}
|
}
|
||||||
|
|
||||||
//Subtitles
|
//Subtitles
|
||||||
|
@ -1091,21 +1186,44 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
exoSubtitle.setOnClickListener {
|
exoSubtitle.setOnClickListener {
|
||||||
subClick()
|
subClick()
|
||||||
}
|
}
|
||||||
|
|
||||||
var sub: MediaItem.SubtitleConfiguration? = null
|
var sub: MediaItem.SubtitleConfiguration? = null
|
||||||
if (subtitle != null) {
|
if (subtitle != null) {
|
||||||
sub = MediaItem.SubtitleConfiguration
|
//var localFile: String? = null
|
||||||
.Builder(Uri.parse(subtitle!!.file.url))
|
if (subtitle?.type == SubtitleType.UNKNOWN) {
|
||||||
.setSelectionFlags(C.SELECTION_FLAG_FORCED)
|
val context = this
|
||||||
.setMimeType(
|
runBlocking {
|
||||||
when (subtitle?.type) {
|
val type = SubtitleDownloader.downloadSubtitles(context, subtitle!!.file.url)
|
||||||
SubtitleType.VTT -> MimeTypes.TEXT_VTT
|
val fileUri = Uri.parse(subtitle!!.file.url)
|
||||||
SubtitleType.ASS -> MimeTypes.TEXT_SSA
|
sub = MediaItem.SubtitleConfiguration
|
||||||
SubtitleType.SRT -> MimeTypes.APPLICATION_SUBRIP
|
.Builder(fileUri)
|
||||||
else -> MimeTypes.TEXT_UNKNOWN
|
.setSelectionFlags(C.SELECTION_FLAG_DEFAULT)
|
||||||
}
|
.setMimeType(
|
||||||
)
|
when (type) {
|
||||||
.build()
|
SubtitleType.VTT -> MimeTypes.TEXT_SSA
|
||||||
|
SubtitleType.ASS -> MimeTypes.TEXT_SSA
|
||||||
|
SubtitleType.SRT -> MimeTypes.TEXT_SSA
|
||||||
|
else -> MimeTypes.TEXT_SSA
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.setId("2")
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
println("sub: $sub")
|
||||||
|
} else {
|
||||||
|
sub = MediaItem.SubtitleConfiguration
|
||||||
|
.Builder(Uri.parse(subtitle!!.file.url))
|
||||||
|
.setSelectionFlags(C.SELECTION_FLAG_FORCED)
|
||||||
|
.setMimeType(
|
||||||
|
when (subtitle?.type) {
|
||||||
|
SubtitleType.VTT -> MimeTypes.TEXT_VTT
|
||||||
|
SubtitleType.ASS -> MimeTypes.TEXT_SSA
|
||||||
|
SubtitleType.SRT -> MimeTypes.APPLICATION_SUBRIP
|
||||||
|
else -> MimeTypes.TEXT_UNKNOWN
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.setId("2")
|
||||||
|
.build()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
|
@ -1113,7 +1231,9 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
val but = playerView.findViewById<ImageButton>(R.id.exo_download)
|
val but = playerView.findViewById<ImageButton>(R.id.exo_download)
|
||||||
if (video?.format == VideoType.CONTAINER || (loadData<Int>("settings_download_manager") ?: 0) != 0) {
|
if (video?.format == VideoType.CONTAINER || (loadData<Int>("settings_download_manager")
|
||||||
|
?: 0) != 0
|
||||||
|
) {
|
||||||
but.visibility = View.VISIBLE
|
but.visibility = View.VISIBLE
|
||||||
but.setOnClickListener {
|
but.setOnClickListener {
|
||||||
download(this, episode, animeTitle.text.toString())
|
download(this, episode, animeTitle.text.toString())
|
||||||
|
@ -1146,12 +1266,15 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
val mimeType = when (video?.format) {
|
val mimeType = when (video?.format) {
|
||||||
VideoType.M3U8 -> MimeTypes.APPLICATION_M3U8
|
VideoType.M3U8 -> MimeTypes.APPLICATION_M3U8
|
||||||
VideoType.DASH -> MimeTypes.APPLICATION_MPD
|
VideoType.DASH -> MimeTypes.APPLICATION_MPD
|
||||||
else -> MimeTypes.APPLICATION_MP4
|
else -> MimeTypes.APPLICATION_MP4
|
||||||
}
|
}
|
||||||
|
|
||||||
val builder = MediaItem.Builder().setUri(video!!.file.url).setMimeType(mimeType)
|
val builder = MediaItem.Builder().setUri(video!!.file.url).setMimeType(mimeType)
|
||||||
|
|
||||||
if (sub != null) builder.setSubtitleConfigurations(mutableListOf(sub))
|
if (sub != null) {
|
||||||
|
val listofnotnullsubs = immutableListOf(sub).filterNotNull()
|
||||||
|
builder.setSubtitleConfigurations(listofnotnullsubs)
|
||||||
|
}
|
||||||
mediaItem = builder.build()
|
mediaItem = builder.build()
|
||||||
|
|
||||||
//Source
|
//Source
|
||||||
|
@ -1163,8 +1286,22 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
trackSelector = DefaultTrackSelector(this)
|
trackSelector = DefaultTrackSelector(this)
|
||||||
trackSelector.setParameters(
|
trackSelector.setParameters(
|
||||||
trackSelector.buildUponParameters()
|
trackSelector.buildUponParameters()
|
||||||
.setMinVideoSize(loadData("maxWidth", this) ?: 720, loadData("maxHeight", this) ?: 480)
|
.setAllowVideoMixedMimeTypeAdaptiveness(true)
|
||||||
|
.setAllowVideoNonSeamlessAdaptiveness(true)
|
||||||
|
.setSelectUndeterminedTextLanguage(true)
|
||||||
|
.setAllowAudioMixedMimeTypeAdaptiveness(true)
|
||||||
|
.setAllowMultipleAdaptiveSelections(true)
|
||||||
|
.setPreferredTextLanguage(subtitle?.language ?: "en")
|
||||||
|
.setPreferredTextRoleFlags(C.ROLE_FLAG_SUBTITLE)
|
||||||
|
.setRendererDisabled(C.TRACK_TYPE_VIDEO, false)
|
||||||
|
.setRendererDisabled(C.TRACK_TYPE_AUDIO, false)
|
||||||
|
.setRendererDisabled(C.TRACK_TYPE_TEXT, false)
|
||||||
|
.setMinVideoSize(
|
||||||
|
loadData("maxWidth", this) ?: 720,
|
||||||
|
loadData("maxHeight", this) ?: 480
|
||||||
|
)
|
||||||
.setMaxVideoSize(1, 1)
|
.setMaxVideoSize(1, 1)
|
||||||
|
//.setOverrideForType(
|
||||||
)
|
)
|
||||||
|
|
||||||
if (playbackPosition != 0L && !changingServer && !settings.alwaysContinue) {
|
if (playbackPosition != 0L && !changingServer && !settings.alwaysContinue) {
|
||||||
|
@ -1181,7 +1318,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AlertDialog.Builder(this, R.style.DialogTheme).setTitle(getString(R.string.continue_from, time)).apply {
|
AlertDialog.Builder(this, R.style.DialogTheme)
|
||||||
|
.setTitle(getString(R.string.continue_from, time)).apply {
|
||||||
setCancelable(false)
|
setCancelable(false)
|
||||||
setPositiveButton(getString(R.string.yes)) { d, _ ->
|
setPositiveButton(getString(R.string.yes)) { d, _ ->
|
||||||
buildExoplayer()
|
buildExoplayer()
|
||||||
|
@ -1221,8 +1359,34 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
exoPlayer.addListener(this)
|
exoPlayer.addListener(this)
|
||||||
|
exoPlayer.addAnalyticsListener(EventLogger())
|
||||||
isInitialized = true
|
isInitialized = true
|
||||||
}
|
}
|
||||||
|
/*private fun selectSubtitleTrack() {
|
||||||
|
// Get the current track groups
|
||||||
|
val trackGroups = exoPlayer.currentTrackGroups
|
||||||
|
|
||||||
|
// Prepare a track selector parameters builder
|
||||||
|
val parametersBuilder = DefaultTrackSelector.ParametersBuilder(this)
|
||||||
|
|
||||||
|
// Iterate through the track groups to find the subtitle tracks
|
||||||
|
for (i in 0 until trackGroups.length) {
|
||||||
|
val trackGroup = trackGroups[i]
|
||||||
|
for (j in 0 until trackGroup.length) {
|
||||||
|
val trackMetadata = trackGroup.getFormat(j)
|
||||||
|
|
||||||
|
// Check if the track is a subtitle track
|
||||||
|
if (MimeTypes.isText(trackMetadata.sampleMimeType)) {
|
||||||
|
parametersBuilder.setRendererDisabled(i, false) // Enable the renderer for this track group
|
||||||
|
parametersBuilder.setSelectionOverride(i, trackGroups, DefaultTrackSelector.SelectionOverride(j, 0)) // Override to select this track
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply the track selector parameters to select the subtitle
|
||||||
|
trackSelector.setParameters(parametersBuilder)
|
||||||
|
}*/
|
||||||
|
|
||||||
private fun releasePlayer() {
|
private fun releasePlayer() {
|
||||||
isPlayerPlaying = exoPlayer.playWhenReady
|
isPlayerPlaying = exoPlayer.playWhenReady
|
||||||
|
@ -1266,7 +1430,11 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
orientationListener?.disable()
|
orientationListener?.disable()
|
||||||
if (isInitialized) {
|
if (isInitialized) {
|
||||||
playerView.player?.pause()
|
playerView.player?.pause()
|
||||||
saveData("${media.id}_${media.anime!!.selectedEpisode}", exoPlayer.currentPosition, this)
|
saveData(
|
||||||
|
"${media.id}_${media.anime!!.selectedEpisode}",
|
||||||
|
exoPlayer.currentPosition,
|
||||||
|
this
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1304,7 +1472,8 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
playerView.keepScreenOn = isPlaying
|
playerView.keepScreenOn = isPlaying
|
||||||
(exoPlay.drawable as Animatable?)?.start()
|
(exoPlay.drawable as Animatable?)?.start()
|
||||||
if (!this.isDestroyed) Glide.with(this)
|
if (!this.isDestroyed) Glide.with(this)
|
||||||
.load(if (isPlaying) R.drawable.anim_play_to_pause else R.drawable.anim_pause_to_play).into(exoPlay)
|
.load(if (isPlaying) R.drawable.anim_play_to_pause else R.drawable.anim_pause_to_play)
|
||||||
|
.into(exoPlay)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1383,7 +1552,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
exoPlayer.seekTo((new.interval.endTime * 1000).toLong())
|
exoPlayer.seekTo((new.interval.endTime * 1000).toLong())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (settings.autoSkipOPED && (new.skipType == "op" || new.skipType == "ed") && !skippedTimeStamps.contains(new)) {
|
if (settings.autoSkipOPED && (new.skipType == "op" || new.skipType == "ed") && !skippedTimeStamps.contains(
|
||||||
|
new
|
||||||
|
)
|
||||||
|
) {
|
||||||
exoPlayer.seekTo((new.interval.endTime * 1000).toLong())
|
exoPlayer.seekTo((new.interval.endTime * 1000).toLong())
|
||||||
skippedTimeStamps.add(new)
|
skippedTimeStamps.add(new)
|
||||||
}
|
}
|
||||||
|
@ -1426,6 +1598,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
private var isBuffering = true
|
private var isBuffering = true
|
||||||
override fun onPlaybackStateChanged(playbackState: Int) {
|
override fun onPlaybackStateChanged(playbackState: Int) {
|
||||||
if (playbackState == ExoPlayer.STATE_READY) {
|
if (playbackState == ExoPlayer.STATE_READY) {
|
||||||
|
|
||||||
exoPlayer.play()
|
exoPlayer.play()
|
||||||
if (episodeLength == 0f) {
|
if (episodeLength == 0f) {
|
||||||
episodeLength = exoPlayer.duration.toFloat()
|
episodeLength = exoPlayer.duration.toFloat()
|
||||||
|
@ -1453,7 +1626,9 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
var i = 1
|
var i = 1
|
||||||
while (isFiller) {
|
while (isFiller) {
|
||||||
if (episodeArr.size > currentEpisodeIndex + i) {
|
if (episodeArr.size > currentEpisodeIndex + i) {
|
||||||
isFiller = if (settings.autoSkipFiller) episodes[episodeArr[currentEpisodeIndex + i]]?.filler ?: false else false
|
isFiller =
|
||||||
|
if (settings.autoSkipFiller) episodes[episodeArr[currentEpisodeIndex + i]]?.filler
|
||||||
|
?: false else false
|
||||||
if (!isFiller) runnable.invoke(i)
|
if (!isFiller) runnable.invoke(i)
|
||||||
i++
|
i++
|
||||||
} else {
|
} else {
|
||||||
|
@ -1509,7 +1684,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
shareVideo.setDataAndType(Uri.parse(videoURL), "video/*")
|
shareVideo.setDataAndType(Uri.parse(videoURL), "video/*")
|
||||||
shareVideo.setPackage("com.instantbits.cast.webvideo")
|
shareVideo.setPackage("com.instantbits.cast.webvideo")
|
||||||
if (subtitle != null) shareVideo.putExtra("subtitle", subtitle!!.file.url)
|
if (subtitle != null) shareVideo.putExtra("subtitle", subtitle!!.file.url)
|
||||||
shareVideo.putExtra("title", media.userPreferredName + " : Ep " + episodeTitleArr[currentEpisodeIndex])
|
shareVideo.putExtra(
|
||||||
|
"title",
|
||||||
|
media.userPreferredName + " : Ep " + episodeTitleArr[currentEpisodeIndex]
|
||||||
|
)
|
||||||
shareVideo.putExtra("poster", episode.thumb?.url ?: media.cover)
|
shareVideo.putExtra("poster", episode.thumb?.url ?: media.cover)
|
||||||
val headers = Bundle()
|
val headers = Bundle()
|
||||||
defaultHeaders.forEach {
|
defaultHeaders.forEach {
|
||||||
|
@ -1579,7 +1757,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.O)
|
@RequiresApi(Build.VERSION_CODES.O)
|
||||||
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration) {
|
override fun onPictureInPictureModeChanged(
|
||||||
|
isInPictureInPictureMode: Boolean,
|
||||||
|
newConfig: Configuration
|
||||||
|
) {
|
||||||
onPiPChanged(isInPictureInPictureMode)
|
onPiPChanged(isInPictureInPictureMode)
|
||||||
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
|
super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig)
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import ani.dantotsu.media.MediaDetailsViewModel
|
||||||
import ani.dantotsu.others.Download.download
|
import ani.dantotsu.others.Download.download
|
||||||
import ani.dantotsu.parsers.VideoExtractor
|
import ani.dantotsu.parsers.VideoExtractor
|
||||||
import ani.dantotsu.parsers.VideoType
|
import ani.dantotsu.parsers.VideoType
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
|
@ -174,7 +174,9 @@ class MangaReadAdapter(
|
||||||
val anilistEp = (media.userProgress ?: 0).plus(1)
|
val anilistEp = (media.userProgress ?: 0).plus(1)
|
||||||
val appEp = loadData<String>("${media.id}_current_chp")?.toIntOrNull() ?: 1
|
val appEp = loadData<String>("${media.id}_current_chp")?.toIntOrNull() ?: 1
|
||||||
var continueEp = (if (anilistEp > appEp) anilistEp else appEp).toString()
|
var continueEp = (if (anilistEp > appEp) anilistEp else appEp).toString()
|
||||||
if (chapters.contains(continueEp)) {
|
val formattedChapters = chapters.map { MangaNameAdapter.findChapterNumber(it)?.toInt()?.toString() }
|
||||||
|
if (formattedChapters.contains(continueEp)) {
|
||||||
|
continueEp = chapters[formattedChapters.indexOf(continueEp)]
|
||||||
binding.animeSourceContinue.visibility = View.VISIBLE
|
binding.animeSourceContinue.visibility = View.VISIBLE
|
||||||
handleProgress(
|
handleProgress(
|
||||||
binding.itemEpisodeProgressCont,
|
binding.itemEpisodeProgressCont,
|
||||||
|
|
|
@ -116,10 +116,10 @@ abstract class BaseImageAdapter(
|
||||||
abstract suspend fun loadImage(position: Int, parent: View): Boolean
|
abstract suspend fun loadImage(position: Int, parent: View): Boolean
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
/*suspend fun Context.loadBitmap(link: FileUrl, transforms: List<BitmapTransformation>): Bitmap? {
|
suspend fun Context.loadBitmap_old(link: FileUrl, transforms: List<BitmapTransformation>): Bitmap? {
|
||||||
return tryWithSuspend {
|
return tryWithSuspend {
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
Glide.with(this@loadBitmap)
|
Glide.with(this@loadBitmap_old)
|
||||||
.asBitmap()
|
.asBitmap()
|
||||||
.let {
|
.let {
|
||||||
if (link.url.startsWith("file://")) {
|
if (link.url.startsWith("file://")) {
|
||||||
|
@ -142,7 +142,7 @@ abstract class BaseImageAdapter(
|
||||||
.get()
|
.get()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
|
|
||||||
suspend fun Context.loadBitmap(link: FileUrl, transforms: List<BitmapTransformation>): Bitmap? {
|
suspend fun Context.loadBitmap(link: FileUrl, transforms: List<BitmapTransformation>): Bitmap? {
|
||||||
return tryWithSuspend {
|
return tryWithSuspend {
|
||||||
|
|
|
@ -45,6 +45,7 @@ import ani.dantotsu.settings.CurrentReaderSettings.DualPageModes.*
|
||||||
import ani.dantotsu.settings.CurrentReaderSettings.Layouts.*
|
import ani.dantotsu.settings.CurrentReaderSettings.Layouts.*
|
||||||
import ani.dantotsu.settings.ReaderSettings
|
import ani.dantotsu.settings.ReaderSettings
|
||||||
import ani.dantotsu.settings.UserInterfaceSettings
|
import ani.dantotsu.settings.UserInterfaceSettings
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.alexvasilkov.gestures.views.GestureFrameLayout
|
import com.alexvasilkov.gestures.views.GestureFrameLayout
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
|
@ -125,6 +126,7 @@ class MangaReaderActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityMangaReaderBinding.inflate(layoutInflater)
|
binding = ActivityMangaReaderBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import ani.dantotsu.loadImage
|
||||||
import ani.dantotsu.media.MediaDetailsViewModel
|
import ani.dantotsu.media.MediaDetailsViewModel
|
||||||
import ani.dantotsu.others.getSerialized
|
import ani.dantotsu.others.getSerialized
|
||||||
import ani.dantotsu.parsers.ShowResponse
|
import ani.dantotsu.parsers.ShowResponse
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ import ani.dantotsu.settings.CurrentReaderSettings
|
||||||
import ani.dantotsu.settings.NovelReaderSettings
|
import ani.dantotsu.settings.NovelReaderSettings
|
||||||
import ani.dantotsu.settings.UserInterfaceSettings
|
import ani.dantotsu.settings.UserInterfaceSettings
|
||||||
import ani.dantotsu.snackString
|
import ani.dantotsu.snackString
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import ani.dantotsu.tryWith
|
import ani.dantotsu.tryWith
|
||||||
import com.google.android.material.slider.Slider
|
import com.google.android.material.slider.Slider
|
||||||
import com.vipulog.ebookreader.Book
|
import com.vipulog.ebookreader.Book
|
||||||
|
@ -135,6 +136,7 @@ class NovelReaderActivity : AppCompatActivity(), EbookReaderEventListener {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityNovelReaderBinding.inflate(layoutInflater)
|
binding = ActivityNovelReaderBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import ani.dantotsu.R
|
import ani.dantotsu.R
|
||||||
import ani.dantotsu.Refresh
|
import ani.dantotsu.Refresh
|
||||||
import ani.dantotsu.databinding.ActivityListBinding
|
import ani.dantotsu.databinding.ActivityListBinding
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -26,6 +27,7 @@ class ListActivity : AppCompatActivity() {
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityListBinding.inflate(layoutInflater)
|
binding = ActivityListBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ import ani.dantotsu.databinding.FragmentListBinding
|
||||||
import ani.dantotsu.media.Media
|
import ani.dantotsu.media.Media
|
||||||
import ani.dantotsu.media.MediaAdaptor
|
import ani.dantotsu.media.MediaAdaptor
|
||||||
import ani.dantotsu.media.OtherDetailsViewModel
|
import ani.dantotsu.media.OtherDetailsViewModel
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class ListFragment : Fragment() {
|
class ListFragment : Fragment() {
|
||||||
private var _binding: FragmentListBinding? = null
|
private var _binding: FragmentListBinding? = null
|
||||||
|
|
|
@ -11,13 +11,14 @@ import ani.dantotsu.BottomSheetDialogFragment
|
||||||
import ani.dantotsu.FileUrl
|
import ani.dantotsu.FileUrl
|
||||||
import ani.dantotsu.R
|
import ani.dantotsu.R
|
||||||
import ani.dantotsu.databinding.BottomSheetImageBinding
|
import ani.dantotsu.databinding.BottomSheetImageBinding
|
||||||
import ani.dantotsu.media.manga.mangareader.BaseImageAdapter.Companion.loadBitmap
|
import ani.dantotsu.media.manga.mangareader.BaseImageAdapter.Companion.loadBitmap_old
|
||||||
import ani.dantotsu.media.manga.mangareader.BaseImageAdapter.Companion.mergeBitmap
|
import ani.dantotsu.media.manga.mangareader.BaseImageAdapter.Companion.mergeBitmap
|
||||||
import ani.dantotsu.openLinkInBrowser
|
import ani.dantotsu.openLinkInBrowser
|
||||||
import ani.dantotsu.saveImageToDownloads
|
import ani.dantotsu.saveImageToDownloads
|
||||||
import ani.dantotsu.setSafeOnClickListener
|
import ani.dantotsu.setSafeOnClickListener
|
||||||
import ani.dantotsu.shareImage
|
import ani.dantotsu.shareImage
|
||||||
import ani.dantotsu.snackString
|
import ani.dantotsu.snackString
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import ani.dantotsu.toast
|
import ani.dantotsu.toast
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
||||||
import com.davemorrissey.labs.subscaleview.ImageSource
|
import com.davemorrissey.labs.subscaleview.ImageSource
|
||||||
|
@ -76,8 +77,8 @@ class ImageViewDialog : BottomSheetDialogFragment() {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
val binding = _binding ?: return@launch
|
val binding = _binding ?: return@launch
|
||||||
|
|
||||||
var bitmap = requireContext().loadBitmap(image, trans1 ?: listOf())
|
var bitmap = requireContext().loadBitmap_old(image, trans1 ?: listOf())
|
||||||
val bitmap2 = if (image2 != null) requireContext().loadBitmap(image2, trans2 ?: listOf()) else null
|
val bitmap2 = if (image2 != null) requireContext().loadBitmap_old(image2, trans2 ?: listOf()) else null
|
||||||
|
|
||||||
bitmap = if (bitmap2 != null && bitmap != null) mergeBitmap(bitmap, bitmap2,) else bitmap
|
bitmap = if (bitmap2 != null && bitmap != null) mergeBitmap(bitmap, bitmap2,) else bitmap
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import ani.dantotsu.R
|
||||||
import ani.dantotsu.connections.anilist.Anilist
|
import ani.dantotsu.connections.anilist.Anilist
|
||||||
import ani.dantotsu.databinding.ActivityImageSearchBinding
|
import ani.dantotsu.databinding.ActivityImageSearchBinding
|
||||||
import ani.dantotsu.media.MediaDetailsActivity
|
import ani.dantotsu.media.MediaDetailsActivity
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import ani.dantotsu.toast
|
import ani.dantotsu.toast
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -46,6 +47,7 @@ class ImageSearchActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityImageSearchBinding.inflate(layoutInflater)
|
binding = ActivityImageSearchBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,10 @@ abstract class AnimeParser : BaseParser() {
|
||||||
* Returns null, if no latest episode is found.
|
* Returns null, if no latest episode is found.
|
||||||
* **/
|
* **/
|
||||||
open suspend fun getLatestEpisode(animeLink: String, extra: Map<String, String>?, sAnime: SAnime, latest: Float): Episode?{
|
open suspend fun getLatestEpisode(animeLink: String, extra: Map<String, String>?, sAnime: SAnime, latest: Float): Episode?{
|
||||||
return loadEpisodes(animeLink, extra, sAnime)
|
val episodes = loadEpisodes(animeLink, extra, sAnime)
|
||||||
|
val max = episodes
|
||||||
.maxByOrNull { it.number.toFloatOrNull()?:0f }
|
.maxByOrNull { it.number.toFloatOrNull()?:0f }
|
||||||
|
return max
|
||||||
?.takeIf { latest < (it.number.toFloatOrNull() ?: 0.001f) }
|
?.takeIf { latest < (it.number.toFloatOrNull() ?: 0.001f) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,10 @@ import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.awaitAll
|
import kotlinx.coroutines.awaitAll
|
||||||
import kotlinx.coroutines.coroutineScope
|
import kotlinx.coroutines.coroutineScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
import okhttp3.Request
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
|
@ -498,7 +501,24 @@ class VideoServerPassthrough(val videoServer: VideoServer) : VideoExtractor() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun TrackToSubtitle(track: Track, type: SubtitleType = SubtitleType.VTT): Subtitle {
|
private fun TrackToSubtitle(track: Track): Subtitle {
|
||||||
return Subtitle(track.lang, track.url, type)
|
//use Dispatchers.IO to make a HTTP request to determine the subtitle type
|
||||||
|
var type: SubtitleType? = null
|
||||||
|
runBlocking {
|
||||||
|
type = findSubtitleType(track.url)
|
||||||
|
}
|
||||||
|
return Subtitle(track.lang, track.url, type?: SubtitleType.SRT)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun findSubtitleType(url: String): SubtitleType? {
|
||||||
|
// First, try to determine the type based on the URL file extension
|
||||||
|
var type: SubtitleType? = when {
|
||||||
|
url.endsWith(".vtt", true) -> SubtitleType.VTT
|
||||||
|
url.endsWith(".ass", true) -> SubtitleType.ASS
|
||||||
|
url.endsWith(".srt", true) -> SubtitleType.SRT
|
||||||
|
else -> SubtitleType.UNKNOWN
|
||||||
|
}
|
||||||
|
|
||||||
|
return type
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@ package ani.dantotsu.parsers
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import ani.dantotsu.FileUrl
|
import ani.dantotsu.FileUrl
|
||||||
import ani.dantotsu.media.Media
|
import ani.dantotsu.media.Media
|
||||||
|
import ani.dantotsu.media.manga.MangaNameAdapter
|
||||||
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
|
@ -23,9 +24,11 @@ abstract class MangaParser : BaseParser() {
|
||||||
* Returns null, if no latest chapter is found.
|
* Returns null, if no latest chapter is found.
|
||||||
* **/
|
* **/
|
||||||
open suspend fun getLatestChapter(mangaLink: String, extra: Map<String, String>?, sManga: SManga, latest: Float): MangaChapter? {
|
open suspend fun getLatestChapter(mangaLink: String, extra: Map<String, String>?, sManga: SManga, latest: Float): MangaChapter? {
|
||||||
return loadChapters(mangaLink, extra, sManga)
|
val chapter = loadChapters(mangaLink, extra, sManga)
|
||||||
.maxByOrNull { it.number.toFloatOrNull() ?: 0f }
|
val max = chapter
|
||||||
?.takeIf { latest < (it.number.toFloatOrNull() ?: 0.001f) }
|
.maxByOrNull { MangaNameAdapter.findChapterNumber(it.number) ?: 0f }
|
||||||
|
return max
|
||||||
|
?.takeIf { latest < (MangaNameAdapter.findChapterNumber(it.number) ?: 0.001f) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,22 +36,6 @@ abstract class MangaParser : BaseParser() {
|
||||||
* **/
|
* **/
|
||||||
abstract suspend fun loadImages(chapterLink: String, sChapter: SChapter): List<MangaImage>
|
abstract suspend fun loadImages(chapterLink: String, sChapter: SChapter): List<MangaImage>
|
||||||
|
|
||||||
/*override suspend fun autoSearch(mediaObj: Media): ShowResponse? {
|
|
||||||
var response = loadSavedShowResponse(mediaObj.id)
|
|
||||||
if (response != null) {
|
|
||||||
saveShowResponse(mediaObj.id, response, true)
|
|
||||||
} else {
|
|
||||||
setUserText("Searching : ${mediaObj.mangaName()}")
|
|
||||||
response = search(mediaObj.mangaName()).let { if (it.isNotEmpty()) it[0] else null }
|
|
||||||
|
|
||||||
if (response == null) {
|
|
||||||
setUserText("Searching : ${mediaObj.nameRomaji}")
|
|
||||||
response = search(mediaObj.nameRomaji).let { if (it.isNotEmpty()) it[0] else null }
|
|
||||||
}
|
|
||||||
saveShowResponse(mediaObj.id, response)
|
|
||||||
}
|
|
||||||
return response
|
|
||||||
}*/
|
|
||||||
|
|
||||||
open fun getTransformation(): BitmapTransformation? = null
|
open fun getTransformation(): BitmapTransformation? = null
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,5 +159,5 @@ enum class VideoType{
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class SubtitleType{
|
enum class SubtitleType{
|
||||||
VTT, ASS, SRT
|
VTT, ASS, SRT, UNKNOWN
|
||||||
}
|
}
|
|
@ -23,6 +23,7 @@ import ani.dantotsu.R
|
||||||
import ani.dantotsu.databinding.FragmentAnimeExtensionsBinding
|
import ani.dantotsu.databinding.FragmentAnimeExtensionsBinding
|
||||||
import ani.dantotsu.loadData
|
import ani.dantotsu.loadData
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||||
import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager
|
import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager
|
||||||
import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension
|
import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension
|
||||||
|
@ -67,13 +68,14 @@ class AnimeExtensionsFragment : Fragment(),
|
||||||
notificationManager.notify(1, builder.build())
|
notificationManager.notify(1, builder.build())
|
||||||
},
|
},
|
||||||
{ error ->
|
{ error ->
|
||||||
|
FirebaseCrashlytics.getInstance().recordException(error)
|
||||||
Log.e("AnimeExtensionsAdapter", "Error: ", error) // Log the error
|
Log.e("AnimeExtensionsAdapter", "Error: ", error) // Log the error
|
||||||
val builder = NotificationCompat.Builder(
|
val builder = NotificationCompat.Builder(
|
||||||
context,
|
context,
|
||||||
Notifications.CHANNEL_DOWNLOADER_ERROR
|
Notifications.CHANNEL_DOWNLOADER_ERROR
|
||||||
)
|
)
|
||||||
.setSmallIcon(R.drawable.ic_round_info_24)
|
.setSmallIcon(R.drawable.ic_round_info_24)
|
||||||
.setContentTitle("Update failed")
|
.setContentTitle("Update failed: ${error.message}")
|
||||||
.setContentText("Error: ${error.message}")
|
.setContentText("Error: ${error.message}")
|
||||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||||
notificationManager.notify(1, builder.build())
|
notificationManager.notify(1, builder.build())
|
||||||
|
@ -97,48 +99,51 @@ class AnimeExtensionsFragment : Fragment(),
|
||||||
}, skipIcons)
|
}, skipIcons)
|
||||||
|
|
||||||
private val allExtensionsAdapter = AllAnimeExtensionsAdapter(lifecycleScope, { pkgName ->
|
private val allExtensionsAdapter = AllAnimeExtensionsAdapter(lifecycleScope, { pkgName ->
|
||||||
|
val context = requireContext()
|
||||||
|
if (isAdded) {
|
||||||
|
val notificationManager =
|
||||||
|
requireContext().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
|
||||||
val notificationManager =
|
// Start the installation process
|
||||||
requireContext().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
animeExtensionManager.installExtension(pkgName)
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
// Start the installation process
|
.subscribe(
|
||||||
animeExtensionManager.installExtension(pkgName)
|
{ installStep ->
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
val builder = NotificationCompat.Builder(
|
||||||
.subscribe(
|
context,
|
||||||
{ installStep ->
|
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
||||||
val builder = NotificationCompat.Builder(
|
)
|
||||||
requireContext(),
|
.setSmallIcon(R.drawable.ic_round_sync_24)
|
||||||
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
.setContentTitle("Installing extension")
|
||||||
)
|
.setContentText("Step: $installStep")
|
||||||
.setSmallIcon(R.drawable.ic_round_sync_24)
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
.setContentTitle("Installing extension")
|
notificationManager.notify(1, builder.build())
|
||||||
.setContentText("Step: $installStep")
|
},
|
||||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
{ error ->
|
||||||
notificationManager.notify(1, builder.build())
|
FirebaseCrashlytics.getInstance().recordException(error)
|
||||||
},
|
val builder = NotificationCompat.Builder(
|
||||||
{ error ->
|
context,
|
||||||
val builder = NotificationCompat.Builder(
|
Notifications.CHANNEL_DOWNLOADER_ERROR
|
||||||
requireContext(),
|
)
|
||||||
Notifications.CHANNEL_DOWNLOADER_ERROR
|
.setSmallIcon(R.drawable.ic_round_info_24)
|
||||||
)
|
.setContentTitle("Installation failed: ${error.message}")
|
||||||
.setSmallIcon(R.drawable.ic_round_info_24)
|
.setContentText("Error: ${error.message}")
|
||||||
.setContentTitle("Installation failed")
|
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||||
.setContentText("Error: ${error.message}")
|
notificationManager.notify(1, builder.build())
|
||||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
},
|
||||||
notificationManager.notify(1, builder.build())
|
{
|
||||||
},
|
val builder = NotificationCompat.Builder(
|
||||||
{
|
context,
|
||||||
val builder = NotificationCompat.Builder(
|
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
||||||
requireContext(),
|
)
|
||||||
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
.setSmallIcon(androidx.media3.ui.R.drawable.exo_ic_check)
|
||||||
)
|
.setContentTitle("Installation complete")
|
||||||
.setSmallIcon(androidx.media3.ui.R.drawable.exo_ic_check)
|
.setContentText("The extension has been successfully installed.")
|
||||||
.setContentTitle("Installation complete")
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
.setContentText("The extension has been successfully installed.")
|
notificationManager.notify(1, builder.build())
|
||||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
}
|
||||||
notificationManager.notify(1, builder.build())
|
)
|
||||||
}
|
}
|
||||||
)
|
|
||||||
}, skipIcons)
|
}, skipIcons)
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
|
|
@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.extension.anime.model.AnimeExtension
|
||||||
import ani.dantotsu.databinding.ActivityExtensionsBinding
|
import ani.dantotsu.databinding.ActivityExtensionsBinding
|
||||||
import ani.dantotsu.home.AnimeFragment
|
import ani.dantotsu.home.AnimeFragment
|
||||||
import ani.dantotsu.home.MangaFragment
|
import ani.dantotsu.home.MangaFragment
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
|
@ -60,6 +61,7 @@ class ExtensionsActivity : AppCompatActivity() {
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityExtensionsBinding.inflate(layoutInflater)
|
binding = ActivityExtensionsBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import ani.dantotsu.R
|
||||||
import ani.dantotsu.currContext
|
import ani.dantotsu.currContext
|
||||||
import ani.dantotsu.databinding.ActivityFaqBinding
|
import ani.dantotsu.databinding.ActivityFaqBinding
|
||||||
import ani.dantotsu.initActivity
|
import ani.dantotsu.initActivity
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class FAQActivity : AppCompatActivity() {
|
class FAQActivity : AppCompatActivity() {
|
||||||
private lateinit var binding: ActivityFaqBinding
|
private lateinit var binding: ActivityFaqBinding
|
||||||
|
@ -104,6 +105,7 @@ class FAQActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityFaqBinding.inflate(layoutInflater)
|
binding = ActivityFaqBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ import ani.dantotsu.databinding.FragmentMangaBinding
|
||||||
import ani.dantotsu.databinding.FragmentMangaExtensionsBinding
|
import ani.dantotsu.databinding.FragmentMangaExtensionsBinding
|
||||||
import ani.dantotsu.loadData
|
import ani.dantotsu.loadData
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||||
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
||||||
import eu.kanade.tachiyomi.extension.manga.model.MangaExtension
|
import eu.kanade.tachiyomi.extension.manga.model.MangaExtension
|
||||||
|
@ -67,6 +68,7 @@ class MangaExtensionsFragment : Fragment(),
|
||||||
notificationManager.notify(1, builder.build())
|
notificationManager.notify(1, builder.build())
|
||||||
},
|
},
|
||||||
{ error ->
|
{ error ->
|
||||||
|
FirebaseCrashlytics.getInstance().recordException(error)
|
||||||
Log.e("MangaExtensionsAdapter", "Error: ", error) // Log the error
|
Log.e("MangaExtensionsAdapter", "Error: ", error) // Log the error
|
||||||
val builder = NotificationCompat.Builder(
|
val builder = NotificationCompat.Builder(
|
||||||
context,
|
context,
|
||||||
|
@ -98,48 +100,51 @@ class MangaExtensionsFragment : Fragment(),
|
||||||
|
|
||||||
private val allExtensionsAdapter =
|
private val allExtensionsAdapter =
|
||||||
AllMangaExtensionsAdapter(lifecycleScope, { pkgName ->
|
AllMangaExtensionsAdapter(lifecycleScope, { pkgName ->
|
||||||
|
if (isAdded) { // Check if the fragment is currently added to its activity
|
||||||
|
val context = requireContext()
|
||||||
|
val notificationManager =
|
||||||
|
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
|
|
||||||
val notificationManager =
|
// Start the installation process
|
||||||
requireContext().getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
mangaExtensionManager.installExtension(pkgName)
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
// Start the installation process
|
.subscribe(
|
||||||
mangaExtensionManager.installExtension(pkgName)
|
{ installStep ->
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
val builder = NotificationCompat.Builder(
|
||||||
.subscribe(
|
context,
|
||||||
{ installStep ->
|
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
||||||
val builder = NotificationCompat.Builder(
|
)
|
||||||
requireContext(),
|
.setSmallIcon(R.drawable.ic_round_sync_24)
|
||||||
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
.setContentTitle("Installing extension")
|
||||||
)
|
.setContentText("Step: $installStep")
|
||||||
.setSmallIcon(R.drawable.ic_round_sync_24)
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
.setContentTitle("Installing extension")
|
notificationManager.notify(1, builder.build())
|
||||||
.setContentText("Step: $installStep")
|
},
|
||||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
{ error ->
|
||||||
notificationManager.notify(1, builder.build())
|
FirebaseCrashlytics.getInstance().recordException(error)
|
||||||
},
|
val builder = NotificationCompat.Builder(
|
||||||
{ error ->
|
context,
|
||||||
val builder = NotificationCompat.Builder(
|
Notifications.CHANNEL_DOWNLOADER_ERROR
|
||||||
requireContext(),
|
)
|
||||||
Notifications.CHANNEL_DOWNLOADER_ERROR
|
.setSmallIcon(R.drawable.ic_round_info_24)
|
||||||
)
|
.setContentTitle("Installation failed: ${error.message}")
|
||||||
.setSmallIcon(R.drawable.ic_round_info_24)
|
.setContentText("Error: ${error.message}")
|
||||||
.setContentTitle("Installation failed")
|
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||||
.setContentText("Error: ${error.message}")
|
notificationManager.notify(1, builder.build())
|
||||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
},
|
||||||
notificationManager.notify(1, builder.build())
|
{
|
||||||
},
|
val builder = NotificationCompat.Builder(
|
||||||
{
|
context,
|
||||||
val builder = NotificationCompat.Builder(
|
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
||||||
requireContext(),
|
)
|
||||||
Notifications.CHANNEL_DOWNLOADER_PROGRESS
|
.setSmallIcon(androidx.media3.ui.R.drawable.exo_ic_check)
|
||||||
)
|
.setContentTitle("Installation complete")
|
||||||
.setSmallIcon(androidx.media3.ui.R.drawable.exo_ic_check)
|
.setContentText("The extension has been successfully installed.")
|
||||||
.setContentTitle("Installation complete")
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
.setContentText("The extension has been successfully installed.")
|
notificationManager.notify(1, builder.build())
|
||||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
}
|
||||||
notificationManager.notify(1, builder.build())
|
)
|
||||||
}
|
}
|
||||||
)
|
|
||||||
}, skipIcons)
|
}, skipIcons)
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
|
|
|
@ -16,6 +16,7 @@ import ani.dantotsu.databinding.ActivityPlayerSettingsBinding
|
||||||
import ani.dantotsu.media.Media
|
import ani.dantotsu.media.Media
|
||||||
import ani.dantotsu.others.getSerialized
|
import ani.dantotsu.others.getSerialized
|
||||||
import ani.dantotsu.parsers.Subtitle
|
import ani.dantotsu.parsers.Subtitle
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
@ -30,6 +31,7 @@ class PlayerSettingsActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityPlayerSettingsBinding.inflate(layoutInflater)
|
binding = ActivityPlayerSettingsBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -12,12 +12,14 @@ import ani.dantotsu.navBarHeight
|
||||||
import ani.dantotsu.saveData
|
import ani.dantotsu.saveData
|
||||||
import ani.dantotsu.snackString
|
import ani.dantotsu.snackString
|
||||||
import ani.dantotsu.statusBarHeight
|
import ani.dantotsu.statusBarHeight
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
|
|
||||||
class ReaderSettingsActivity : AppCompatActivity() {
|
class ReaderSettingsActivity : AppCompatActivity() {
|
||||||
lateinit var binding: ActivityReaderSettingsBinding
|
lateinit var binding: ActivityReaderSettingsBinding
|
||||||
private val reader = "reader_settings"
|
private val reader = "reader_settings"
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityReaderSettingsBinding.inflate(layoutInflater)
|
binding = ActivityReaderSettingsBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ArrayAdapter
|
import android.widget.ArrayAdapter
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.OnBackPressedCallback
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
@ -31,6 +32,7 @@ import ani.dantotsu.subcriptions.Notifications.Companion.openSettings
|
||||||
import ani.dantotsu.subcriptions.Subscription.Companion.defaultTime
|
import ani.dantotsu.subcriptions.Subscription.Companion.defaultTime
|
||||||
import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription
|
import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription
|
||||||
import ani.dantotsu.subcriptions.Subscription.Companion.timeMinutes
|
import ani.dantotsu.subcriptions.Subscription.Companion.timeMinutes
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import eu.kanade.domain.base.BasePreferences
|
import eu.kanade.domain.base.BasePreferences
|
||||||
import eu.kanade.tachiyomi.network.NetworkPreferences
|
import eu.kanade.tachiyomi.network.NetworkPreferences
|
||||||
import io.noties.markwon.Markwon
|
import io.noties.markwon.Markwon
|
||||||
|
@ -54,6 +56,7 @@ class SettingsActivity : AppCompatActivity() {
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
@ -98,6 +101,23 @@ OS Version: $CODENAME $RELEASE ($SDK_INT)
|
||||||
binding.settingsUseMaterialYou.isChecked = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_material_you", false)
|
binding.settingsUseMaterialYou.isChecked = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_material_you", false)
|
||||||
binding.settingsUseMaterialYou.setOnCheckedChangeListener { _, isChecked ->
|
binding.settingsUseMaterialYou.setOnCheckedChangeListener { _, isChecked ->
|
||||||
getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putBoolean("use_material_you", isChecked).apply()
|
getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putBoolean("use_material_you", isChecked).apply()
|
||||||
|
Toast.makeText(this, "Restart app to apply changes", Toast.LENGTH_LONG).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
val themeString = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getString("theme", "PURPLE")!!
|
||||||
|
binding.themeSwitcher.setText(themeString.substring(0, 1) + themeString.substring(1).lowercase())
|
||||||
|
|
||||||
|
binding.themeSwitcher.setAdapter(ArrayAdapter(this, R.layout.item_dropdown, ThemeManager.Companion.Theme.values().map { it.theme.substring(0, 1) + it.theme.substring(1).lowercase() }))
|
||||||
|
|
||||||
|
binding.themeSwitcher.setOnItemClickListener { _, _, i, _ ->
|
||||||
|
getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putString("theme", ThemeManager.Companion.Theme.values()[i].theme).apply()
|
||||||
|
ActivityHelper.shouldRefreshMainActivity = true
|
||||||
|
binding.themeSwitcher.clearFocus()
|
||||||
|
Refresh.all()
|
||||||
|
finish()
|
||||||
|
startActivity(Intent(this, SettingsActivity::class.java))
|
||||||
|
initActivity(this)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//val animeSource = loadData<Int>("settings_def_anime_source_s")?.let { if (it >= AnimeSources.names.size) 0 else it } ?: 0
|
//val animeSource = loadData<Int>("settings_def_anime_source_s")?.let { if (it >= AnimeSources.names.size) 0 else it } ?: 0
|
||||||
|
@ -150,6 +170,15 @@ OS Version: $CODENAME $RELEASE ($SDK_INT)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val exDns = listOf("None", "Cloudflare", "Google", "AdGuard", "Quad9", "AliDNS", "DNSPod", "360", "Quad101", "Mullvad", "Controld", "Njalla", "Shecan")
|
||||||
|
binding.settingsExtensionDns.setText(exDns[networkPreferences.dohProvider().get()], false)
|
||||||
|
binding.settingsExtensionDns.setAdapter(ArrayAdapter(this, R.layout.item_dropdown, exDns))
|
||||||
|
binding.settingsExtensionDns.setOnItemClickListener { _, _, i, _ ->
|
||||||
|
networkPreferences.dohProvider().set(i)
|
||||||
|
binding.settingsExtensionDns.clearFocus()
|
||||||
|
Toast.makeText(this, "Restart app to apply changes", Toast.LENGTH_LONG).show()
|
||||||
|
}
|
||||||
|
|
||||||
binding.settingsDownloadInSd.isChecked = loadData("sd_dl") ?: false
|
binding.settingsDownloadInSd.isChecked = loadData("sd_dl") ?: false
|
||||||
binding.settingsDownloadInSd.setOnCheckedChangeListener { _, isChecked ->
|
binding.settingsDownloadInSd.setOnCheckedChangeListener { _, isChecked ->
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
|
@ -381,7 +410,7 @@ OS Version: $CODENAME $RELEASE ($SDK_INT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var curTime = loadData<Int>("subscriptions_time") ?: defaultTime
|
var curTime = loadData<Int>("subscriptions_time_r") ?: defaultTime
|
||||||
val timeNames = timeMinutes.map {
|
val timeNames = timeMinutes.map {
|
||||||
val mins = it % 60
|
val mins = it % 60
|
||||||
val hours = it / 60
|
val hours = it / 60
|
||||||
|
@ -394,7 +423,7 @@ OS Version: $CODENAME $RELEASE ($SDK_INT)
|
||||||
speedDialog.setSingleChoiceItems(timeNames, curTime) { dialog, i ->
|
speedDialog.setSingleChoiceItems(timeNames, curTime) { dialog, i ->
|
||||||
curTime = i
|
curTime = i
|
||||||
binding.settingsSubscriptionsTime.text = getString(R.string.subscriptions_checking_time_s, timeNames[i])
|
binding.settingsSubscriptionsTime.text = getString(R.string.subscriptions_checking_time_s, timeNames[i])
|
||||||
saveData("subscriptions_time", curTime)
|
saveData("subscriptions_time_r", curTime)
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
startSubscription(true)
|
startSubscription(true)
|
||||||
}.show()
|
}.show()
|
||||||
|
@ -538,7 +567,7 @@ OS Version: $CODENAME $RELEASE ($SDK_INT)
|
||||||
title = "Enjoying the App?"
|
title = "Enjoying the App?"
|
||||||
addView(TextView(this@SettingsActivity).apply {
|
addView(TextView(this@SettingsActivity).apply {
|
||||||
text =
|
text =
|
||||||
"Consider donating!r"
|
"Consider donating!"
|
||||||
})
|
})
|
||||||
|
|
||||||
setNegativeButton("no moners :(") {
|
setNegativeButton("no moners :(") {
|
||||||
|
|
|
@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import ani.dantotsu.*
|
import ani.dantotsu.*
|
||||||
import ani.dantotsu.databinding.ActivityUserInterfaceSettingsBinding
|
import ani.dantotsu.databinding.ActivityUserInterfaceSettingsBinding
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
|
||||||
class UserInterfaceSettingsActivity : AppCompatActivity() {
|
class UserInterfaceSettingsActivity : AppCompatActivity() {
|
||||||
|
@ -15,6 +16,7 @@ class UserInterfaceSettingsActivity : AppCompatActivity() {
|
||||||
private val ui = "ui_settings"
|
private val ui = "ui_settings"
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
binding = ActivityUserInterfaceSettingsBinding.inflate(layoutInflater)
|
binding = ActivityUserInterfaceSettingsBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ class AlarmReceiver : BroadcastReceiver() {
|
||||||
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
|
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
|
||||||
)
|
)
|
||||||
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||||
val curTime = loadData<Int>("subscriptions_time", context) ?: defaultTime
|
val curTime = loadData<Int>("subscriptions_time_r", context) ?: defaultTime
|
||||||
|
|
||||||
if (timeMinutes[curTime] > 0)
|
if (timeMinutes[curTime] > 0)
|
||||||
alarmManager.setRepeating(
|
alarmManager.setRepeating(
|
||||||
|
|
|
@ -16,8 +16,8 @@ import kotlinx.coroutines.launch
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
class Subscription {
|
class Subscription {
|
||||||
companion object {
|
companion object {
|
||||||
const val defaultTime = 8
|
const val defaultTime = 3
|
||||||
val timeMinutes = arrayOf(0L, 5, 10, 15, 30, 45, 60, 90, 120, 180, 240, 360, 480, 720, 1440)
|
val timeMinutes = arrayOf(0L, 120, 180, 240, 360, 480, 720, 1440)
|
||||||
|
|
||||||
private var alreadyStarted = false
|
private var alreadyStarted = false
|
||||||
fun Context.startSubscription(force: Boolean = false) {
|
fun Context.startSubscription(force: Boolean = false) {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import ani.dantotsu.parsers.*
|
||||||
import ani.dantotsu.saveData
|
import ani.dantotsu.saveData
|
||||||
import ani.dantotsu.tryWithSuspend
|
import ani.dantotsu.tryWithSuspend
|
||||||
import ani.dantotsu.R
|
import ani.dantotsu.R
|
||||||
|
import ani.dantotsu.media.manga.MangaNameAdapter
|
||||||
import kotlinx.coroutines.withTimeoutOrNull
|
import kotlinx.coroutines.withTimeoutOrNull
|
||||||
|
|
||||||
class SubscriptionHelper {
|
class SubscriptionHelper {
|
||||||
|
@ -76,7 +77,7 @@ class SubscriptionHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
return chp?.apply {
|
return chp?.apply {
|
||||||
selected.latest = number.toFloat()
|
selected.latest = MangaNameAdapter.findChapterNumber(number) ?: 0f
|
||||||
saveSelected(context, id, selected)
|
saveSelected(context, id, selected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ class SubscriptionWorker(val context: Context, params: WorkerParameters) : Corou
|
||||||
|
|
||||||
private const val SUBSCRIPTION_WORK_NAME = "work_subscription"
|
private const val SUBSCRIPTION_WORK_NAME = "work_subscription"
|
||||||
fun enqueue(context: Context) {
|
fun enqueue(context: Context) {
|
||||||
val curTime = loadData<Int>("subscriptions_time") ?: defaultTime
|
val curTime = loadData<Int>("subscriptions_time_r") ?: defaultTime
|
||||||
if(timeMinutes[curTime]>0L) {
|
if(timeMinutes[curTime]>0L) {
|
||||||
val constraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
|
val constraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
|
||||||
val periodicSyncDataWork = PeriodicWorkRequest.Builder(
|
val periodicSyncDataWork = PeriodicWorkRequest.Builder(
|
||||||
|
|
48
app/src/main/java/ani/dantotsu/themes/ThemeManager.kt
Normal file
48
app/src/main/java/ani/dantotsu/themes/ThemeManager.kt
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package ani.dantotsu.themes
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import ani.dantotsu.R
|
||||||
|
|
||||||
|
class ThemeManager(private val context: Context) {
|
||||||
|
fun applyTheme() {
|
||||||
|
if(context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_material_you", false)){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
when (context.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getString("theme", "PURPLE")!!) {
|
||||||
|
"PURPLE" -> {
|
||||||
|
context.setTheme(R.style.Theme_Dantotsu_Purple)
|
||||||
|
}
|
||||||
|
//"MONOCHROME" -> {
|
||||||
|
// context.setTheme(R.style.Theme_Dantotsu_Monochrome)
|
||||||
|
//}
|
||||||
|
"BLUE" -> {
|
||||||
|
context.setTheme(R.style.Theme_Dantotsu_Blue)
|
||||||
|
}
|
||||||
|
"GREEN" -> {
|
||||||
|
context.setTheme(R.style.Theme_Dantotsu_Green)
|
||||||
|
}
|
||||||
|
"PINK" -> {
|
||||||
|
context.setTheme(R.style.Theme_Dantotsu_Pink)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
context.setTheme(R.style.Theme_Dantotsu_Purple)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object{
|
||||||
|
enum class Theme(val theme: String) {
|
||||||
|
PURPLE("PURPLE"),
|
||||||
|
BLUE("BLUE"),
|
||||||
|
GREEN("GREEN"),
|
||||||
|
PINK("PINK");
|
||||||
|
//MONOCHROME("MONOCHROME");
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun fromString(value: String): Theme {
|
||||||
|
return values().find { it.theme == value } ?: PURPLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,9 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import rx.subjects.Subject
|
import rx.subjects.Subject
|
||||||
|
import java.io.IOException
|
||||||
|
import java.io.ObjectInputStream
|
||||||
|
import java.io.ObjectOutputStream
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
data class Track(val url: String, val lang: String)
|
data class Track(val url: String, val lang: String)
|
||||||
|
@ -14,12 +17,15 @@ open class Video(
|
||||||
val url: String = "",
|
val url: String = "",
|
||||||
val quality: String = "",
|
val quality: String = "",
|
||||||
var videoUrl: String? = null,
|
var videoUrl: String? = null,
|
||||||
val headers: Headers? = null,
|
headers: Headers? = null,
|
||||||
// "url", "language-label-2", "url2", "language-label-2"
|
// "url", "language-label-2", "url2", "language-label-2"
|
||||||
val subtitleTracks: List<Track> = emptyList(),
|
val subtitleTracks: List<Track> = emptyList(),
|
||||||
val audioTracks: List<Track> = emptyList(),
|
val audioTracks: List<Track> = emptyList(),
|
||||||
) : Serializable, ProgressListener {
|
) : Serializable, ProgressListener {
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
var headers: Headers? = headers
|
||||||
|
|
||||||
@Suppress("UNUSED_PARAMETER")
|
@Suppress("UNUSED_PARAMETER")
|
||||||
constructor(
|
constructor(
|
||||||
url: String,
|
url: String,
|
||||||
|
@ -90,4 +96,27 @@ open class Video(
|
||||||
READY,
|
READY,
|
||||||
ERROR,
|
ERROR,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Throws(IOException::class)
|
||||||
|
private fun writeObject(out: ObjectOutputStream) {
|
||||||
|
out.defaultWriteObject()
|
||||||
|
val headersMap: Map<String, List<String>> = headers?.toMultimap() ?: emptyMap()
|
||||||
|
out.writeObject(headersMap)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Throws(IOException::class, ClassNotFoundException::class)
|
||||||
|
private fun readObject(input: ObjectInputStream) {
|
||||||
|
input.defaultReadObject()
|
||||||
|
val headersMap = input.readObject() as? Map<String, List<String>>
|
||||||
|
headers = headersMap?.let { map ->
|
||||||
|
val builder = Headers.Builder()
|
||||||
|
for ((key, values) in map) {
|
||||||
|
for (value in values) {
|
||||||
|
builder.add(key, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
builder.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.extension.anime.util
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import eu.kanade.tachiyomi.extension.InstallStep
|
import eu.kanade.tachiyomi.extension.InstallStep
|
||||||
import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager
|
import eu.kanade.tachiyomi.extension.anime.AnimeExtensionManager
|
||||||
import eu.kanade.tachiyomi.util.system.hasMiuiPackageInstaller
|
import eu.kanade.tachiyomi.util.system.hasMiuiPackageInstaller
|
||||||
|
@ -24,6 +25,7 @@ class AnimeExtensionInstallActivity : Activity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
|
|
||||||
val installIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
|
val installIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
|
||||||
.setDataAndType(intent.data, intent.type)
|
.setDataAndType(intent.data, intent.type)
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.extension.manga.util
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import ani.dantotsu.themes.ThemeManager
|
||||||
import eu.kanade.tachiyomi.extension.InstallStep
|
import eu.kanade.tachiyomi.extension.InstallStep
|
||||||
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
import eu.kanade.tachiyomi.extension.manga.MangaExtensionManager
|
||||||
import eu.kanade.tachiyomi.util.system.hasMiuiPackageInstaller
|
import eu.kanade.tachiyomi.util.system.hasMiuiPackageInstaller
|
||||||
|
@ -24,6 +25,7 @@ class MangaExtensionInstallActivity : Activity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
ThemeManager(this).applyTheme()
|
||||||
|
|
||||||
val installIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
|
val installIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
|
||||||
.setDataAndType(intent.data, intent.type)
|
.setDataAndType(intent.data, intent.type)
|
||||||
|
|
|
@ -13,7 +13,7 @@ class NetworkPreferences(
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dohProvider(): Preference<Int> {
|
fun dohProvider(): Preference<Int> {
|
||||||
return preferenceStore.getInt("doh_provider", 1)
|
return preferenceStore.getInt("doh_provider", 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun defaultUserAgent(): Preference<String> {
|
fun defaultUserAgent(): Preference<String> {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:color="@color/bg_opp" android:state_checked="false"/>
|
<item android:color="?attr/colorOnBackground" android:state_checked="false"/>
|
||||||
<item android:color="?attr/colorSecondary" android:state_checked="true"/>
|
<item android:color="?attr/colorPrimaryContainer" android:state_checked="true"/>
|
||||||
</selector>
|
</selector>
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:state_selected="true" android:color="@color/bg_black"/>
|
<item android:state_selected="true" android:color="?attr/colorPrimary"/>
|
||||||
<item android:color="@color/nav_tab"/>
|
<item android:color="?attr/colorSecondary"/>
|
||||||
</selector>
|
</selector>
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:state_selected="true" android:color="@color/bg_opp"/>
|
<item android:state_selected="true" android:color="?attr/colorOnPrimary"/>
|
||||||
<item android:color="@color/nav_tab"/>
|
<item android:color="?attr/colorOnSecondary"/>
|
||||||
</selector>
|
</selector>
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<!-- Color when the TextInputLayout is focused -->
|
||||||
|
<item android:color="?attr/colorPrimary" android:state_focused="true"/>
|
||||||
|
<!-- Color when the TextInputLayout is not focused (unselected) -->
|
||||||
|
<item android:color="?attr/colorPrimaryContainer"/>
|
||||||
|
</selector>
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<solid android:color="@color/nav_bg"/>
|
<solid android:color="?attr/colorPrimaryContainer"/>
|
||||||
<corners android:radius="40dp"/>
|
<corners android:radius="40dp"/>
|
||||||
</shape>
|
</shape>
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:color="@color/pink_500_25"
|
android:color="?attr/colorSecondaryContainer"
|
||||||
android:radius="20dp" />
|
android:radius="20dp" />
|
|
@ -3,6 +3,6 @@
|
||||||
<gradient
|
<gradient
|
||||||
android:type="linear"
|
android:type="linear"
|
||||||
android:angle="90"
|
android:angle="90"
|
||||||
android:startColor="@color/bg"
|
android:startColor="?android:colorBackground"
|
||||||
android:endColor="@color/nav_bg_inv" />
|
android:endColor="@color/nav_bg_inv" />
|
||||||
</shape>
|
</shape>
|
|
@ -10,7 +10,7 @@
|
||||||
android:id="@+id/mediaTab"
|
android:id="@+id/mediaTab"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorPrimaryContainer"
|
||||||
android:translationZ="0dp"
|
android:translationZ="0dp"
|
||||||
app:itemPaddingTop="32dp"
|
app:itemPaddingTop="32dp"
|
||||||
app:menuGravity="center"
|
app:menuGravity="center"
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
android:id="@+id/mediaAppBar"
|
android:id="@+id/mediaAppBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:translationZ="5dp">
|
android:translationZ="5dp">
|
||||||
|
|
||||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fitsSystemWindows="false"
|
android:fitsSystemWindows="false"
|
||||||
app:contentScrim="@color/nav_bg"
|
app:contentScrim="?android:colorBackground"
|
||||||
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
||||||
|
|
||||||
<com.flaviofaria.kenburnsview.KenBurnsView
|
<com.flaviofaria.kenburnsview.KenBurnsView
|
||||||
|
@ -104,6 +104,7 @@
|
||||||
android:singleLine="false"
|
android:singleLine="false"
|
||||||
android:text="@string/slogan"
|
android:text="@string/slogan"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
android:textColor="?attr/colorOnBackground"
|
||||||
android:transitionName="mediaTitle" />
|
android:transitionName="mediaTitle" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -137,7 +138,7 @@
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:text="@string/add"
|
android:text="@string/add"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
android:textColor="?attr/colorSecondary"
|
android:textColor="?attr/colorPrimary"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
|
@ -171,7 +172,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorOnBackground"
|
||||||
android:ellipsize="marquee"
|
android:ellipsize="marquee"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:focusableInTouchMode="true"
|
android:focusableInTouchMode="true"
|
||||||
|
@ -206,7 +207,7 @@
|
||||||
android:lineSpacingExtra="-8sp"
|
android:lineSpacingExtra="-8sp"
|
||||||
android:marqueeRepeatLimit="marquee_forever"
|
android:marqueeRepeatLimit="marquee_forever"
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textColor="@color/fg"
|
android:textColor="?attr/colorOnBackground"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
tools:text="Watched 10 out of 10" />
|
tools:text="Watched 10 out of 10" />
|
||||||
|
|
||||||
|
@ -218,7 +219,7 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:tintMode="src_atop"
|
android:tintMode="src_atop"
|
||||||
app:srcCompat="@drawable/ic_round_favorite_border_24"
|
app:srcCompat="@drawable/ic_round_favorite_border_24"
|
||||||
app:tint="@color/nav_tab"
|
app:tint="?attr/colorSecondary"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -228,7 +229,7 @@
|
||||||
android:layout_marginStart="-8dp"
|
android:layout_marginStart="-8dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
app:srcCompat="@drawable/ic_round_share_24"
|
app:srcCompat="@drawable/ic_round_share_24"
|
||||||
app:tint="@color/nav_tab"
|
app:tint="?attr/colorSecondary"
|
||||||
app:tintMode="src_atop"
|
app:tintMode="src_atop"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
|
@ -281,7 +282,7 @@
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:translationZ="7dp"
|
android:translationZ="7dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.utils.widget.ImageFilterView
|
<androidx.constraintlayout.utils.widget.ImageFilterView
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorSecondary"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -21,6 +21,7 @@
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
|
android:textColor="?attr/colorOnSecondary"
|
||||||
tools:text="@string/name" />
|
tools:text="@string/name" />
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:translationZ="2dp"
|
android:translationZ="2dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?attr/colorSecondary"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.utils.widget.ImageFilterView
|
<androidx.constraintlayout.utils.widget.ImageFilterView
|
||||||
|
|
|
@ -9,14 +9,14 @@
|
||||||
android:id="@+id/characterAppBar"
|
android:id="@+id/characterAppBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/bg">
|
app:contentScrim="?android:colorBackground">
|
||||||
|
|
||||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||||
android:id="@+id/characterCollapsing"
|
android:id="@+id/characterCollapsing"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fitsSystemWindows="false"
|
android:fitsSystemWindows="false"
|
||||||
app:contentScrim="@color/nav_bg"
|
app:contentScrim="?android:colorBackground"
|
||||||
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
||||||
|
|
||||||
<com.flaviofaria.kenburnsview.KenBurnsView
|
<com.flaviofaria.kenburnsview.KenBurnsView
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:translationZ="2dp"
|
android:translationZ="2dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.utils.widget.ImageFilterView
|
<androidx.constraintlayout.utils.widget.ImageFilterView
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
android:background="@color/nav_bg_inv"
|
android:background="@color/nav_bg_inv"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
android:text="@string/faq"
|
android:text="@string/faq"
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:drawableTint="@color/bg_opp"
|
app:drawableTint="?attr/colorOnBackground"
|
||||||
app:drawableStartCompat="@drawable/ic_round_arrow_back_ios_new_24" />
|
app:drawableStartCompat="@drawable/ic_round_arrow_back_ios_new_24" />
|
||||||
|
|
||||||
<ani.dantotsu.FadingEdgeRecyclerView
|
<ani.dantotsu.FadingEdgeRecyclerView
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
android:paddingEnd="16dp"
|
android:paddingEnd="16dp"
|
||||||
android:text="@string/search_by_image"
|
android:text="@string/search_by_image"
|
||||||
app:drawableStartCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:drawableStartCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:drawableTint="@color/bg_opp" />
|
app:drawableTint="?attr/colorOnBackground" />
|
||||||
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
@ -47,10 +47,10 @@
|
||||||
android:elegantTextHeight="true"
|
android:elegantTextHeight="true"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/upload_image"
|
android:text="@string/upload_image"
|
||||||
android:textColor="@color/button_icon"
|
android:textColor="?attr/colorOnPrimary"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
app:icon="@drawable/ic_round_image_search_24"
|
app:icon="@drawable/ic_round_image_search_24"
|
||||||
app:iconTint="@color/button_icon" />
|
app:iconTint="?attr/colorOnPrimary"/>
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/progressBar"
|
android:id="@+id/progressBar"
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorPrimaryContainer"
|
||||||
android:theme="@style/Theme.Dantotsu.AppBarOverlay">
|
android:theme="@style/Theme.Dantotsu.AppBarOverlay">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -34,6 +34,7 @@
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
|
android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
android:textColor="?attr/colorOnPrimaryContainer"
|
||||||
tools:text="@string/app_name" />
|
tools:text="@string/app_name" />
|
||||||
|
|
||||||
<Space
|
<Space
|
||||||
|
@ -49,7 +50,7 @@
|
||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:contentDescription="@string/sort_by"
|
android:contentDescription="@string/sort_by"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
app:srcCompat="@drawable/ic_round_sort_24" />
|
app:srcCompat="@drawable/ic_round_sort_24" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -58,7 +59,7 @@
|
||||||
android:id="@+id/listTabLayout"
|
android:id="@+id/listTabLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorPrimaryContainer"
|
||||||
app:tabContentStart="32dp"
|
app:tabContentStart="32dp"
|
||||||
app:tabMode="scrollable"
|
app:tabMode="scrollable"
|
||||||
app:tabPaddingEnd="16dp"
|
app:tabPaddingEnd="16dp"
|
||||||
|
|
|
@ -41,13 +41,12 @@
|
||||||
app:abb_animationDuration="300"
|
app:abb_animationDuration="300"
|
||||||
app:abb_animationInterpolator="@anim/over_shoot"
|
app:abb_animationInterpolator="@anim/over_shoot"
|
||||||
app:abb_badgeBackgroundColor="#F44336"
|
app:abb_badgeBackgroundColor="#F44336"
|
||||||
|
|
||||||
app:abb_indicatorColor="?attr/colorSecondary"
|
app:abb_indicatorColor="?attr/colorSecondary"
|
||||||
app:abb_indicatorLocation="bottom"
|
app:abb_indicatorLocation="bottom"
|
||||||
app:abb_indicatorMargin="28dp"
|
app:abb_indicatorMargin="28dp"
|
||||||
app:abb_selectedTabType="text"
|
app:abb_selectedTabType="text"
|
||||||
app:abb_tabColor="@color/nav_tab"
|
app:abb_tabColor="?attr/colorSecondary"
|
||||||
app:abb_tabColorDisabled="@color/nav_tab_disabled"
|
app:abb_tabColorDisabled="?attr/colorSecondaryContainer"
|
||||||
app:abb_tabColorSelected="?attr/colorPrimary"
|
app:abb_tabColorSelected="?attr/colorPrimary"
|
||||||
app:abb_tabs="@menu/bottom_navbar_menu"
|
app:abb_tabs="@menu/bottom_navbar_menu"
|
||||||
app:abb_textAppearance="@style/NavBarText"
|
app:abb_textAppearance="@style/NavBarText"
|
||||||
|
|
|
@ -70,7 +70,7 @@
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/bg_white"
|
android:textColor="?android:colorBackground"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/bg_white"
|
android:textColor="?android:colorBackground"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/bg_white"
|
android:textColor="?android:colorBackground"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/app_name"
|
android:text="@string/app_name"
|
||||||
android:textColor="@color/bg_white"
|
android:textColor="?android:colorBackground"
|
||||||
android:textSize="16sp" />
|
android:textSize="16sp" />
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@
|
||||||
android:layout_marginEnd="48dp"
|
android:layout_marginEnd="48dp"
|
||||||
android:fontFamily="@font/poppins"
|
android:fontFamily="@font/poppins"
|
||||||
android:singleLine="false"
|
android:singleLine="false"
|
||||||
android:textColor="@color/bg_white"
|
android:textColor="?android:colorBackground"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
tools:ignore="TextContrastCheck"
|
tools:ignore="TextContrastCheck"
|
||||||
tools:text="@string/popular_anime" />
|
tools:text="@string/popular_anime" />
|
||||||
|
@ -357,7 +357,7 @@
|
||||||
app:labelStyle="@style/fontTooltip"
|
app:labelStyle="@style/fontTooltip"
|
||||||
app:thumbRadius="8dp"
|
app:thumbRadius="8dp"
|
||||||
app:tickColor="#0000"
|
app:tickColor="#0000"
|
||||||
app:trackColorInactive="@color/bg_white"
|
app:trackColorInactive="?android:colorBackground"
|
||||||
app:trackHeight="2dp" />
|
app:trackHeight="2dp" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
android:id="@+id/mediaAppBar"
|
android:id="@+id/mediaAppBar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:translationZ="5dp">
|
android:translationZ="5dp">
|
||||||
|
|
||||||
<com.google.android.material.appbar.CollapsingToolbarLayout
|
<com.google.android.material.appbar.CollapsingToolbarLayout
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fitsSystemWindows="false"
|
android:fitsSystemWindows="false"
|
||||||
app:contentScrim="@color/nav_bg"
|
app:contentScrim="?android:colorBackground"
|
||||||
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
|
||||||
|
|
||||||
<com.flaviofaria.kenburnsview.KenBurnsView
|
<com.flaviofaria.kenburnsview.KenBurnsView
|
||||||
|
@ -85,6 +85,7 @@
|
||||||
android:singleLine="false"
|
android:singleLine="false"
|
||||||
android:text="@string/slogan"
|
android:text="@string/slogan"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
android:textColor="?attr/colorOnBackground"
|
||||||
android:transitionName="mediaTitle" />
|
android:transitionName="mediaTitle" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -121,7 +122,7 @@
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:text="@string/add"
|
android:text="@string/add"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
android:textColor="?attr/colorSecondary"
|
android:textColor="?attr/colorPrimary"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
|
@ -153,7 +154,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:background="@color/nav_bg"
|
app:contentScrim="?android:colorBackground"
|
||||||
android:ellipsize="marquee"
|
android:ellipsize="marquee"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:focusableInTouchMode="true"
|
android:focusableInTouchMode="true"
|
||||||
|
@ -188,7 +189,7 @@
|
||||||
android:lineSpacingExtra="-8sp"
|
android:lineSpacingExtra="-8sp"
|
||||||
android:marqueeRepeatLimit="marquee_forever"
|
android:marqueeRepeatLimit="marquee_forever"
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textColor="@color/fg"
|
android:textColor="?attr/colorOnBackground"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
tools:text="Watched 10 out of 10" />
|
tools:text="Watched 10 out of 10" />
|
||||||
|
|
||||||
|
@ -200,7 +201,7 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:tintMode="src_atop"
|
android:tintMode="src_atop"
|
||||||
app:srcCompat="@drawable/ic_round_favorite_border_24"
|
app:srcCompat="@drawable/ic_round_favorite_border_24"
|
||||||
app:tint="@color/nav_tab"
|
app:tint="?attr/colorSecondary"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -210,7 +211,7 @@
|
||||||
android:layout_marginStart="-8dp"
|
android:layout_marginStart="-8dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
app:srcCompat="@drawable/ic_round_share_24"
|
app:srcCompat="@drawable/ic_round_share_24"
|
||||||
app:tint="@color/nav_tab"
|
app:tint="?attr/colorSecondary"
|
||||||
app:tintMode="src_atop"
|
app:tintMode="src_atop"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
|
@ -241,14 +242,14 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="0dp"
|
android:padding="0dp"
|
||||||
android:layout_gravity="bottom"
|
android:layout_gravity="bottom"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorPrimaryContainer"
|
||||||
android:translationZ="1dp"
|
android:translationZ="1dp"
|
||||||
app:itemActiveIndicatorStyle="@style/BottomNavBar"
|
app:itemActiveIndicatorStyle="@style/BottomNavBar"
|
||||||
app:itemIconTint="@color/tab_layout_icon"
|
app:itemIconTint="@color/tab_layout_icon"
|
||||||
app:itemRippleColor="?attr/colorSecondary"
|
app:itemRippleColor="?attr/colorSecondary"
|
||||||
app:itemTextAppearanceActive="@style/NavBarText"
|
app:itemTextAppearanceActive="@style/NavBarText"
|
||||||
app:itemTextAppearanceInactive="@style/NavBarText"
|
app:itemTextAppearanceInactive="@style/NavBarText"
|
||||||
app:itemTextColor="@color/tab_layout_text"
|
app:itemTextColor="?attr/colorOnPrimaryContainer"
|
||||||
app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior" />
|
app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior" />
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/poppins_thin"
|
android:fontFamily="@font/poppins_thin"
|
||||||
android:text="@string/sad"
|
android:text="@string/sad"
|
||||||
android:textColor="@color/pink_500"
|
android:textColor="?attr/colorPrimary"
|
||||||
android:textSize="64sp"
|
android:textSize="64sp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
@ -38,6 +38,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/no_internet"
|
android:text="@string/no_internet"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/noInternetSad" />
|
app:layout_constraintTop_toBottomOf="@+id/noInternetSad" />
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
android:background="@color/nav_bg_inv"
|
android:background="@color/nav_bg_inv"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/video_info"
|
android:text="@string/video_info"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
app:thumbTint="@color/button_switch_track">
|
app:thumbTint="@color/button_switch_track">
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
android:background="@color/nav_bg_inv"
|
android:background="@color/nav_bg_inv"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/source_info"
|
android:text="@string/source_info"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
app:thumbTint="@color/button_switch_track">
|
app:thumbTint="@color/button_switch_track">
|
||||||
|
@ -122,7 +122,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/show_system_bars"
|
android:text="@string/show_system_bars"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/auto_detect_webtoon"
|
android:text="@string/auto_detect_webtoon"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -231,7 +231,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_amp_stories_24"
|
android:src="@drawable/ic_round_amp_stories_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_array_24"
|
android:src="@drawable/ic_round_view_array_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_column_24"
|
android:src="@drawable/ic_round_view_column_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:rotation="0"
|
android:rotation="0"
|
||||||
android:src="@drawable/ic_round_swipe_up_alt_24"
|
android:src="@drawable/ic_round_swipe_up_alt_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -374,7 +374,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_close_24"
|
android:src="@drawable/ic_round_close_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -392,7 +392,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_screen_rotation_24"
|
android:src="@drawable/ic_round_screen_rotation_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -410,7 +410,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_menu_book_24"
|
android:src="@drawable/ic_round_menu_book_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -442,7 +442,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/over_scroll"
|
android:text="@string/over_scroll"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -462,7 +462,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/true_colors"
|
android:text="@string/true_colors"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -494,7 +494,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/image_rotation"
|
android:text="@string/image_rotation"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -514,7 +514,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/crop_borders"
|
android:text="@string/crop_borders"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -535,7 +535,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/spaced_pages"
|
android:text="@string/spaced_pages"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -555,7 +555,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/hide_page_numbers"
|
android:text="@string/hide_page_numbers"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -575,7 +575,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/horizontal_scroll_bar"
|
android:text="@string/horizontal_scroll_bar"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -596,7 +596,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/keep_screen_on"
|
android:text="@string/keep_screen_on"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -616,7 +616,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/volume_buttons"
|
android:text="@string/volume_buttons"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -636,7 +636,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/wrap_images"
|
android:text="@string/wrap_images"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -668,7 +668,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/image_long_clicking"
|
android:text="@string/image_long_clicking"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -703,7 +703,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/ask_update_progress_manga"
|
android:text="@string/ask_update_progress_manga"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -738,7 +738,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/ask_update_progress_doujin"
|
android:text="@string/ask_update_progress_doujin"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
android:background="@color/nav_bg_inv"
|
android:background="@color/nav_bg_inv"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_brightness_high_24"
|
android:src="@drawable/ic_round_brightness_high_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_brightness_4_24"
|
android:src="@drawable/ic_round_brightness_4_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_brightness_auto_24"
|
android:src="@drawable/ic_round_brightness_auto_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -172,11 +172,45 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/use_material_you"
|
android:text="@string/use_material_you"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
app:thumbTint="@color/button_switch_track" />
|
app:thumbTint="@color/button_switch_track" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:alpha="0.58"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:text="@string/theme_" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:boxCornerRadiusBottomEnd="8dp"
|
||||||
|
app:boxCornerRadiusBottomStart="8dp"
|
||||||
|
app:boxCornerRadiusTopEnd="8dp"
|
||||||
|
app:boxCornerRadiusTopStart="8dp"
|
||||||
|
app:hintAnimationEnabled="true"
|
||||||
|
app:startIconDrawable="@drawable/ic_round_source_24">
|
||||||
|
|
||||||
|
<AutoCompleteTextView
|
||||||
|
android:id="@+id/themeSwitcher"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:freezesText="false"
|
||||||
|
android:inputType="none"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/watch"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
android:textSize="14sp"
|
||||||
|
tools:ignore="LabelFor,TextContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</ani.dantotsu.others.Xpandable>
|
</ani.dantotsu.others.Xpandable>
|
||||||
|
|
||||||
<ani.dantotsu.others.Xpandable
|
<ani.dantotsu.others.Xpandable
|
||||||
|
@ -236,7 +270,7 @@
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
android:text="@string/logout"
|
android:text="@string/logout"
|
||||||
android:textColor="?attr/colorSecondaryVariant"
|
android:textColor="?attr/colorSecondary"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -312,7 +346,7 @@
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
android:text="@string/logout"
|
android:text="@string/logout"
|
||||||
android:textColor="?attr/colorSecondaryVariant"
|
android:textColor="?attr/colorSecondary"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -348,7 +382,7 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:src="@drawable/ic_discord"
|
android:src="@drawable/ic_discord"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -380,7 +414,7 @@
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
android:text="@string/logout"
|
android:text="@string/logout"
|
||||||
android:textColor="?attr/colorSecondaryVariant"
|
android:textColor="?attr/colorSecondary"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -411,7 +445,7 @@
|
||||||
android:layout_height="64dp"
|
android:layout_height="64dp"
|
||||||
android:layout_marginStart="-32dp"
|
android:layout_marginStart="-32dp"
|
||||||
android:layout_marginEnd="-32dp"
|
android:layout_marginEnd="-32dp"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:drawablePadding="16dp"
|
android:drawablePadding="16dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
|
@ -421,7 +455,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/account_help"
|
android:text="@string/account_help"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableStartCompat="@drawable/ic_round_help_24"
|
app:drawableStartCompat="@drawable/ic_round_help_24"
|
||||||
app:drawableTint="?attr/colorPrimary" />
|
app:drawableTint="?attr/colorPrimary" />
|
||||||
|
@ -456,7 +490,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/force_legacy_installer"
|
android:text="@string/force_legacy_installer"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -474,7 +508,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/skip_loading_extension_icons"
|
android:text="@string/skip_loading_extension_icons"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -499,6 +533,40 @@
|
||||||
|
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:alpha="0.58"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:text="@string/extension_specific_dns" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:boxCornerRadiusBottomEnd="8dp"
|
||||||
|
app:boxCornerRadiusBottomStart="8dp"
|
||||||
|
app:boxCornerRadiusTopEnd="8dp"
|
||||||
|
app:boxCornerRadiusTopStart="8dp"
|
||||||
|
app:hintAnimationEnabled="true"
|
||||||
|
app:startIconDrawable="@drawable/ic_round_dns_24">
|
||||||
|
|
||||||
|
<AutoCompleteTextView
|
||||||
|
android:id="@+id/settingsExtensionDns"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:freezesText="false"
|
||||||
|
android:inputType="none"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:text="@string/none"
|
||||||
|
android:textAllCaps="true"
|
||||||
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
android:textSize="14sp"
|
||||||
|
tools:ignore="LabelFor,TextContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
|
||||||
</ani.dantotsu.others.Xpandable>
|
</ani.dantotsu.others.Xpandable>
|
||||||
|
|
||||||
|
@ -547,7 +615,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_movie_filter_24"
|
android:src="@drawable/ic_round_movie_filter_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -566,7 +634,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_home_24"
|
android:src="@drawable/ic_round_home_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -584,7 +652,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_import_contacts_24"
|
android:src="@drawable/ic_round_import_contacts_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -613,7 +681,7 @@
|
||||||
android:text="@string/ui_settings"
|
android:text="@string/ui_settings"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_auto_awesome_24"
|
app:icon="@drawable/ic_round_auto_awesome_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -687,7 +755,7 @@
|
||||||
android:text="@string/download_manager_select"
|
android:text="@string/download_manager_select"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_download_24"
|
app:icon="@drawable/ic_round_download_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -705,7 +773,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/downloadInSd"
|
android:text="@string/downloadInSd"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -723,7 +791,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/always_continue_shows"
|
android:text="@string/always_continue_shows"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -741,7 +809,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/recentlyListOnly"
|
android:text="@string/recentlyListOnly"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -777,7 +845,7 @@
|
||||||
android:text="@string/subscriptions_checking_time_s"
|
android:text="@string/subscriptions_checking_time_s"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_notifications_none_24"
|
app:icon="@drawable/ic_round_notifications_none_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -804,7 +872,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/notification_for_checking_subscriptions"
|
android:text="@string/notification_for_checking_subscriptions"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -873,7 +941,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/prefer_dub"
|
android:text="@string/prefer_dub"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -892,7 +960,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/show_yt"
|
android:text="@string/show_yt"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -927,7 +995,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_list_24"
|
android:src="@drawable/ic_round_view_list_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -946,7 +1014,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_grid_view_24"
|
android:src="@drawable/ic_round_grid_view_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -964,7 +1032,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_comfy_24"
|
android:src="@drawable/ic_round_view_comfy_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -995,7 +1063,7 @@
|
||||||
android:text="@string/player_settings"
|
android:text="@string/player_settings"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_video_settings_24"
|
app:icon="@drawable/ic_round_video_settings_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -1090,7 +1158,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_list_24"
|
android:src="@drawable/ic_round_view_list_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -1108,7 +1176,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_comfy_24"
|
android:src="@drawable/ic_round_view_comfy_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -1138,7 +1206,7 @@
|
||||||
android:text="@string/reader_settings"
|
android:text="@string/reader_settings"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_reader_settings"
|
app:icon="@drawable/ic_round_reader_settings"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -1178,7 +1246,7 @@
|
||||||
android:layout_marginStart="-32dp"
|
android:layout_marginStart="-32dp"
|
||||||
android:layout_marginEnd="-32dp"
|
android:layout_marginEnd="-32dp"
|
||||||
android:background="@drawable/ui_bg"
|
android:background="@drawable/ui_bg"
|
||||||
android:backgroundTint="@color/bg_opp"
|
android:backgroundTint="?attr/colorOnBackground"
|
||||||
android:backgroundTintMode="src_atop"
|
android:backgroundTintMode="src_atop"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
|
@ -1188,7 +1256,7 @@
|
||||||
android:text="@string/faq"
|
android:text="@string/faq"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_help_24"
|
app:icon="@drawable/ic_round_help_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -1207,7 +1275,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/check_app_updates"
|
android:text="@string/check_app_updates"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -1228,7 +1296,7 @@
|
||||||
android:text="@string/devs"
|
android:text="@string/devs"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_accessible_forward_24"
|
app:icon="@drawable/ic_round_accessible_forward_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -1249,7 +1317,7 @@
|
||||||
android:text="@string/forks"
|
android:text="@string/forks"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_restaurant_24"
|
app:icon="@drawable/ic_round_restaurant_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -1270,7 +1338,7 @@
|
||||||
android:text="@string/disclaimer"
|
android:text="@string/disclaimer"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_info_24"
|
app:icon="@drawable/ic_round_info_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -1347,7 +1415,7 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:padding="6dp"
|
android:padding="6dp"
|
||||||
android:src="@drawable/ic_discord"
|
android:src="@drawable/ic_discord"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -1357,7 +1425,7 @@
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:padding="6dp"
|
android:padding="6dp"
|
||||||
android:src="@drawable/ic_github"
|
android:src="@drawable/ic_github"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:background="@color/nav_bg"
|
android:background="?attr/colorSecondary"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -21,6 +21,7 @@
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
|
android:textColor="?attr/colorOnSecondary"
|
||||||
tools:text="@string/main_studio" />
|
tools:text="@string/main_studio" />
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
android:layout_gravity="end"
|
android:layout_gravity="end"
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:translationZ="2dp"
|
android:translationZ="2dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?attr/colorSecondary"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.utils.widget.ImageFilterView
|
<androidx.constraintlayout.utils.widget.ImageFilterView
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
android:background="@color/nav_bg_inv"
|
android:background="@color/nav_bg_inv"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/immersive_mode"
|
android:text="@string/immersive_mode"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
app:thumbTint="@color/button_switch_track">
|
app:thumbTint="@color/button_switch_track">
|
||||||
|
@ -141,7 +141,7 @@
|
||||||
android:text="@string/home_layout_show"
|
android:text="@string/home_layout_show"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_playlist_add_24"
|
app:icon="@drawable/ic_round_playlist_add_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -169,7 +169,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/small_view"
|
android:text="@string/small_view"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -203,7 +203,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/banner_animations"
|
android:text="@string/banner_animations"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
app:thumbTint="@color/button_switch_track">
|
app:thumbTint="@color/button_switch_track">
|
||||||
|
@ -225,7 +225,7 @@
|
||||||
android:paddingEnd="32dp"
|
android:paddingEnd="32dp"
|
||||||
android:text="@string/layout_animations"
|
android:text="@string/layout_animations"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_amp_stories_24"
|
android:src="@drawable/ic_round_amp_stories_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_column_24"
|
android:src="@drawable/ic_round_view_column_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_close_24"
|
android:src="@drawable/ic_round_close_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_screen_rotation_24"
|
android:src="@drawable/ic_round_screen_rotation_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_menu_book_24"
|
android:src="@drawable/ic_round_menu_book_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -231,7 +231,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_minus"
|
android:src="@drawable/ic_minus"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -266,7 +266,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_add"
|
android:src="@drawable/ic_add"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -300,7 +300,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_minus"
|
android:src="@drawable/ic_minus"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -334,7 +334,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_add"
|
android:src="@drawable/ic_add"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -368,7 +368,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_minus"
|
android:src="@drawable/ic_minus"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -402,7 +402,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_add"
|
android:src="@drawable/ic_add"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -445,7 +445,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_minus"
|
android:src="@drawable/ic_minus"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_add"
|
android:src="@drawable/ic_add"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -505,7 +505,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="Use Dark Theme"
|
android:text="Use Dark Theme"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -524,7 +524,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/keep_screen_on"
|
android:text="@string/keep_screen_on"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -544,7 +544,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/volume_buttons"
|
android:text="@string/volume_buttons"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_amp_stories_24"
|
android:src="@drawable/ic_round_amp_stories_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_array_24"
|
android:src="@drawable/ic_round_view_array_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_view_column_24"
|
android:src="@drawable/ic_round_view_column_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:rotation="0"
|
android:rotation="0"
|
||||||
android:src="@drawable/ic_round_swipe_up_alt_24"
|
android:src="@drawable/ic_round_swipe_up_alt_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:scaleX="-1"
|
android:scaleX="-1"
|
||||||
android:src="@drawable/ic_round_close_24"
|
android:src="@drawable/ic_round_close_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_screen_rotation_24"
|
android:src="@drawable/ic_round_screen_rotation_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:src="@drawable/ic_round_menu_book_24"
|
android:src="@drawable/ic_round_menu_book_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
tools:ignore="ContentDescription,SpeakableTextPresentCheck,ImageContrastCheck" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/over_scroll"
|
android:text="@string/over_scroll"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -288,7 +288,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/true_colors"
|
android:text="@string/true_colors"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -316,7 +316,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/image_rotation"
|
android:text="@string/image_rotation"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -334,7 +334,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/crop_borders"
|
android:text="@string/crop_borders"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -353,7 +353,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/spaced_pages"
|
android:text="@string/spaced_pages"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -371,7 +371,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/hide_page_numbers"
|
android:text="@string/hide_page_numbers"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -389,7 +389,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/horizontal_scroll_bar"
|
android:text="@string/horizontal_scroll_bar"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -407,7 +407,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/keep_screen_on"
|
android:text="@string/keep_screen_on"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -425,7 +425,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/volume_buttons"
|
android:text="@string/volume_buttons"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -443,7 +443,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/wrap_images"
|
android:text="@string/wrap_images"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
@ -470,7 +470,7 @@
|
||||||
android:minHeight="64dp"
|
android:minHeight="64dp"
|
||||||
android:text="@string/image_long_clicking"
|
android:text="@string/image_long_clicking"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:drawableTint="?attr/colorPrimary"
|
app:drawableTint="?attr/colorPrimary"
|
||||||
app:showText="false"
|
app:showText="false"
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
android:layout_marginTop="16dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="16dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
android:buttonTint="?attr/colorPrimary"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
@ -69,6 +70,7 @@
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
tools:ignore="SpeakableTextPresentCheck"
|
tools:ignore="SpeakableTextPresentCheck"
|
||||||
|
@ -86,6 +88,7 @@
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
tools:ignore="SpeakableTextPresentCheck"
|
tools:ignore="SpeakableTextPresentCheck"
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
android:layout_height="4dp"
|
android:layout_height="4dp"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="14dp"
|
android:layout_marginTop="14dp"
|
||||||
app:cardBackgroundColor="@color/nav_tab"
|
app:cardBackgroundColor="?attr/colorPrimary"
|
||||||
app:cardCornerRadius="2dp"
|
app:cardCornerRadius="2dp"
|
||||||
app:cardElevation="0dp"/>
|
app:cardElevation="0dp"/>
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
android:layout_height="4dp"
|
android:layout_height="4dp"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
app:cardBackgroundColor="@color/nav_tab"
|
app:cardBackgroundColor="?attr/colorPrimary"
|
||||||
app:cardCornerRadius="2dp"
|
app:cardCornerRadius="2dp"
|
||||||
app:cardElevation="0dp" />
|
app:cardElevation="0dp" />
|
||||||
|
|
||||||
|
@ -99,6 +99,7 @@
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
tools:ignore="SpeakableTextPresentCheck"
|
tools:ignore="SpeakableTextPresentCheck"
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
@ -117,6 +118,7 @@
|
||||||
android:text="@string/save"
|
android:text="@string/save"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
tools:ignore="SpeakableTextPresentCheck" />
|
tools:ignore="SpeakableTextPresentCheck" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
@ -134,6 +136,7 @@
|
||||||
android:text="@string/share"
|
android:text="@string/share"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
tools:ignore="SpeakableTextPresentCheck" />
|
tools:ignore="SpeakableTextPresentCheck" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
app:boxCornerRadiusTopEnd="16dp"
|
app:boxCornerRadiusTopEnd="16dp"
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:startIconDrawable="@drawable/ic_round_playlist_play_24">
|
app:startIconDrawable="@drawable/ic_round_playlist_play_24">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -73,6 +74,7 @@
|
||||||
android:text="@string/watch"
|
android:text="@string/watch"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
|
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
tools:ignore="LabelFor,TextContrastCheck,DuplicateSpeakableTextCheck" />
|
tools:ignore="LabelFor,TextContrastCheck,DuplicateSpeakableTextCheck" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
@ -96,6 +98,7 @@
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
app:endIconMode="none"
|
app:endIconMode="none"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:startIconDrawable="@drawable/ic_round_add_circle_outline_24"
|
app:startIconDrawable="@drawable/ic_round_add_circle_outline_24"
|
||||||
app:suffixTextAppearance="@style/Suffix">
|
app:suffixTextAppearance="@style/Suffix">
|
||||||
|
|
||||||
|
@ -124,7 +127,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_marginTop="-2dp"
|
android:layout_marginTop="-2dp"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:elevation="0dp"
|
android:elevation="0dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
|
@ -154,6 +157,7 @@
|
||||||
app:endIconMode="none"
|
app:endIconMode="none"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
app:startIconDrawable="@drawable/ic_round_star_24"
|
app:startIconDrawable="@drawable/ic_round_star_24"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:suffixText="@string/score_suffix"
|
app:suffixText="@string/score_suffix"
|
||||||
app:suffixTextAppearance="@style/Suffix">
|
app:suffixTextAppearance="@style/Suffix">
|
||||||
|
|
||||||
|
@ -193,6 +197,7 @@
|
||||||
app:endIconMode="none"
|
app:endIconMode="none"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
app:startIconDrawable="@drawable/ic_round_date_range_24"
|
app:startIconDrawable="@drawable/ic_round_date_range_24"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:suffixTextAppearance="@style/Suffix">
|
app:suffixTextAppearance="@style/Suffix">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -227,6 +232,7 @@
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
app:endIconMode="none"
|
app:endIconMode="none"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:suffixTextAppearance="@style/Suffix">
|
app:suffixTextAppearance="@style/Suffix">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -362,6 +368,7 @@
|
||||||
android:layout_width="128dp"
|
android:layout_width="128dp"
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
|
@ -378,6 +385,7 @@
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
|
@ -392,7 +400,7 @@
|
||||||
android:layout_height="4dp"
|
android:layout_height="4dp"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="14dp"
|
android:layout_marginTop="14dp"
|
||||||
app:cardBackgroundColor="@color/nav_tab"
|
app:cardBackgroundColor="?attr/colorPrimary"
|
||||||
app:cardCornerRadius="2dp"
|
app:cardCornerRadius="2dp"
|
||||||
app:cardElevation="0dp">
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
app:boxCornerRadiusTopEnd="16dp"
|
app:boxCornerRadiusTopEnd="16dp"
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:startIconDrawable="@drawable/ic_round_playlist_play_24">
|
app:startIconDrawable="@drawable/ic_round_playlist_play_24">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -92,6 +93,7 @@
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
app:endIconMode="none"
|
app:endIconMode="none"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:startIconDrawable="@drawable/ic_round_add_circle_outline_24"
|
app:startIconDrawable="@drawable/ic_round_add_circle_outline_24"
|
||||||
app:suffixTextAppearance="@style/Suffix">
|
app:suffixTextAppearance="@style/Suffix">
|
||||||
|
|
||||||
|
@ -122,6 +124,7 @@
|
||||||
android:layout_marginTop="-2dp"
|
android:layout_marginTop="-2dp"
|
||||||
android:elevation="0dp"
|
android:elevation="0dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:minWidth="@null"
|
android:minWidth="@null"
|
||||||
|
@ -150,6 +153,7 @@
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
app:startIconDrawable="@drawable/ic_round_star_24"
|
app:startIconDrawable="@drawable/ic_round_star_24"
|
||||||
app:suffixText="@string/score_suffix"
|
app:suffixText="@string/score_suffix"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:suffixTextAppearance="@style/Suffix">
|
app:suffixTextAppearance="@style/Suffix">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -180,6 +184,7 @@
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="24dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
|
@ -195,7 +200,7 @@
|
||||||
android:layout_height="4dp"
|
android:layout_height="4dp"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_marginTop="14dp"
|
android:layout_marginTop="14dp"
|
||||||
app:cardBackgroundColor="@color/nav_tab"
|
app:cardBackgroundColor="?attr/colorPrimary"
|
||||||
app:cardCornerRadius="2dp"
|
app:cardCornerRadius="2dp"
|
||||||
app:cardElevation="0dp" >
|
app:cardElevation="0dp" >
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
app:boxCornerRadiusBottomStart="16dp"
|
app:boxCornerRadiusBottomStart="16dp"
|
||||||
app:boxCornerRadiusTopEnd="16dp"
|
app:boxCornerRadiusTopEnd="16dp"
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:hintAnimationEnabled="true">
|
app:hintAnimationEnabled="true">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -71,6 +72,7 @@
|
||||||
app:boxCornerRadiusBottomStart="16dp"
|
app:boxCornerRadiusBottomStart="16dp"
|
||||||
app:boxCornerRadiusTopEnd="16dp"
|
app:boxCornerRadiusTopEnd="16dp"
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:hintAnimationEnabled="true">
|
app:hintAnimationEnabled="true">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -110,6 +112,7 @@
|
||||||
app:boxCornerRadiusBottomStart="16dp"
|
app:boxCornerRadiusBottomStart="16dp"
|
||||||
app:boxCornerRadiusTopEnd="16dp"
|
app:boxCornerRadiusTopEnd="16dp"
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:hintAnimationEnabled="true">
|
app:hintAnimationEnabled="true">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -140,6 +143,7 @@
|
||||||
app:boxCornerRadiusBottomStart="16dp"
|
app:boxCornerRadiusBottomStart="16dp"
|
||||||
app:boxCornerRadiusTopEnd="16dp"
|
app:boxCornerRadiusTopEnd="16dp"
|
||||||
app:boxCornerRadiusTopStart="16dp"
|
app:boxCornerRadiusTopStart="16dp"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:hintAnimationEnabled="true">
|
app:hintAnimationEnabled="true">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -248,6 +252,7 @@
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/searchFilterCancel"
|
android:id="@+id/searchFilterCancel"
|
||||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
|
@ -264,6 +269,7 @@
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/searchFilterApply"
|
android:id="@+id/searchFilterApply"
|
||||||
style="@style/Widget.Material3.Button.OutlinedButton"
|
style="@style/Widget.Material3.Button.OutlinedButton"
|
||||||
|
app:strokeColor="?attr/colorPrimaryContainer"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="56dp"
|
android:layout_height="56dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:text="@android:string/cancel"
|
android:text="@android:string/cancel"
|
||||||
android:textColor="@color/pink_500"
|
android:textColor="?attr/colorOnPrimary"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
app:cornerRadius="16dp" />
|
app:cornerRadius="16dp" />
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
android:text="@string/logout"
|
android:text="@string/logout"
|
||||||
android:textColor="?attr/colorSecondaryVariant"
|
android:textColor="?attr/colorSecondary"
|
||||||
android:textSize="14sp" />
|
android:textSize="14sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -85,7 +85,7 @@
|
||||||
android:text="@string/search_by_image"
|
android:text="@string/search_by_image"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_image_search_24"
|
app:icon="@drawable/ic_round_image_search_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
android:text="@string/downloads"
|
android:text="@string/downloads"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_round_download_24"
|
app:icon="@drawable/ic_round_download_24"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -123,7 +123,7 @@
|
||||||
android:text="@string/anilist_settings"
|
android:text="@string/anilist_settings"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_anilist"
|
app:icon="@drawable/ic_anilist"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
android:text="@string/extension_settings"
|
android:text="@string/extension_settings"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
app:icon="@drawable/ic_extension"
|
app:icon="@drawable/ic_extension"
|
||||||
app:iconPadding="16dp"
|
app:iconPadding="16dp"
|
||||||
|
@ -162,7 +162,7 @@
|
||||||
android:text="@string/settings"
|
android:text="@string/settings"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textAllCaps="false"
|
android:textAllCaps="false"
|
||||||
android:textColor="@color/bg_opp"
|
android:textColor="?attr/colorOnBackground"
|
||||||
app:cornerRadius="0dp"
|
app:cornerRadius="0dp"
|
||||||
|
|
||||||
app:icon="@drawable/ic_round_settings_24"
|
app:icon="@drawable/ic_round_settings_24"
|
||||||
|
|
|
@ -41,13 +41,14 @@
|
||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
android:hint="@string/search"
|
android:hint="@string/search"
|
||||||
android:transitionName="@string/search"
|
android:transitionName="@string/search"
|
||||||
app:boxBackgroundColor="@color/bg"
|
app:boxBackgroundColor="?android:colorBackground"
|
||||||
app:boxBackgroundMode="outline"
|
app:boxBackgroundMode="outline"
|
||||||
app:boxCornerRadiusBottomEnd="28dp"
|
app:boxCornerRadiusBottomEnd="28dp"
|
||||||
app:boxCornerRadiusBottomStart="28dp"
|
app:boxCornerRadiusBottomStart="28dp"
|
||||||
app:boxCornerRadiusTopEnd="28dp"
|
app:boxCornerRadiusTopEnd="28dp"
|
||||||
app:boxCornerRadiusTopStart="28dp"
|
app:boxCornerRadiusTopStart="28dp"
|
||||||
app:endIconDrawable="@drawable/ic_round_search_24"
|
app:endIconDrawable="@drawable/ic_round_search_24"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:hintAnimationEnabled="true">
|
app:hintAnimationEnabled="true">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -60,7 +61,6 @@
|
||||||
android:inputType="textPersonName"
|
android:inputType="textPersonName"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:selectAllOnFocus="true"
|
android:selectAllOnFocus="true"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
tools:ignore="LabelFor,TextContrastCheck" />
|
tools:ignore="LabelFor,TextContrastCheck" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
|
@ -529,8 +529,8 @@
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
app:ad_marker_color="#A9FFFFFF"
|
app:ad_marker_color="#A9FFFFFF"
|
||||||
app:bar_height="2dp"
|
app:bar_height="2dp"
|
||||||
app:played_color="@color/pink_700"
|
app:played_color="?attr/colorPrimary"
|
||||||
app:scrubber_color="@color/pink_500"
|
app:scrubber_color="?attr/colorPrimaryContainer"
|
||||||
tools:ignore="SpeakableTextPresentCheck" />
|
tools:ignore="SpeakableTextPresentCheck" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -248,7 +248,7 @@
|
||||||
android:valueTo="10"
|
android:valueTo="10"
|
||||||
app:labelBehavior="gone"
|
app:labelBehavior="gone"
|
||||||
app:thumbElevation="0dp"
|
app:thumbElevation="0dp"
|
||||||
app:trackColorInactive="@color/pink_500_25"
|
app:trackColorInactive="?attr/colorSecondary"
|
||||||
app:trackHeight="24dp" />
|
app:trackHeight="24dp" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -290,7 +290,7 @@
|
||||||
android:valueTo="10"
|
android:valueTo="10"
|
||||||
app:labelBehavior="gone"
|
app:labelBehavior="gone"
|
||||||
app:thumbElevation="0dp"
|
app:thumbElevation="0dp"
|
||||||
app:trackColorInactive="@color/pink_500_25"
|
app:trackColorInactive="?attr/colorSecondary"
|
||||||
app:trackHeight="24dp" />
|
app:trackHeight="24dp" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_gravity="bottom|center_horizontal"
|
android:layout_gravity="bottom|center_horizontal"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="24dp"
|
app:cardCornerRadius="24dp"
|
||||||
app:contentPadding="12dp">
|
app:contentPadding="12dp">
|
||||||
|
|
||||||
|
|
|
@ -176,6 +176,7 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintWidth_max="256dp"
|
app:layout_constraintWidth_max="256dp"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -230,6 +231,7 @@
|
||||||
app:layout_constraintStart_toEndOf="@+id/homeAnimeList"
|
app:layout_constraintStart_toEndOf="@+id/homeAnimeList"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:layout_constraintWidth_max="256dp"
|
app:layout_constraintWidth_max="256dp"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -389,7 +391,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="32dp"
|
android:layout_height="32dp"
|
||||||
android:src="@drawable/ic_round_heart_broken_24"
|
android:src="@drawable/ic_round_heart_broken_24"
|
||||||
app:tint="@color/fav"
|
app:tint="?attr/colorPrimary"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -615,7 +617,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="32dp"
|
android:layout_height="32dp"
|
||||||
android:src="@drawable/ic_round_heart_broken_24"
|
android:src="@drawable/ic_round_heart_broken_24"
|
||||||
app:tint="@color/fav"
|
app:tint="?attr/colorPrimary"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
android:layout_margin="32dp"
|
android:layout_margin="32dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:text="@string/login"
|
android:text="@string/login"
|
||||||
android:textColor="@color/button_icon"
|
android:textColor="?attr/colorOnPrimary"
|
||||||
app:cornerRadius="16dp"
|
app:cornerRadius="16dp"
|
||||||
app:icon="@drawable/ic_anilist"
|
app:icon="@drawable/ic_anilist"
|
||||||
app:iconTint="@color/button_icon" />
|
app:iconTint="@color/button_icon" />
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:padding="6dp"
|
android:padding="6dp"
|
||||||
android:src="@drawable/ic_discord"
|
android:src="@drawable/ic_discord"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorSecondary"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:padding="6dp"
|
android:padding="6dp"
|
||||||
android:src="@drawable/ic_github"
|
android:src="@drawable/ic_github"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorSecondary"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_gravity="bottom|center_horizontal"
|
android:layout_gravity="bottom|center_horizontal"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="24dp"
|
app:cardCornerRadius="24dp"
|
||||||
app:contentPadding="12dp">
|
app:contentPadding="12dp">
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:cardBackgroundColor="@color/bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="0dp"
|
app:cardCornerRadius="0dp"
|
||||||
app:cardElevation="0dp"
|
app:cardElevation="0dp"
|
||||||
tools:context=".media.MediaInfoFragment"
|
tools:context=".media.MediaInfoFragment"
|
||||||
|
|
|
@ -34,15 +34,16 @@
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:hint="@string/anime"
|
android:hint="@string/anime"
|
||||||
android:textColorHint="@color/bg_opp"
|
android:textColorHint="?attr/colorOnPrimaryContainer"
|
||||||
android:transitionName="@string/search"
|
android:transitionName="@string/search"
|
||||||
app:boxBackgroundColor="@color/status"
|
app:boxBackgroundColor="?attr/colorPrimaryContainer"
|
||||||
app:boxCornerRadiusBottomEnd="28dp"
|
app:boxCornerRadiusBottomEnd="28dp"
|
||||||
app:boxCornerRadiusBottomStart="28dp"
|
app:boxCornerRadiusBottomStart="28dp"
|
||||||
app:boxCornerRadiusTopEnd="28dp"
|
app:boxCornerRadiusTopEnd="28dp"
|
||||||
app:boxCornerRadiusTopStart="28dp"
|
app:boxCornerRadiusTopStart="28dp"
|
||||||
app:endIconDrawable="@drawable/ic_round_search_24"
|
app:endIconDrawable="@drawable/ic_round_search_24"
|
||||||
app:endIconTint="@color/bg_opp"
|
app:endIconTint="?attr/colorOnPrimaryContainer"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:hintAnimationEnabled="true">
|
app:hintAnimationEnabled="true">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -54,7 +55,6 @@
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:inputType="none"
|
android:inputType="none"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
tools:ignore="LabelFor,TextContrastCheck" />
|
tools:ignore="LabelFor,TextContrastCheck" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
@ -63,7 +63,7 @@
|
||||||
android:layout_width="52dp"
|
android:layout_width="52dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:backgroundTint="@color/status"
|
android:backgroundTint="?attr/colorPrimaryContainer"
|
||||||
app:cardCornerRadius="26dp">
|
app:cardCornerRadius="26dp">
|
||||||
|
|
||||||
<com.google.android.material.imageview.ShapeableImageView
|
<com.google.android.material.imageview.ShapeableImageView
|
||||||
|
@ -71,6 +71,7 @@
|
||||||
android:layout_width="52dp"
|
android:layout_width="52dp"
|
||||||
android:layout_height="52dp"
|
android:layout_height="52dp"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
|
android:tint="?attr/colorOnPrimaryContainer"
|
||||||
app:srcCompat="@drawable/ic_round_settings_24"
|
app:srcCompat="@drawable/ic_round_settings_24"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
|
@ -108,6 +109,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:text="@string/this_season"
|
android:text="@string/this_season"
|
||||||
|
app:chipStrokeColor="?attr/colorPrimaryContainer"
|
||||||
android:textAppearance="@style/Suffix" />
|
android:textAppearance="@style/Suffix" />
|
||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
|
@ -116,6 +118,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:text="@string/next_season"
|
android:text="@string/next_season"
|
||||||
|
app:chipStrokeColor="?attr/colorPrimaryContainer"
|
||||||
android:textAppearance="@style/Suffix" />
|
android:textAppearance="@style/Suffix" />
|
||||||
|
|
||||||
<com.google.android.material.chip.Chip
|
<com.google.android.material.chip.Chip
|
||||||
|
@ -123,6 +126,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/previous_season"
|
android:text="@string/previous_season"
|
||||||
|
app:chipStrokeColor="?attr/colorPrimaryContainer"
|
||||||
android:textAppearance="@style/Suffix" />
|
android:textAppearance="@style/Suffix" />
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,15 +24,15 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
android:backgroundTint="@color/fav"
|
android:backgroundTint="?attr/colorSecondaryContainer"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:text="@string/play_yt"
|
android:text="@string/play_yt"
|
||||||
android:textColor="@color/bg_white"
|
android:textColor="?attr/colorOnSecondaryContainer"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:cornerRadius="12dp"
|
app:cornerRadius="12dp"
|
||||||
app:icon="@drawable/ic_round_play_circle_24"
|
app:icon="@drawable/ic_round_play_circle_24"
|
||||||
app:iconTint="@color/bg_white"
|
app:iconTint="?attr/colorOnSecondaryContainer"
|
||||||
tools:ignore="TextContrastCheck" />
|
tools:ignore="TextContrastCheck" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -66,6 +66,7 @@
|
||||||
app:boxCornerRadiusTopEnd="8dp"
|
app:boxCornerRadiusTopEnd="8dp"
|
||||||
app:boxCornerRadiusTopStart="8dp"
|
app:boxCornerRadiusTopStart="8dp"
|
||||||
app:hintAnimationEnabled="true"
|
app:hintAnimationEnabled="true"
|
||||||
|
app:boxStrokeColor="@color/text_input_layout_stroke_color"
|
||||||
app:startIconDrawable="@drawable/ic_round_source_24">
|
app:startIconDrawable="@drawable/ic_round_source_24">
|
||||||
|
|
||||||
<AutoCompleteTextView
|
<AutoCompleteTextView
|
||||||
|
@ -90,7 +91,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
app:srcCompat="@drawable/ic_round_notifications_none_24"
|
app:srcCompat="@drawable/ic_round_notifications_none_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@ -170,7 +171,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
app:srcCompat="@drawable/ic_round_view_list_24"
|
app:srcCompat="@drawable/ic_round_view_list_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -180,7 +181,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
app:srcCompat="@drawable/ic_round_grid_view_24"
|
app:srcCompat="@drawable/ic_round_grid_view_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -190,7 +191,7 @@
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
app:srcCompat="@drawable/ic_round_view_comfy_24"
|
app:srcCompat="@drawable/ic_round_view_comfy_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -201,7 +202,7 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:rotation="90"
|
android:rotation="90"
|
||||||
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
app:srcCompat="@drawable/ic_round_arrow_back_ios_new_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
@ -263,7 +264,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="2dp"
|
android:layout_height="2dp"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:background="@color/pink_500" />
|
android:background="?attr/colorPrimary" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/itemEpisodeProgressEmpty"
|
android:id="@+id/itemEpisodeProgressEmpty"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="12dp">
|
app:cardCornerRadius="12dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -75,7 +75,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
|
@ -2,12 +2,14 @@
|
||||||
<com.google.android.material.chip.Chip xmlns:android="http://schemas.android.com/apk/res/android"
|
<com.google.android.material.chip.Chip xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="4dp"
|
||||||
android:layout_marginTop="-4dp"
|
android:layout_marginTop="-4dp"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="4dp"
|
||||||
android:layout_marginBottom="-4dp"
|
android:layout_marginBottom="-4dp"
|
||||||
android:elegantTextHeight="true"
|
android:elegantTextHeight="true"
|
||||||
android:textAppearance="@style/Suffix"
|
android:textAppearance="@style/Suffix"
|
||||||
|
app:chipStrokeColor="?attr/colorPrimaryContainer"
|
||||||
android:textSize="14sp">
|
android:textSize="14sp">
|
||||||
|
|
||||||
</com.google.android.material.chip.Chip>
|
</com.google.android.material.chip.Chip>
|
|
@ -17,6 +17,7 @@
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAllCaps="true"
|
android:textAllCaps="true"
|
||||||
|
android:textColor="?attr/colorPrimary"
|
||||||
tools:text="Episode 2 will be released in" />
|
tools:text="Episode 2 will be released in" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:focusable="false">
|
android:focusable="false">
|
||||||
|
|
||||||
<ani.dantotsu.NoGestureSubsamplingImageView
|
<ani.dantotsu.NoGestureSubsamplingImageView
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:focusable="false">
|
android:focusable="false">
|
||||||
|
|
||||||
<ani.dantotsu.NoGestureSubsamplingImageView
|
<ani.dantotsu.NoGestureSubsamplingImageView
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="64dp"
|
android:layout_height="64dp"
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="2dp"
|
android:layout_height="2dp"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:background="@color/pink_500" />
|
android:background="?attr/colorPrimary" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/itemEpisodeProgressEmpty"
|
android:id="@+id/itemEpisodeProgressEmpty"
|
||||||
|
@ -50,6 +50,6 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
|
@ -8,7 +8,7 @@
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:translationZ="8dp"
|
android:translationZ="8dp"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?android:colorBackground"
|
||||||
app:cardCornerRadius="16dp"
|
app:cardCornerRadius="16dp"
|
||||||
app:cardElevation="4dp">
|
app:cardElevation="4dp">
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="2dp"
|
android:layout_height="2dp"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:background="@color/pink_500" />
|
android:background="?attr/colorPrimary" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/itemEpisodeProgressEmpty"
|
android:id="@+id/itemEpisodeProgressEmpty"
|
||||||
|
@ -122,6 +122,6 @@
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:srcCompat="@drawable/ic_round_remove_red_eye_24"
|
app:srcCompat="@drawable/ic_round_remove_red_eye_24"
|
||||||
app:tint="@color/bg_opp"
|
app:tint="?attr/colorOnBackground"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
|
@ -8,7 +8,7 @@
|
||||||
android:layout_margin="8dp"
|
android:layout_margin="8dp"
|
||||||
android:backgroundTintMode="src_atop"
|
android:backgroundTintMode="src_atop"
|
||||||
android:longClickable="true"
|
android:longClickable="true"
|
||||||
app:cardBackgroundColor="@color/nav_bg"
|
app:cardBackgroundColor="?attr/colorSurface"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<View
|
<View
|
||||||
|
@ -58,7 +58,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="-10dp"
|
android:layout_marginStart="-10dp"
|
||||||
android:layout_marginTop="-18dp"
|
android:layout_marginTop="-18dp"
|
||||||
app:cardBackgroundColor="@color/bg_opp"
|
app:cardBackgroundColor="?attr/colorOnBackground"
|
||||||
app:cardCornerRadius="16dp">
|
app:cardCornerRadius="16dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
android:layout_marginTop="19dp"
|
android:layout_marginTop="19dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
android:fontFamily="@font/poppins_bold"
|
android:fontFamily="@font/poppins_bold"
|
||||||
android:textColor="@color/bg"
|
android:textColor="?android:colorBackground"
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
tools:text="12" />
|
tools:text="12" />
|
||||||
</androidx.cardview.widget.CardView>
|
</androidx.cardview.widget.CardView>
|
||||||
|
@ -88,7 +88,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="2dp"
|
android:layout_height="2dp"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0"
|
||||||
android:background="@color/pink_500" />
|
android:background="?attr/colorPrimary" />
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/itemEpisodeProgressEmpty"
|
android:id="@+id/itemEpisodeProgressEmpty"
|
||||||
|
@ -153,7 +153,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:alpha="0.33"
|
android:alpha="0.33"
|
||||||
android:background="@color/bg"
|
android:background="?android:colorBackground"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue