diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8ab6c3ca..c0a14ae7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,7 +47,7 @@ = Build.VERSION_CODES.P) { val displayCutout = activity?.window?.decorView?.rootWindowInsets?.displayCutout diff --git a/app/src/main/java/ani/dantotsu/download/video/Helper.kt b/app/src/main/java/ani/dantotsu/download/video/Helper.kt index 8d8b52c6..48909107 100644 --- a/app/src/main/java/ani/dantotsu/download/video/Helper.kt +++ b/app/src/main/java/ani/dantotsu/download/video/Helper.kt @@ -246,7 +246,7 @@ object Helper { .queryDownload(title, episode, DownloadedType.Type.ANIME) if (downloadCheck) { - AlertDialog.Builder(context) + AlertDialog.Builder(context , R.style.MyPopup) .setTitle("Download Exists") .setMessage("A download for this episode already exists. Do you want to overwrite it?") .setPositiveButton("Yes") { _, _ -> diff --git a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt index 732ac43f..d843b2dc 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt @@ -75,8 +75,6 @@ class AnimePageAdapter : RecyclerView.Adapter { diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt index ea30fa58..c6a2240a 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt @@ -1,23 +1,28 @@ package ani.dantotsu.media.anime import android.annotation.SuppressLint +import android.content.Context import android.content.Intent import android.net.Uri import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter +import android.widget.ImageButton import android.widget.ImageView import android.widget.LinearLayout +import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.* import ani.dantotsu.databinding.ItemAnimeWatchBinding import ani.dantotsu.databinding.ItemChipBinding +import ani.dantotsu.databinding.DialogLayoutBinding import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.SourceSearchDialogFragment +import ani.dantotsu.others.LanguageMapper import ani.dantotsu.parsers.AnimeSources import ani.dantotsu.parsers.DynamicAnimeParser import ani.dantotsu.parsers.WatchSources @@ -27,6 +32,7 @@ import com.google.android.material.chip.Chip import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch + class AnimeWatchAdapter( private val media: Media, private val fragment: AnimeWatchFragment, @@ -40,6 +46,8 @@ class AnimeWatchAdapter( val bind = ItemAnimeWatchBinding.inflate(LayoutInflater.from(parent.context), parent, false) return ViewHolder(bind) } + private var nestedDialog: AlertDialog? = null + @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ViewHolder, position: Int) { @@ -147,8 +155,9 @@ class AnimeWatchAdapter( } } + //Icons - //Subscription + //subscribe subscribe = MediaDetailsActivity.PopImageButton( fragment.lifecycleScope, binding.animeSourceSubscribe, @@ -167,44 +176,76 @@ class AnimeWatchAdapter( openSettings(fragment.requireContext(), getChannelId(true, media.id)) } - //Icons - var reversed = media.selected!!.recyclerReversed - var style = media.selected!!.recyclerStyle ?: fragment.uiSettings.animeDefaultView - binding.animeSourceTop.rotation = if (reversed) -90f else 90f - binding.animeSourceTop.setOnClickListener { - reversed = !reversed - binding.animeSourceTop.rotation = if (reversed) -90f else 90f - fragment.onIconPressed(style, reversed) - } - var selected = when (style) { - 0 -> binding.animeSourceList - 1 -> binding.animeSourceGrid - 2 -> binding.animeSourceCompact - else -> binding.animeSourceList - } - selected.alpha = 1f - fun selected(it: ImageView) { - selected.alpha = 0.33f - selected = it + //Nested Button + binding.animeNestedButton.setOnClickListener { + val dialogView = + LayoutInflater.from(fragment.requireContext()).inflate(R.layout.dialog_layout, null) + val dialogBinding = DialogLayoutBinding.bind(dialogView) + + var run = false + var reversed = media.selected!!.recyclerReversed + var style = media.selected!!.recyclerStyle ?: fragment.uiSettings.animeDefaultView + dialogBinding.animeSourceTop.rotation = if (reversed) -90f else 90f + dialogBinding.sortText.text = if (reversed) "Down to Up" else "Up to Down" + dialogBinding.animeSourceTop.setOnClickListener { + reversed = !reversed + dialogBinding.animeSourceTop.rotation = if (reversed) -90f else 90f + dialogBinding.sortText.text = if (reversed) "Down to Up" else "Up to Down" + run = true + } + //Grids + var selected = when (style) { + 0 -> dialogBinding.animeSourceList + 1 -> dialogBinding.animeSourceGrid + 2 -> dialogBinding.animeSourceCompact + else -> dialogBinding.animeSourceList + } + when (style) { + 0 -> dialogBinding.layoutText.text = "List" + 1 -> dialogBinding.layoutText.text = "Grid" + 2 -> dialogBinding.layoutText.text = "Compact" + else -> dialogBinding.animeSourceList + } selected.alpha = 1f + fun selected(it: ImageButton) { + selected.alpha = 0.33f + selected = it + selected.alpha = 1f + } + dialogBinding.animeSourceList.setOnClickListener { + selected(it as ImageButton) + style = 0 + dialogBinding.layoutText.text = "List" + run = true + } + dialogBinding.animeSourceGrid.setOnClickListener { + selected(it as ImageButton) + style = 1 + dialogBinding.layoutText.text = "Grid" + run = true + } + dialogBinding.animeSourceCompact.setOnClickListener { + selected(it as ImageButton) + style = 2 + dialogBinding.layoutText.text = "Compact" + run = true + } + + //hidden + dialogBinding.animeScanlatorContainer.visibility = View.GONE + dialogBinding.animeDownloadContainer.visibility = View.GONE + + nestedDialog = AlertDialog.Builder(fragment.requireContext() , R.style.MyPopup) + .setTitle("Options") + .setView(dialogView) + .setPositiveButton("OK") { _, _ -> + if (run) fragment.onIconPressed(style, reversed) + } + .setNegativeButton("Cancel") { _, _ -> + } + .create() + nestedDialog?.show() } - binding.animeSourceList.setOnClickListener { - selected(it as ImageView) - style = 0 - fragment.onIconPressed(style, reversed) - } - binding.animeSourceGrid.setOnClickListener { - selected(it as ImageView) - style = 1 - fragment.onIconPressed(style, reversed) - } - binding.animeSourceCompact.setOnClickListener { - selected(it as ImageView) - style = 2 - fragment.onIconPressed(style, reversed) - } - binding.animeScanlatorTop.visibility = View.GONE - binding.animeDownloadTop.visibility = View.GONE //Episode Handling handleEpisodes() } @@ -351,12 +392,15 @@ class AnimeWatchAdapter( parser.extension.sources.firstOrNull()?.lang ?: "Unknown" ) } - binding?.animeSourceLanguage?.setAdapter( - ArrayAdapter( - fragment.requireContext(), - R.layout.item_dropdown, - parser.extension.sources.map { it.lang }) + val adapter = ArrayAdapter( + fragment.requireContext(), + R.layout.item_dropdown, + parser.extension.sources.map { LanguageMapper.mapLanguageCodeToName(it.lang) } ) + val items = adapter.count + if (items > 1) binding?.animeSourceLanguageContainer?.visibility = View.VISIBLE else binding?.animeSourceLanguageContainer?.visibility = View.GONE + + binding?.animeSourceLanguage?.setAdapter(adapter) } } diff --git a/app/src/main/java/ani/dantotsu/media/anime/CustomCastThemeFactory.kt b/app/src/main/java/ani/dantotsu/media/anime/CustomCastThemeFactory.kt index 850072b8..72239043 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/CustomCastThemeFactory.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/CustomCastThemeFactory.kt @@ -31,7 +31,7 @@ class CustomMediaRouterChooserDialogFragment: MediaRouteChooserDialogFragment() context: Context, savedInstanceState: Bundle? ): MediaRouteChooserDialog = - MediaRouteChooserDialog(context) + MediaRouteChooserDialog(context, R.style.MyPopup) } class CustomMediaRouteControllerDialogFragment: MediaRouteControllerDialogFragment() { @@ -39,5 +39,5 @@ class CustomMediaRouteControllerDialogFragment: MediaRouteControllerDialogFragme context: Context, savedInstanceState: Bundle? ): MediaRouteControllerDialog = - MediaRouteControllerDialog(context, R.style.ThemeOverlay_Dantotsu_MediaRouter) + MediaRouteControllerDialog(context, R.style.MyPopup) } \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt index 342dfe20..8aa03489 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt @@ -2,12 +2,14 @@ package ani.dantotsu.media.manga import android.annotation.SuppressLint import android.app.AlertDialog +import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.WindowManager import android.widget.ArrayAdapter import android.widget.CheckBox +import android.widget.ImageButton import android.widget.ImageView import android.widget.LinearLayout import android.widget.NumberPicker @@ -15,12 +17,14 @@ import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView import ani.dantotsu.* +import ani.dantotsu.databinding.DialogLayoutBinding import ani.dantotsu.databinding.ItemAnimeWatchBinding import ani.dantotsu.databinding.ItemChipBinding import ani.dantotsu.media.Media import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.media.SourceSearchDialogFragment import ani.dantotsu.media.anime.handleProgress +import ani.dantotsu.others.LanguageMapper import ani.dantotsu.parsers.DynamicMangaParser import ani.dantotsu.parsers.MangaReadSources import ani.dantotsu.parsers.MangaSources @@ -30,6 +34,7 @@ import com.google.android.material.chip.Chip import kotlinx.coroutines.MainScope import kotlinx.coroutines.launch + class MangaReadAdapter( private val media: Media, private val fragment: MangaReadFragment, @@ -46,7 +51,7 @@ class MangaReadAdapter( val bind = ItemAnimeWatchBinding.inflate(LayoutInflater.from(parent.context), parent, false) return ViewHolder(bind) } - + private var nestedDialog: AlertDialog? = null @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: ViewHolder, position: Int) { val binding = holder.binding @@ -117,7 +122,7 @@ class MangaReadAdapter( } } - //Subscription + //Grids subscribe = MediaDetailsActivity.PopImageButton( fragment.lifecycleScope, binding.animeSourceSubscribe, @@ -136,98 +141,130 @@ class MangaReadAdapter( openSettings(fragment.requireContext(), getChannelId(true, media.id)) } - //Icons - binding.animeSourceGrid.visibility = View.GONE - var reversed = media.selected!!.recyclerReversed - var style = media.selected!!.recyclerStyle ?: fragment.uiSettings.mangaDefaultView - binding.animeSourceTop.rotation = if (reversed) -90f else 90f - binding.animeSourceTop.setOnClickListener { - reversed = !reversed - binding.animeSourceTop.rotation = if (reversed) -90f else 90f - fragment.onIconPressed(style, reversed) - } + binding.animeNestedButton.setOnClickListener { - binding.animeScanlatorTop.setOnClickListener { val dialogView = - LayoutInflater.from(currContext()).inflate(R.layout.custom_dialog_layout, null) - val checkboxContainer = dialogView.findViewById(R.id.checkboxContainer) + LayoutInflater.from(fragment.requireContext()).inflate(R.layout.dialog_layout, null) + val dialogBinding = DialogLayoutBinding.bind(dialogView) - // Dynamically add checkboxes - - options.forEach { option -> - val checkBox = CheckBox(currContext()).apply { - text = option - } - //set checked if it's already selected - if (media.selected!!.scanlators != null) { - checkBox.isChecked = media.selected!!.scanlators?.contains(option) != true - scanlatorSelectionListener?.onScanlatorsSelected() - } else { - checkBox.isChecked = true - } - checkboxContainer.addView(checkBox) + var run = false + var reversed = media.selected!!.recyclerReversed + var style = media.selected!!.recyclerStyle ?: fragment.uiSettings.animeDefaultView + dialogBinding.animeSourceTop.rotation = if (reversed) -90f else 90f + dialogBinding.sortText.text = if (reversed) "Down to Up" else "Up to Down" + dialogBinding.animeSourceTop.setOnClickListener { + reversed = !reversed + dialogBinding.animeSourceTop.rotation = if (reversed) -90f else 90f + dialogBinding.sortText.text = if (reversed) "Down to Up" else "Up to Down" + run = true } - // Create AlertDialog - val dialog = AlertDialog.Builder(currContext(), R.style.MyPopup) - .setView(dialogView) - .setPositiveButton("OK") { dialog, which -> - //add unchecked to hidden - hiddenScanlators.clear() - for (i in 0 until checkboxContainer.childCount) { - val checkBox = checkboxContainer.getChildAt(i) as CheckBox - if (!checkBox.isChecked) { - hiddenScanlators.add(checkBox.text.toString()) - } - } - fragment.onScanlatorChange(hiddenScanlators) - scanlatorSelectionListener?.onScanlatorsSelected() - } - .setNegativeButton("Cancel", null) - .show() - dialog.window?.setDimAmount(0.8f) - } - - binding.animeDownloadTop.setOnClickListener { - //Alert dialog asking for the number of chapters to download - val alertDialog = AlertDialog.Builder(currContext(), R.style.MyPopup) - alertDialog.setTitle("Multi Chapter Downloader") - alertDialog.setMessage("Enter the number of chapters to download") - val input = NumberPicker(currContext()) - input.minValue = 1 - input.maxValue = 20 - input.value = 1 - alertDialog.setView(input) - alertDialog.setPositiveButton("OK") { dialog, which -> - fragment.multiDownload(input.value) + //Grids + dialogBinding.animeSourceGrid.visibility = View.GONE + var selected = when (style) { + 0 -> dialogBinding.animeSourceList + 1 -> dialogBinding.animeSourceCompact + else -> dialogBinding.animeSourceList + } + when (style) { + 0 -> dialogBinding.layoutText.text = "List" + 1 -> dialogBinding.layoutText.text = "Compact" + else -> dialogBinding.animeSourceList } - alertDialog.setNegativeButton("Cancel") { dialog, _ -> dialog.cancel() } - val dialog = alertDialog.show() - dialog.window?.setDimAmount(0.8f) - } - - var selected = when (style) { - 0 -> binding.animeSourceList - 1 -> binding.animeSourceCompact - else -> binding.animeSourceList - } - selected.alpha = 1f - fun selected(it: ImageView) { - selected.alpha = 0.33f - selected = it selected.alpha = 1f - } - binding.animeSourceList.setOnClickListener { - selected(it as ImageView) - style = 0 - fragment.onIconPressed(style, reversed) - } - binding.animeSourceCompact.setOnClickListener { - selected(it as ImageView) - style = 1 - fragment.onIconPressed(style, reversed) - } + fun selected(it: ImageButton) { + selected.alpha = 0.33f + selected = it + selected.alpha = 1f + } + dialogBinding.animeSourceList.setOnClickListener { + selected(it as ImageButton) + style = 0 + dialogBinding.layoutText.text = "List" + run = true + } + dialogBinding.animeSourceCompact.setOnClickListener { + selected(it as ImageButton) + style = 1 + dialogBinding.layoutText.text = "Compact" + run = true + } + //Multi download + dialogBinding.downloadNo.text = "0" + dialogBinding.animeDownloadTop.setOnClickListener { + //Alert dialog asking for the number of chapters to download + val alertDialog = AlertDialog.Builder(currContext(), R.style.MyPopup) + alertDialog.setTitle("Multi Chapter Downloader") + alertDialog.setMessage("Enter the number of chapters to download") + val input = NumberPicker(currContext()) + input.minValue = 1 + input.maxValue = 20 + input.value = 1 + alertDialog.setView(input) + alertDialog.setPositiveButton("OK") { dialog, which -> + dialogBinding.downloadNo.text = "${input.value}" + } + alertDialog.setNegativeButton("Cancel") { dialog, _ -> dialog.cancel() } + val dialog = alertDialog.show() + dialog.window?.setDimAmount(0.8f) + } + + //Scanlator + dialogBinding.animeScanlatorTop.setOnClickListener { + val dialogView2 = + LayoutInflater.from(currContext()).inflate(R.layout.custom_dialog_layout, null) + val checkboxContainer = dialogView2.findViewById(R.id.checkboxContainer) + + // Dynamically add checkboxes + options.forEach { option -> + val checkBox = CheckBox(currContext()).apply { + text = option + } + //set checked if it's already selected + if (media.selected!!.scanlators != null) { + checkBox.isChecked = media.selected!!.scanlators?.contains(option) != true + scanlatorSelectionListener?.onScanlatorsSelected() + } else { + checkBox.isChecked = true + } + checkboxContainer.addView(checkBox) + } + + // Create AlertDialog + val dialog = AlertDialog.Builder(currContext(), R.style.MyPopup) + .setView(dialogView2) + .setPositiveButton("OK") { dialog, which -> + //add unchecked to hidden + hiddenScanlators.clear() + for (i in 0 until checkboxContainer.childCount) { + val checkBox = checkboxContainer.getChildAt(i) as CheckBox + if (!checkBox.isChecked) { + hiddenScanlators.add(checkBox.text.toString()) + } + } + fragment.onScanlatorChange(hiddenScanlators) + scanlatorSelectionListener?.onScanlatorsSelected() + } + .setNegativeButton("Cancel", null) + .show() + dialog.window?.setDimAmount(0.8f) + } + + nestedDialog = AlertDialog.Builder(fragment.requireContext() , R.style.MyPopup) + .setTitle("Options") + .setView(dialogView) + .setPositiveButton("OK") { _, _ -> + if(run) fragment.onIconPressed(style, reversed) + if (dialogBinding.downloadNo.text != "0"){ + fragment.multiDownload(dialogBinding.downloadNo.text.toString().toInt()) + } + } + .setNegativeButton("Cancel") { _, _ -> + } + .create() + nestedDialog?.show() + } //Chapter Handling handleChapters() } @@ -385,12 +422,15 @@ class MangaReadAdapter( parser.extension.sources.firstOrNull()?.lang ?: "Unknown" ) } - binding?.animeSourceLanguage?.setAdapter( - ArrayAdapter( - fragment.requireContext(), - R.layout.item_dropdown, - parser.extension.sources.map { it.lang }) + val adapter = ArrayAdapter( + fragment.requireContext(), + R.layout.item_dropdown, + parser.extension.sources.map { LanguageMapper.mapLanguageCodeToName(it.lang) } ) + val items = adapter.count + if (items > 1) binding?.animeSourceLanguageContainer?.visibility = View.VISIBLE else binding?.animeSourceLanguageContainer?.visibility = View.GONE + + binding?.animeSourceLanguage?.setAdapter(adapter) } } diff --git a/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt b/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt index 25f8f6a4..48f6df75 100644 --- a/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt +++ b/app/src/main/java/ani/dantotsu/others/LanguageMapper.kt @@ -24,7 +24,35 @@ class LanguageMapper { "vi" -> "Vietnamese" "zh" -> "Chinese" "zh-Hans" -> "Chinese (Simplified)" - else -> "" + "es-419" -> "Spanish (Latin America)" + "hu" -> "Hungarian" + "zh-habt" -> "Chinese (Hakka)" + "zh-hant" -> "Chinese (Traditional)" + "ca" -> "Catalan" + "bg" -> "Bulgarian" + "fa" -> "Persian" + "mn" -> "Mongolian" + "ro" -> "Romanian" + "he" -> "Hebrew" + "ms" -> "Malay" + "tl" -> "Tagalog" + "hi" -> "Hindi" + "my" -> "Burmese" + "cs" -> "Czech" + "pt" -> "Portuguese" + "nl" -> "Dutch" + "sv" -> "Swedish" + "bn" -> "Bengali" + "no" -> "Norwegian" + "el" -> "Greek" + "sr" -> "Serbian" + "da" -> "Danish" + "lt" -> "Lithuanian" + "ml" -> "Malayalam" + "mr" -> "Marathi" + "ta" -> "Tamil" + "te" -> "Telugu" + else -> code } } diff --git a/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchActivity.kt b/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchActivity.kt index 1e38fc0e..75be1465 100644 --- a/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchActivity.kt +++ b/app/src/main/java/ani/dantotsu/others/imagesearch/ImageSearchActivity.kt @@ -14,6 +14,7 @@ import ani.dantotsu.App.Companion.context import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.databinding.ActivityImageSearchBinding +import ani.dantotsu.initActivity import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.others.LangSet import ani.dantotsu.themes.ThemeManager @@ -49,6 +50,7 @@ class ImageSearchActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) LangSet.setLocale(this) + initActivity(this) ThemeManager(this).applyTheme() binding = ActivityImageSearchBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/app/src/main/res/drawable-v24/ic_banner_foreground.xml b/app/src/main/res/drawable-v24/ic_banner_foreground.xml deleted file mode 100644 index e26ad38f..00000000 --- a/app/src/main/res/drawable-v24/ic_banner_foreground.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_round_filter_24.xml b/app/src/main/res/drawable/ic_round_filter_24.xml new file mode 100644 index 00000000..c5b85484 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_filter_24.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/layout/activity_image_search.xml b/app/src/main/res/layout/activity_image_search.xml index 775ebf93..760a0b6e 100644 --- a/app/src/main/res/layout/activity_image_search.xml +++ b/app/src/main/res/layout/activity_image_search.xml @@ -2,8 +2,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="fill_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent" + android:paddingTop="32dp"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_anime_watch.xml b/app/src/main/res/layout/item_anime_watch.xml index 70f66744..1834403a 100644 --- a/app/src/main/res/layout/item_anime_watch.xml +++ b/app/src/main/res/layout/item_anime_watch.xml @@ -90,12 +90,12 @@ @@ -107,7 +107,7 @@ - @@ -186,19 +177,26 @@ - + android:orientation="horizontal"> + + - - - - - - - - - diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml b/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml index a0a0dece..cf3108b3 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/ic_banner.png b/app/src/main/res/mipmap-xhdpi/ic_banner.png index 8f8c3cad..89d36cbd 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_banner.png and b/app/src/main/res/mipmap-xhdpi/ic_banner.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png new file mode 100644 index 00000000..1bcf6a7a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png differ diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml index 63ac05e8..e2c009ee 100644 --- a/app/src/main/res/values/style.xml +++ b/app/src/main/res/values/style.xml @@ -65,7 +65,7 @@ ?attr/colorOnBackground ?attr/colorSurface wrap_content - wrap_content + match_parent @drawable/shape_corner_16dp true true