forked from recloudstream/cloudstream
		
	heavily improved android tv anime page navigation
This commit is contained in:
		
							parent
							
								
									ad2f2ec412
								
							
						
					
					
						commit
						83f3f7ff2e
					
				
					 7 changed files with 667 additions and 579 deletions
				
			
		|  | @ -333,7 +333,7 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // this pulls the latest data so ppl don't have to update to simply change provider url |         // this pulls the latest data so ppl don't have to update to simply change provider url | ||||||
|         if(downloadFromGithub) { |         if (downloadFromGithub) { | ||||||
|             try { |             try { | ||||||
|                 runBlocking { |                 runBlocking { | ||||||
|                     withContext(Dispatchers.IO) { |                     withContext(Dispatchers.IO) { | ||||||
|  | @ -379,10 +379,12 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener { | ||||||
|                                 apis = allProviders.filter { api -> |                                 apis = allProviders.filter { api -> | ||||||
|                                     val name = api.javaClass.simpleName |                                     val name = api.javaClass.simpleName | ||||||
|                                     // if the provider does not exist in the json file, then it is shown by default |                                     // if the provider does not exist in the json file, then it is shown by default | ||||||
|                                     !providersJsonMap.containsKey(name) || acceptableProviders.contains(name) || restrictedApis.contains(name) |                                     !providersJsonMap.containsKey(name) || acceptableProviders.contains( | ||||||
|  |                                         name | ||||||
|  |                                     ) || restrictedApis.contains(name) | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
|                         } catch (e : Exception) { |                         } catch (e: Exception) { | ||||||
|                             logError(e) |                             logError(e) | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  | @ -39,6 +39,7 @@ import com.google.android.gms.cast.framework.CastContext | ||||||
| import com.google.android.gms.cast.framework.CastState | import com.google.android.gms.cast.framework.CastState | ||||||
| import com.google.android.material.button.MaterialButton | import com.google.android.material.button.MaterialButton | ||||||
| import com.lagradost.cloudstream3.* | import com.lagradost.cloudstream3.* | ||||||
|  | import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings | ||||||
| import com.lagradost.cloudstream3.APIHolder.getApiFromName | import com.lagradost.cloudstream3.APIHolder.getApiFromName | ||||||
| import com.lagradost.cloudstream3.APIHolder.getId | import com.lagradost.cloudstream3.APIHolder.getId | ||||||
| import com.lagradost.cloudstream3.AcraApplication.Companion.context | import com.lagradost.cloudstream3.AcraApplication.Companion.context | ||||||
|  | @ -583,7 +584,6 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio | ||||||
|     @SuppressLint("SetTextI18n") |     @SuppressLint("SetTextI18n") | ||||||
|     override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |     override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | ||||||
|         super.onViewCreated(view, savedInstanceState) |         super.onViewCreated(view, savedInstanceState) | ||||||
| 
 |  | ||||||
|         result_cast_items?.let { |         result_cast_items?.let { | ||||||
|             PanelsChildGestureRegionObserver.Provider.get().register(it) |             PanelsChildGestureRegionObserver.Provider.get().register(it) | ||||||
|         } |         } | ||||||
|  | @ -1077,6 +1077,65 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         /** | ||||||
|  |          * Sets next focus to allow navigation up and down between 2 views | ||||||
|  |          * if either of them is null nothing happens. | ||||||
|  |          **/ | ||||||
|  |         fun setFocusUpAndDown(upper: View?, down: View?) { | ||||||
|  |             if (upper == null || down == null) return | ||||||
|  |             upper.nextFocusDownId = down.id | ||||||
|  |             down.nextFocusUpId = upper.id | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // This is to band-aid FireTV navigation | ||||||
|  |         result_season_button?.isFocusableInTouchMode = context?.isTvSettings() == true | ||||||
|  |         result_episode_select?.isFocusableInTouchMode = context?.isTvSettings() == true | ||||||
|  |         result_dub_select?.isFocusableInTouchMode = context?.isTvSettings() == true | ||||||
|  | 
 | ||||||
|  |         observe(viewModel.selectedSeason) { season -> | ||||||
|  |             result_season_button?.text = fromIndexToSeasonText(season) | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         observe(viewModel.seasonSelections) { seasonList -> | ||||||
|  |             result_season_button?.visibility = if (seasonList.size <= 1) GONE else VISIBLE.also { | ||||||
|  | 
 | ||||||
|  |                 // If the season button is visible the result season button will be next focus down | ||||||
|  |                 if (result_series_parent?.isVisible == true) | ||||||
|  |                     setFocusUpAndDown(result_resume_series_button, result_season_button) | ||||||
|  |                 else | ||||||
|  |                     setFocusUpAndDown(result_bookmark_button, result_season_button) | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             result_season_button?.setOnClickListener { | ||||||
|  |                 result_season_button?.popupMenuNoIconsAndNoStringRes( | ||||||
|  |                     items = seasonList | ||||||
|  |                         .map { Pair(it ?: -2, fromIndexToSeasonText(it)) }, | ||||||
|  |                 ) { | ||||||
|  |                     val id = this.itemId | ||||||
|  | 
 | ||||||
|  |                     viewModel.changeSeason(if (id == -2) null else id) | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         observe(viewModel.selectedRange) { range -> | ||||||
|  |             result_episode_select?.text = range | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         observe(viewModel.rangeOptions) { range -> | ||||||
|  |             episodeRanges = range | ||||||
|  |             result_episode_select?.visibility = if (range.size <= 1) GONE else VISIBLE.also { | ||||||
|  | 
 | ||||||
|  |                 // If Season button is invisible then the bookmark button next focus is episode select | ||||||
|  |                 if (result_season_button?.isVisible != true) { | ||||||
|  |                     if (result_series_parent?.isVisible == true) | ||||||
|  |                         setFocusUpAndDown(result_resume_series_button, result_episode_select) | ||||||
|  |                     else | ||||||
|  |                         setFocusUpAndDown(result_bookmark_button, result_episode_select) | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         observe(viewModel.episodes) { episodeList -> |         observe(viewModel.episodes) { episodeList -> | ||||||
|             lateFixDownloadButton(episodeList.size <= 1) // movies can have multible parts but still be *movies* this will fix this |             lateFixDownloadButton(episodeList.size <= 1) // movies can have multible parts but still be *movies* this will fix this | ||||||
|             var isSeriesVisible = false |             var isSeriesVisible = false | ||||||
|  | @ -1118,6 +1177,17 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             result_series_parent?.isVisible = isSeriesVisible |             result_series_parent?.isVisible = isSeriesVisible | ||||||
|  |             if (isSeriesVisible) { | ||||||
|  |                 val down = when { | ||||||
|  |                     result_season_button?.isVisible == true -> result_season_button | ||||||
|  |                     result_episode_select?.isVisible == true -> result_episode_select | ||||||
|  |                     result_dub_select?.isVisible == true -> result_dub_select | ||||||
|  |                     else -> null | ||||||
|  |                 } | ||||||
|  |                 setFocusUpAndDown(result_resume_series_button, down) | ||||||
|  |                 setFocusUpAndDown(result_bookmark_button, result_resume_series_button) | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             result_resume_progress_holder?.isVisible = isProgressVisible |             result_resume_progress_holder?.isVisible = isProgressVisible | ||||||
|             context?.getString(if (isProgressVisible) R.string.resume else R.string.play_movie_button) |             context?.getString(if (isProgressVisible) R.string.resume else R.string.play_movie_button) | ||||||
|                 ?.let { |                 ?.let { | ||||||
|  | @ -1150,28 +1220,7 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio | ||||||
|             startValue = null |             startValue = null | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         observe(viewModel.selectedSeason) |         observe(viewModel.publicEpisodes) { episodes -> | ||||||
|         { season -> |  | ||||||
|             result_season_button?.text = fromIndexToSeasonText(season) |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         observe(viewModel.seasonSelections) |  | ||||||
|         { seasonList -> |  | ||||||
|             result_season_button?.visibility = if (seasonList.size <= 1) GONE else VISIBLE |  | ||||||
|             result_season_button?.setOnClickListener { |  | ||||||
|                 result_season_button?.popupMenuNoIconsAndNoStringRes( |  | ||||||
|                     items = seasonList |  | ||||||
|                         .map { Pair(it ?: -2, fromIndexToSeasonText(it)) }, |  | ||||||
|                 ) { |  | ||||||
|                     val id = this.itemId |  | ||||||
| 
 |  | ||||||
|                     viewModel.changeSeason(if (id == -2) null else id) |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         observe(viewModel.publicEpisodes) |  | ||||||
|         { episodes -> |  | ||||||
|             when (episodes) { |             when (episodes) { | ||||||
|                 is Resource.Failure -> { |                 is Resource.Failure -> { | ||||||
|                     result_episode_loading?.isVisible = false |                     result_episode_loading?.isVisible = false | ||||||
|  | @ -1193,21 +1242,39 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         observe(viewModel.dubStatus) |         observe(viewModel.dubStatus) { status -> | ||||||
|         { status -> |  | ||||||
|             result_dub_select?.text = status.toString() |             result_dub_select?.text = status.toString() | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         observe(viewModel.dubSubSelections) |         val preferDub = context?.getApiDubstatusSettings()?.all { it == DubStatus.Dubbed } == true | ||||||
|         { range -> | 
 | ||||||
|  |         observe(viewModel.dubSubSelections) { range -> | ||||||
|             dubRange = range |             dubRange = range | ||||||
|  | 
 | ||||||
|  |             if (preferDub && dubRange?.contains(DubStatus.Dubbed) == true){ | ||||||
|  |                 viewModel.changeDubStatus(DubStatus.Dubbed) | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             result_dub_select?.visibility = if (range.size <= 1) GONE else VISIBLE |             result_dub_select?.visibility = if (range.size <= 1) GONE else VISIBLE | ||||||
|  | 
 | ||||||
|  |             if (result_season_button?.isVisible != true && result_episode_select?.isVisible != true) { | ||||||
|  |                 if (result_series_parent?.isVisible == true) | ||||||
|  |                     setFocusUpAndDown(result_resume_series_button, result_dub_select) | ||||||
|  |                 else | ||||||
|  |                     setFocusUpAndDown(result_bookmark_button, result_dub_select) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         result_cast_items?.setOnFocusChangeListener { v, hasFocus -> | ||||||
|  |             // Always escape focus | ||||||
|  |             if (hasFocus) result_bookmark_button?.requestFocus() | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         result_dub_select.setOnClickListener { |         result_dub_select.setOnClickListener { | ||||||
|             val ranges = dubRange |             val ranges = dubRange | ||||||
|             if (ranges != null) { |             if (ranges != null) { | ||||||
|                 it.popupMenuNoIconsAndNoStringRes(ranges.map { status -> |                 it.popupMenuNoIconsAndNoStringRes(ranges | ||||||
|  |                     .map { status -> | ||||||
|                         Pair( |                         Pair( | ||||||
|                             status.ordinal, |                             status.ordinal, | ||||||
|                             status.toString() |                             status.toString() | ||||||
|  | @ -1219,16 +1286,6 @@ class ResultFragment : Fragment(), PanelsChildGestureRegionObserver.GestureRegio | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         observe(viewModel.selectedRange) |  | ||||||
|         { range -> |  | ||||||
|             result_episode_select?.text = range |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         observe(viewModel.rangeOptions) { range -> |  | ||||||
|             episodeRanges = range |  | ||||||
|             result_episode_select?.visibility = if (range.size <= 1) GONE else VISIBLE |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         result_episode_select.setOnClickListener { |         result_episode_select.setOnClickListener { | ||||||
|             val ranges = episodeRanges |             val ranges = episodeRanges | ||||||
|             if (ranges != null) { |             if (ranges != null) { | ||||||
|  |  | ||||||
|  | @ -44,7 +44,6 @@ class ResultViewModel : ViewModel() { | ||||||
|     private var repo: APIRepository? = null |     private var repo: APIRepository? = null | ||||||
|     private var generator: IGenerator? = null |     private var generator: IGenerator? = null | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|     private val _resultResponse: MutableLiveData<Resource<Any?>> = MutableLiveData() |     private val _resultResponse: MutableLiveData<Resource<Any?>> = MutableLiveData() | ||||||
|     private val _episodes: MutableLiveData<List<ResultEpisode>> = MutableLiveData() |     private val _episodes: MutableLiveData<List<ResultEpisode>> = MutableLiveData() | ||||||
|     private val episodeById: MutableLiveData<HashMap<Int, Int>> = |     private val episodeById: MutableLiveData<HashMap<Int, Int>> = | ||||||
|  | @ -190,7 +189,7 @@ class ResultViewModel : ViewModel() { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fun changeDubStatus(status: DubStatus?) { |     fun changeDubStatus(status: DubStatus?) { | ||||||
|         if(status == null) return |         if (status == null) return | ||||||
|         dubSubEpisodes.value?.get(status)?.let { episodes -> |         dubSubEpisodes.value?.get(status)?.let { episodes -> | ||||||
|             id.value?.let { |             id.value?.let { | ||||||
|                 setDub(it, status) |                 setDub(it, status) | ||||||
|  | @ -220,7 +219,10 @@ class ResultViewModel : ViewModel() { | ||||||
|                 currentSubs.add(sub) |                 currentSubs.add(sub) | ||||||
|             }) |             }) | ||||||
| 
 | 
 | ||||||
|             return@safeApiCall Pair(currentLinks.toSet(), currentSubs.toSet()) as Pair<Set<ExtractorLink>, Set<SubtitleData>> |             return@safeApiCall Pair( | ||||||
|  |                 currentLinks.toSet(), | ||||||
|  |                 currentSubs.toSet() | ||||||
|  |             ) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -247,13 +249,15 @@ class ResultViewModel : ViewModel() { | ||||||
|         generator = RepoLinkGenerator(list) |         generator = RepoLinkGenerator(list) | ||||||
| 
 | 
 | ||||||
|         val set = HashMap<Int, Int>() |         val set = HashMap<Int, Int>() | ||||||
|  |         val range = selectedRangeInt.value | ||||||
| 
 | 
 | ||||||
|         list.withIndex().forEach { set[it.value.id] = it.index } |         list.withIndex().forEach { set[it.value.id] = it.index } | ||||||
|         episodeById.postValue(set) |         episodeById.postValue(set) | ||||||
| 
 | 
 | ||||||
|         filterEpisodes( |         filterEpisodes( | ||||||
|             list, |             list, | ||||||
|             if (selection == -1) getResultSeason(localId ?: id.value ?: return) else selection, null |             if (selection == -1) getResultSeason(localId ?: id.value ?: return) else selection, | ||||||
|  |             range | ||||||
|         ) |         ) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -330,9 +334,7 @@ class ResultViewModel : ViewModel() { | ||||||
|                         val status = getDub(mainId) |                         val status = getDub(mainId) | ||||||
|                         val statuses = d.episodes.map { it.key } |                         val statuses = d.episodes.map { it.key } | ||||||
|                         val dubStatus = if (statuses.contains(status)) status else statuses.first() |                         val dubStatus = if (statuses.contains(status)) status else statuses.first() | ||||||
|                         _dubStatus.postValue(dubStatus) |  | ||||||
| 
 | 
 | ||||||
|                         _dubSubSelections.postValue(d.episodes.keys) |  | ||||||
|                         val fillerEpisodes = |                         val fillerEpisodes = | ||||||
|                             if (showFillers) safeApiCall { getFillerEpisodes(d.name) } else null |                             if (showFillers) safeApiCall { getFillerEpisodes(d.name) } else null | ||||||
| 
 | 
 | ||||||
|  | @ -366,10 +368,14 @@ class ResultViewModel : ViewModel() { | ||||||
| 
 | 
 | ||||||
|                             Pair(ep.key, episodes) |                             Pair(ep.key, episodes) | ||||||
|                         }.toMap() |                         }.toMap() | ||||||
|  | 
 | ||||||
|  |                         // These posts needs to be in this order as to make the preferDub in ResultFragment work | ||||||
|                         _dubSubEpisodes.postValue(res) |                         _dubSubEpisodes.postValue(res) | ||||||
|                         res[dubStatus]?.let { episodes -> |                         res[dubStatus]?.let { episodes -> | ||||||
|                             updateEpisodes(mainId, episodes, -1) |                             updateEpisodes(mainId, episodes, -1) | ||||||
|                         } |                         } | ||||||
|  |                         _dubStatus.postValue(dubStatus) | ||||||
|  |                         _dubSubSelections.postValue(d.episodes.keys) | ||||||
|                     } |                     } | ||||||
| 
 | 
 | ||||||
|                     is TvSeriesLoadResponse -> { |                     is TvSeriesLoadResponse -> { | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								app/src/main/res/color/tag_stroke_color.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								app/src/main/res/color/tag_stroke_color.xml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <selector xmlns:android="http://schemas.android.com/apk/res/android"> | ||||||
|  |   <item android:color="?attr/colorPrimary" android:state_checked="true"/> | ||||||
|  |   <item android:color="?attr/colorPrimary" android:state_focused="true"/> | ||||||
|  |   <item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_checked="false"/> | ||||||
|  | </selector> | ||||||
|  | @ -2,45 +2,45 @@ | ||||||
| <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" |     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||||
|     xmlns:tools="http://schemas.android.com/tools" |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|         android:layout_width="match_parent" |  | ||||||
|     android:id="@+id/result_root" |     android:id="@+id/result_root" | ||||||
|  |     android:layout_width="match_parent" | ||||||
|     android:layout_height="match_parent" |     android:layout_height="match_parent" | ||||||
|     android:background="?attr/primaryBlackBackground" |     android:background="?attr/primaryBlackBackground" | ||||||
|     android:clickable="true" |     android:clickable="true" | ||||||
|     android:focusable="true"> |     android:focusable="true"> | ||||||
| 
 | 
 | ||||||
|     <com.facebook.shimmer.ShimmerFrameLayout |     <com.facebook.shimmer.ShimmerFrameLayout | ||||||
|             tools:visibility="gone" |  | ||||||
|             app:shimmer_base_alpha="0.2" |  | ||||||
|             app:shimmer_highlight_alpha="0.3" |  | ||||||
|             app:shimmer_duration="@integer/loading_time" |  | ||||||
|             app:shimmer_auto_start="true" |  | ||||||
|         android:id="@+id/result_loading" |         android:id="@+id/result_loading" | ||||||
|         android:layout_width="match_parent" |         android:layout_width="match_parent" | ||||||
|         android:layout_height="match_parent" |         android:layout_height="match_parent" | ||||||
|         android:layout_gravity="center" |         android:layout_gravity="center" | ||||||
|             android:orientation="vertical"> |         android:orientation="vertical" | ||||||
|  |         app:shimmer_auto_start="true" | ||||||
|  |         app:shimmer_base_alpha="0.2" | ||||||
|  |         app:shimmer_duration="@integer/loading_time" | ||||||
|  |         app:shimmer_highlight_alpha="0.3" | ||||||
|  |         tools:visibility="gone"> | ||||||
| 
 | 
 | ||||||
|         <LinearLayout |         <LinearLayout | ||||||
|                 android:layout_margin="@dimen/result_padding" |  | ||||||
|             android:layout_width="match_parent" |             android:layout_width="match_parent" | ||||||
|             android:layout_height="wrap_content" |             android:layout_height="wrap_content" | ||||||
|  |             android:layout_margin="@dimen/result_padding" | ||||||
|             android:orientation="vertical"> |             android:orientation="vertical"> | ||||||
| 
 | 
 | ||||||
|             <LinearLayout |             <LinearLayout | ||||||
|                     android:layout_marginBottom="@dimen/loading_margin" |  | ||||||
|                     android:orientation="horizontal" |  | ||||||
|                 android:layout_width="match_parent" |                 android:layout_width="match_parent" | ||||||
|                     android:layout_height="match_parent"> |                 android:layout_height="match_parent" | ||||||
|  |                 android:layout_marginBottom="@dimen/loading_margin" | ||||||
|  |                 android:orientation="horizontal"> | ||||||
| 
 | 
 | ||||||
|                 <include layout="@layout/loading_poster" /> |                 <include layout="@layout/loading_poster" /> | ||||||
| 
 | 
 | ||||||
|                 <LinearLayout |                 <LinearLayout | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="match_parent" | ||||||
|                     android:layout_marginStart="@dimen/loading_margin" |                     android:layout_marginStart="@dimen/loading_margin" | ||||||
|                     android:layout_marginEnd="@dimen/loading_margin" |                     android:layout_marginEnd="@dimen/loading_margin" | ||||||
|                         android:orientation="vertical" |                     android:orientation="vertical"> | ||||||
|                         android:layout_width="match_parent" |  | ||||||
|                         android:layout_height="match_parent"> |  | ||||||
| 
 | 
 | ||||||
|                     <include layout="@layout/loading_line" /> |                     <include layout="@layout/loading_line" /> | ||||||
| 
 | 
 | ||||||
|  | @ -76,92 +76,92 @@ | ||||||
|     <LinearLayout |     <LinearLayout | ||||||
|         android:id="@+id/result_loading_error" |         android:id="@+id/result_loading_error" | ||||||
| 
 | 
 | ||||||
|             android:visibility="gone" |  | ||||||
|             tools:visibility="gone" |  | ||||||
|             android:orientation="vertical" |  | ||||||
|             android:layout_gravity="center" |  | ||||||
|         android:layout_width="match_parent" |         android:layout_width="match_parent" | ||||||
|             android:layout_height="wrap_content"> |         android:layout_height="wrap_content" | ||||||
|  |         android:layout_gravity="center" | ||||||
|  |         android:orientation="vertical" | ||||||
|  |         android:visibility="gone" | ||||||
|  |         tools:visibility="gone"> | ||||||
| 
 | 
 | ||||||
|         <com.google.android.material.button.MaterialButton |         <com.google.android.material.button.MaterialButton | ||||||
|                 android:layout_gravity="center" |             android:id="@+id/result_reload_connectionerror" | ||||||
|             style="@style/WhiteButton" |             style="@style/WhiteButton" | ||||||
| 
 | 
 | ||||||
|                 android:layout_margin="5dp" |  | ||||||
| 
 |  | ||||||
|                 app:icon="@drawable/ic_baseline_autorenew_24" |  | ||||||
|                 android:text="@string/reload_error" |  | ||||||
|                 android:id="@+id/result_reload_connectionerror" |  | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|                 android:minWidth="200dp" /> | 
 | ||||||
|  |             android:layout_gravity="center" | ||||||
|  |             android:layout_margin="5dp" | ||||||
|  |             android:minWidth="200dp" | ||||||
|  |             android:text="@string/reload_error" | ||||||
|  |             app:icon="@drawable/ic_baseline_autorenew_24" /> | ||||||
| 
 | 
 | ||||||
|         <com.google.android.material.button.MaterialButton |         <com.google.android.material.button.MaterialButton | ||||||
|                 android:layout_gravity="center" |             android:id="@+id/result_reload_connection_open_in_browser" | ||||||
|             style="@style/BlackButton" |             style="@style/BlackButton" | ||||||
| 
 | 
 | ||||||
|                 android:layout_margin="5dp" |  | ||||||
| 
 |  | ||||||
|                 app:icon="@drawable/ic_baseline_public_24" |  | ||||||
|                 android:text="@string/result_open_in_browser" |  | ||||||
|                 android:id="@+id/result_reload_connection_open_in_browser" |  | ||||||
|             android:layout_width="wrap_content" |             android:layout_width="wrap_content" | ||||||
|                 android:minWidth="200dp" /> | 
 | ||||||
|  |             android:layout_gravity="center" | ||||||
|  |             android:layout_margin="5dp" | ||||||
|  |             android:minWidth="200dp" | ||||||
|  |             android:text="@string/result_open_in_browser" | ||||||
|  |             app:icon="@drawable/ic_baseline_public_24" /> | ||||||
| 
 | 
 | ||||||
|         <TextView |         <TextView | ||||||
|  |             android:id="@+id/result_error_text" | ||||||
|  |             android:layout_width="match_parent" | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:layout_gravity="center" | ||||||
|             android:layout_margin="5dp" |             android:layout_margin="5dp" | ||||||
|             android:gravity="center" |             android:gravity="center" | ||||||
|                 android:layout_gravity="center" |             android:textColor="?attr/textColor" /> | ||||||
|                 android:id="@+id/result_error_text" |  | ||||||
|                 android:textColor="?attr/textColor" |  | ||||||
|                 android:layout_width="match_parent" |  | ||||||
|                 android:layout_height="wrap_content" /> |  | ||||||
|     </LinearLayout> |     </LinearLayout> | ||||||
| 
 | 
 | ||||||
|     <FrameLayout |     <FrameLayout | ||||||
|             android:visibility="gone" |  | ||||||
|             tools:visibility="visible" |  | ||||||
|         android:id="@+id/result_finish_loading" |         android:id="@+id/result_finish_loading" | ||||||
|         android:layout_width="match_parent" |         android:layout_width="match_parent" | ||||||
|             android:layout_height="match_parent"> |         android:layout_height="match_parent" | ||||||
|  |         android:visibility="gone" | ||||||
|  |         tools:visibility="visible"> | ||||||
| 
 | 
 | ||||||
|         <FrameLayout |         <FrameLayout | ||||||
|             android:id="@+id/result_poster_blur_holder" |             android:id="@+id/result_poster_blur_holder" | ||||||
| 
 | 
 | ||||||
|                 android:visibility="visible" |  | ||||||
|             android:layout_width="match_parent" |             android:layout_width="match_parent" | ||||||
|                 android:layout_height="230dp"> |             android:layout_height="230dp" | ||||||
|  |             android:visibility="visible"> | ||||||
| 
 | 
 | ||||||
|             <ImageView |             <ImageView | ||||||
|                 android:id="@+id/result_poster_blur" |                 android:id="@+id/result_poster_blur" | ||||||
| 
 | 
 | ||||||
|                 android:layout_width="match_parent" |                 android:layout_width="match_parent" | ||||||
|                 android:layout_height="match_parent" |                 android:layout_height="match_parent" | ||||||
|                     android:scaleType="centerCrop" |  | ||||||
|                 android:alpha="0" |                 android:alpha="0" | ||||||
|                     tools:src="@drawable/example_poster" |  | ||||||
|                 android:background="?attr/primaryGrayBackground" |                 android:background="?attr/primaryGrayBackground" | ||||||
|                     tools:ignore="ContentDescription" /> |                 android:scaleType="centerCrop" | ||||||
|  |                 tools:ignore="ContentDescription" | ||||||
|  |                 tools:src="@drawable/example_poster" /> | ||||||
| 
 | 
 | ||||||
|             <ImageView |             <ImageView | ||||||
|                     android:src="@drawable/background_shadow" |  | ||||||
|                     android:layout_gravity="bottom" |  | ||||||
|                 android:layout_width="match_parent" |                 android:layout_width="match_parent" | ||||||
|                 android:layout_height="30dp" |                 android:layout_height="30dp" | ||||||
|  |                 android:layout_gravity="bottom" | ||||||
|  |                 android:src="@drawable/background_shadow" | ||||||
|                 tools:ignore="ContentDescription" /> |                 tools:ignore="ContentDescription" /> | ||||||
|         </FrameLayout> |         </FrameLayout> | ||||||
| 
 | 
 | ||||||
|         <androidx.core.widget.NestedScrollView |         <androidx.core.widget.NestedScrollView | ||||||
|             android:id="@+id/result_scroll" |             android:id="@+id/result_scroll" | ||||||
|                 android:background="?attr/primaryGrayBackground" |  | ||||||
| 
 |  | ||||||
|             android:layout_width="match_parent" |             android:layout_width="match_parent" | ||||||
|                 android:layout_height="wrap_content"> | 
 | ||||||
|  |             android:layout_height="wrap_content" | ||||||
|  |             android:background="?attr/primaryGrayBackground"> | ||||||
| 
 | 
 | ||||||
|             <LinearLayout |             <LinearLayout | ||||||
|                     android:background="?attr/primaryBlackBackground" |  | ||||||
|                     android:orientation="vertical" |  | ||||||
|                 android:layout_width="match_parent" |                 android:layout_width="match_parent" | ||||||
|                     android:layout_height="match_parent"> |                 android:layout_height="match_parent" | ||||||
|  |                 android:background="?attr/primaryBlackBackground" | ||||||
|  |                 android:orientation="vertical"> | ||||||
| 
 | 
 | ||||||
|                 <!-- |                 <!-- | ||||||
|                 <FrameLayout |                 <FrameLayout | ||||||
|  | @ -261,59 +261,59 @@ | ||||||
|                 </FrameLayout>--> |                 </FrameLayout>--> | ||||||
| 
 | 
 | ||||||
|                 <LinearLayout |                 <LinearLayout | ||||||
|  |                     android:layout_width="match_parent" | ||||||
|  |                     android:layout_height="match_parent" | ||||||
|                     android:clipToPadding="false" |                     android:clipToPadding="false" | ||||||
|                     android:orientation="vertical" |                     android:orientation="vertical" | ||||||
|                     android:paddingStart="@dimen/result_padding" |                     android:paddingStart="@dimen/result_padding" | ||||||
|                         android:paddingEnd="@dimen/result_padding" |                     android:paddingEnd="@dimen/result_padding"> | ||||||
|                         android:layout_width="match_parent" |  | ||||||
|                         android:layout_height="match_parent"> |  | ||||||
| 
 | 
 | ||||||
|                     <LinearLayout |                     <LinearLayout | ||||||
|                             android:visibility="visible" |  | ||||||
|                             android:layout_marginBottom="15dp" |  | ||||||
|                             android:layout_marginTop="10dp" |  | ||||||
|                             android:orientation="horizontal" |  | ||||||
|                         android:layout_width="match_parent" |                         android:layout_width="match_parent" | ||||||
|                             android:layout_height="wrap_content"> |                         android:layout_height="wrap_content" | ||||||
|  |                         android:layout_marginTop="10dp" | ||||||
|  |                         android:layout_marginBottom="15dp" | ||||||
|  |                         android:orientation="horizontal" | ||||||
|  |                         android:visibility="visible"> | ||||||
| 
 | 
 | ||||||
|                         <androidx.cardview.widget.CardView |                         <androidx.cardview.widget.CardView | ||||||
|                             android:id="@+id/result_poster_holder" |                             android:id="@+id/result_poster_holder" | ||||||
|                                 app:cardCornerRadius="@dimen/rounded_image_radius" |  | ||||||
|                             android:layout_width="100dp" |                             android:layout_width="100dp" | ||||||
|                                 android:layout_height="140dp"> |                             android:layout_height="140dp" | ||||||
|  |                             app:cardCornerRadius="@dimen/rounded_image_radius"> | ||||||
| 
 | 
 | ||||||
|                             <ImageView |                             <ImageView | ||||||
|                                     android:foreground="@drawable/outline_drawable" |  | ||||||
| 
 |  | ||||||
|                                 android:id="@+id/result_poster" |                                 android:id="@+id/result_poster" | ||||||
|                                     android:scaleType="centerCrop" | 
 | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|                                 android:layout_height="match_parent" |                                 android:layout_height="match_parent" | ||||||
|                                     tools:src="@drawable/example_poster" |                                 android:contentDescription="@string/result_poster_img_des" | ||||||
|                                     android:contentDescription="@string/result_poster_img_des" /> |                                 android:foreground="@drawable/outline_drawable" | ||||||
|  |                                 android:scaleType="centerCrop" | ||||||
|  |                                 tools:src="@drawable/example_poster" /> | ||||||
|                         </androidx.cardview.widget.CardView> |                         </androidx.cardview.widget.CardView> | ||||||
| 
 | 
 | ||||||
|                         <LinearLayout |                         <LinearLayout | ||||||
|                                 android:layout_marginStart="10dp" |  | ||||||
|                                 android:orientation="vertical" |  | ||||||
|                             android:layout_width="match_parent" |                             android:layout_width="match_parent" | ||||||
|                                 android:layout_height="match_parent"> |                             android:layout_height="match_parent" | ||||||
|  |                             android:layout_marginStart="10dp" | ||||||
|  |                             android:orientation="vertical"> | ||||||
| 
 | 
 | ||||||
|                             <TextView |                             <TextView | ||||||
|                                     android:maxLines="2" |  | ||||||
|                                     android:layout_marginBottom="5dp" |  | ||||||
|                                 android:id="@+id/result_title" |                                 android:id="@+id/result_title" | ||||||
|                                     tools:text="The Perfect Run The Perfect Run" |                                 android:layout_width="wrap_content" | ||||||
|  |                                 android:layout_height="wrap_content" | ||||||
|  |                                 android:layout_marginBottom="5dp" | ||||||
|  |                                 android:maxLines="2" | ||||||
|  |                                 android:textColor="?attr/textColor" | ||||||
|                                 android:textSize="20sp" |                                 android:textSize="20sp" | ||||||
|                                 android:textStyle="bold" |                                 android:textStyle="bold" | ||||||
|                                     android:textColor="?attr/textColor" |                                 tools:text="The Perfect Run The Perfect Run" /> | ||||||
|                                     android:layout_width="wrap_content" |  | ||||||
|                                     android:layout_height="wrap_content" /> |  | ||||||
| 
 | 
 | ||||||
|                             <com.lagradost.cloudstream3.widget.FlowLayout |                             <com.lagradost.cloudstream3.widget.FlowLayout | ||||||
|                                     app:itemSpacing="10dp" |  | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|                                     android:layout_height="wrap_content"> |                                 android:layout_height="wrap_content" | ||||||
|  |                                 app:itemSpacing="10dp"> | ||||||
| 
 | 
 | ||||||
|                                 <com.google.android.material.button.MaterialButton |                                 <com.google.android.material.button.MaterialButton | ||||||
|                                     android:id="@+id/result_meta_site" |                                     android:id="@+id/result_meta_site" | ||||||
|  | @ -327,9 +327,9 @@ | ||||||
|                                     tools:text="Movie" /> |                                     tools:text="Movie" /> | ||||||
| 
 | 
 | ||||||
|                                 <TextView |                                 <TextView | ||||||
|                                         tools:text="2022" |  | ||||||
|                                     android:id="@+id/result_meta_year" |                                     android:id="@+id/result_meta_year" | ||||||
|                                         style="@style/ResultInfoText" /> |                                     style="@style/ResultInfoText" | ||||||
|  |                                     tools:text="2022" /> | ||||||
| 
 | 
 | ||||||
|                                 <TextView |                                 <TextView | ||||||
|                                     android:id="@+id/result_meta_rating" |                                     android:id="@+id/result_meta_rating" | ||||||
|  | @ -342,8 +342,8 @@ | ||||||
|                                     tools:text="Ongoing" /> |                                     tools:text="Ongoing" /> | ||||||
| 
 | 
 | ||||||
|                                 <TextView |                                 <TextView | ||||||
|                                         style="@style/ResultInfoText" |  | ||||||
|                                     android:id="@+id/result_meta_duration" |                                     android:id="@+id/result_meta_duration" | ||||||
|  |                                     style="@style/ResultInfoText" | ||||||
|                                     tools:text="121min" /> |                                     tools:text="121min" /> | ||||||
|                             </com.lagradost.cloudstream3.widget.FlowLayout> |                             </com.lagradost.cloudstream3.widget.FlowLayout> | ||||||
| 
 | 
 | ||||||
|  | @ -352,106 +352,109 @@ | ||||||
|                                 android:layout_height="match_parent"> |                                 android:layout_height="match_parent"> | ||||||
| 
 | 
 | ||||||
|                                 <TextView |                                 <TextView | ||||||
|                                         android:textColor="?attr/textColor" |                                     android:id="@+id/result_descript" | ||||||
|  |                                     android:layout_width="match_parent" | ||||||
|  |                                     android:layout_height="wrap_content" | ||||||
|                                     android:foreground="@drawable/outline_drawable" |                                     android:foreground="@drawable/outline_drawable" | ||||||
|                                         android:paddingTop="5dp" |  | ||||||
|                                         android:paddingBottom="0dp" |  | ||||||
|                                     android:nextFocusUp="@id/result_back" |                                     android:nextFocusUp="@id/result_back" | ||||||
|                                     android:nextFocusDown="@id/result_bookmark_button" |                                     android:nextFocusDown="@id/result_bookmark_button" | ||||||
| 
 | 
 | ||||||
|                                         android:id="@+id/result_descript" |                                     android:paddingTop="5dp" | ||||||
|  |                                     android:paddingBottom="0dp" | ||||||
|  |                                     android:textColor="?attr/textColor" | ||||||
|                                     android:textSize="15sp" |                                     android:textSize="15sp" | ||||||
|                                         tools:text="Ryan Quicksave Romano is an eccentric adventurer with a strange power: he can create a save-point in time and redo his life whenever he dies. Arriving in New Rome, the glitzy capital of sin of a rebuilding Europe, he finds the city torn between mega-corporations, sponsored heroes, superpowered criminals, and true monsters. It's a time of chaos, where potions can grant the power to rule the world and dangers lurk everywhere. " |                                     tools:text="Ryan Quicksave Romano is an eccentric adventurer with a strange power: he can create a save-point in time and redo his life whenever he dies. Arriving in New Rome, the glitzy capital of sin of a rebuilding Europe, he finds the city torn between mega-corporations, sponsored heroes, superpowered criminals, and true monsters. It's a time of chaos, where potions can grant the power to rule the world and dangers lurk everywhere. " /> | ||||||
|                                         android:layout_width="match_parent" |  | ||||||
|                                         android:layout_height="wrap_content" /> |  | ||||||
| 
 | 
 | ||||||
|                                 <ImageView |                                 <ImageView | ||||||
|                                         android:src="@drawable/background_shadow" |  | ||||||
|                                         android:layout_gravity="bottom" |  | ||||||
|                                     android:layout_width="match_parent" |                                     android:layout_width="match_parent" | ||||||
|                                     android:layout_height="30dp" |                                     android:layout_height="30dp" | ||||||
|  |                                     android:layout_gravity="bottom" | ||||||
|  |                                     android:src="@drawable/background_shadow" | ||||||
|                                     tools:ignore="ContentDescription" /> |                                     tools:ignore="ContentDescription" /> | ||||||
|                             </FrameLayout> |                             </FrameLayout> | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
|                     </LinearLayout> |                     </LinearLayout> | ||||||
| 
 | 
 | ||||||
|                     <com.google.android.material.button.MaterialButton |                     <com.google.android.material.button.MaterialButton | ||||||
|                             tools:visibility="gone" |                         android:id="@+id/result_bookmark_button" | ||||||
|                             android:layout_marginTop="0dp" |                         style="@style/BlackButton" | ||||||
|                             android:paddingTop="0dp" |                         android:layout_width="wrap_content" | ||||||
|  |                         android:layout_gravity="center_vertical" | ||||||
|                         android:layout_marginStart="0dp" |                         android:layout_marginStart="0dp" | ||||||
|                             android:layout_marginBottom="10dp" |                         android:layout_marginTop="0dp" | ||||||
|                             android:minWidth="100dp" |  | ||||||
| 
 | 
 | ||||||
|                             app:icon="@drawable/ic_baseline_bookmark_24" |                         android:layout_marginBottom="10dp" | ||||||
|                         android:backgroundTint="?attr/primaryBlackBackground" |                         android:backgroundTint="?attr/primaryBlackBackground" | ||||||
| 
 | 
 | ||||||
|  |                         android:minWidth="100dp" | ||||||
|                         android:nextFocusLeft="@id/result_back" |                         android:nextFocusLeft="@id/result_back" | ||||||
|                             android:nextFocusDown="@id/result_play_movie" |  | ||||||
|                             android:nextFocusUp="@id/result_descript" |  | ||||||
|                         android:nextFocusRight="@id/result_search" |                         android:nextFocusRight="@id/result_search" | ||||||
|  |                         android:nextFocusUp="@id/result_descript" | ||||||
| 
 | 
 | ||||||
|                             android:layout_gravity="center_vertical" |                         android:nextFocusDown="@id/result_play_movie" | ||||||
|  |                         android:paddingTop="0dp" | ||||||
|                         app:cornerRadius="4dp" |                         app:cornerRadius="4dp" | ||||||
|                             android:id="@+id/result_bookmark_button" |                         app:icon="@drawable/ic_baseline_bookmark_24" | ||||||
|                         tools:text="Bookmark" |                         tools:text="Bookmark" | ||||||
|                             android:layout_width="wrap_content" |                         tools:visibility="gone"> | ||||||
|                             style="@style/BlackButton"> |  | ||||||
| 
 | 
 | ||||||
|                         <requestFocus /> |                         <requestFocus /> | ||||||
|                     </com.google.android.material.button.MaterialButton> |                     </com.google.android.material.button.MaterialButton> | ||||||
| 
 | 
 | ||||||
|                     <TextView |                     <TextView | ||||||
|                             android:maxLines="2" |  | ||||||
|                             android:ellipsize="end" |  | ||||||
|                             android:layout_marginBottom="5dp" |  | ||||||
|                             android:textColor="?attr/grayTextColor" |  | ||||||
|                         android:id="@+id/result_cast_text" |                         android:id="@+id/result_cast_text" | ||||||
|                             android:textSize="15sp" |  | ||||||
|                             tools:text="Cast: Joe Ligma" |  | ||||||
|                         android:layout_width="wrap_content" |                         android:layout_width="wrap_content" | ||||||
|                             android:layout_height="wrap_content" /> |                         android:layout_height="wrap_content" | ||||||
|  |                         android:layout_marginBottom="5dp" | ||||||
|  |                         android:ellipsize="end" | ||||||
|  |                         android:maxLines="2" | ||||||
|  |                         android:textColor="?attr/grayTextColor" | ||||||
|  |                         android:textSize="15sp" | ||||||
|  |                         tools:text="Cast: Joe Ligma" /> | ||||||
| 
 | 
 | ||||||
|                     <androidx.recyclerview.widget.RecyclerView |                     <androidx.recyclerview.widget.RecyclerView | ||||||
|                             android:paddingTop="5dp" |  | ||||||
|                             tools:itemCount="2" |  | ||||||
|                             android:fadingEdge="horizontal" |  | ||||||
|                             android:requiresFadingEdge="horizontal" |  | ||||||
|                             android:orientation="horizontal" |  | ||||||
|                             app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" |  | ||||||
|                         android:id="@+id/result_cast_items" |                         android:id="@+id/result_cast_items" | ||||||
|                         android:layout_width="match_parent" |                         android:layout_width="match_parent" | ||||||
|  |                         android:descendantFocusability="afterDescendants" | ||||||
|                         android:layout_height="wrap_content" |                         android:layout_height="wrap_content" | ||||||
|  |                         android:fadingEdge="horizontal" | ||||||
|  |                         android:focusableInTouchMode="false" | ||||||
|  |                         android:focusable="false" | ||||||
|  |                         android:orientation="horizontal" | ||||||
|  |                         android:paddingTop="5dp" | ||||||
|  |                         android:requiresFadingEdge="horizontal" | ||||||
|  |                         app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" | ||||||
|  |                         tools:itemCount="2" | ||||||
|                         tools:listitem="@layout/cast_item" /> |                         tools:listitem="@layout/cast_item" /> | ||||||
| 
 | 
 | ||||||
|                     <TextView |                     <TextView | ||||||
|                             android:textColor="?attr/grayTextColor" |  | ||||||
|                         android:id="@+id/result_vpn" |                         android:id="@+id/result_vpn" | ||||||
|                             android:textSize="15sp" |  | ||||||
|                             tools:text="@string/vpn_torrent" |  | ||||||
|                         android:layout_width="match_parent" |                         android:layout_width="match_parent" | ||||||
|                             android:layout_height="wrap_content" /> |                         android:layout_height="wrap_content" | ||||||
|  |                         android:textColor="?attr/grayTextColor" | ||||||
|  |                         android:textSize="15sp" | ||||||
|  |                         tools:text="@string/vpn_torrent" /> | ||||||
| 
 | 
 | ||||||
|                     <TextView |                     <TextView | ||||||
|  |                         android:id="@+id/result_info" | ||||||
|  |                         android:layout_width="match_parent" | ||||||
|  |                         android:layout_height="wrap_content" | ||||||
|                         android:layout_marginBottom="5dp" |                         android:layout_marginBottom="5dp" | ||||||
|                         android:textColor="?attr/grayTextColor" |                         android:textColor="?attr/grayTextColor" | ||||||
|                             android:id="@+id/result_info" |  | ||||||
|                         android:textSize="15sp" |                         android:textSize="15sp" | ||||||
|                             tools:text="@string/provider_info_meta" |                         tools:text="@string/provider_info_meta" /> | ||||||
|                             android:layout_width="match_parent" |  | ||||||
|                             android:layout_height="wrap_content" /> |  | ||||||
| 
 | 
 | ||||||
|                     <TextView |                     <TextView | ||||||
|                             android:visibility="gone" |  | ||||||
|                         android:id="@+id/result_tag_holder" |                         android:id="@+id/result_tag_holder" | ||||||
|                         android:layout_width="wrap_content" |                         android:layout_width="wrap_content" | ||||||
|                         android:layout_height="wrap_content" |                         android:layout_height="wrap_content" | ||||||
|                             android:text="@string/result_tags" |  | ||||||
|                             android:textSize="17sp" |  | ||||||
|                         android:layout_marginTop="10dp" |                         android:layout_marginTop="10dp" | ||||||
|                         android:layout_marginBottom="10dp" |                         android:layout_marginBottom="10dp" | ||||||
|  |                         android:text="@string/result_tags" | ||||||
|  |                         android:textColor="?attr/textColor" | ||||||
|  |                         android:textSize="17sp" | ||||||
|                         android:textStyle="normal" |                         android:textStyle="normal" | ||||||
|                             android:textColor="?attr/textColor" /> |                         android:visibility="gone" /> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|                     <com.lagradost.cloudstream3.widget.FlowLayout |                     <com.lagradost.cloudstream3.widget.FlowLayout | ||||||
|  | @ -460,57 +463,58 @@ | ||||||
|                         android:layout_height="wrap_content" /> |                         android:layout_height="wrap_content" /> | ||||||
| 
 | 
 | ||||||
|                     <TextView |                     <TextView | ||||||
|                             android:paddingTop="50dp" |  | ||||||
|                             android:visibility="gone" |  | ||||||
|                             android:textColor="?attr/textColor" |  | ||||||
|                         android:id="@+id/result_coming_soon" |                         android:id="@+id/result_coming_soon" | ||||||
|                             android:textSize="20sp" |  | ||||||
|                             android:gravity="center" |  | ||||||
|                             android:textStyle="bold" |  | ||||||
|                             android:layout_gravity="center" |  | ||||||
|                             android:text="@string/coming_soon" |  | ||||||
|                         android:layout_width="match_parent" |                         android:layout_width="match_parent" | ||||||
|                             android:layout_height="wrap_content" /> |                         android:layout_height="wrap_content" | ||||||
|  |                         android:layout_gravity="center" | ||||||
|  |                         android:gravity="center" | ||||||
|  |                         android:paddingTop="50dp" | ||||||
|  |                         android:text="@string/coming_soon" | ||||||
|  |                         android:textColor="?attr/textColor" | ||||||
|  |                         android:textSize="20sp" | ||||||
|  |                         android:textStyle="bold" | ||||||
|  |                         android:visibility="gone" /> | ||||||
| 
 | 
 | ||||||
|                     <LinearLayout |                     <LinearLayout | ||||||
|                             android:orientation="vertical" |  | ||||||
|                         android:id="@+id/result_data_holder" |                         android:id="@+id/result_data_holder" | ||||||
|                         android:layout_width="match_parent" |                         android:layout_width="match_parent" | ||||||
|                             android:layout_height="wrap_content"> |                         android:layout_height="wrap_content" | ||||||
|  |                         android:orientation="vertical"> | ||||||
|  | 
 | ||||||
|                         <com.google.android.material.button.MaterialButton |                         <com.google.android.material.button.MaterialButton | ||||||
|                                 android:visibility="gone" |  | ||||||
|                                 android:text="@string/add_sync" |  | ||||||
|                                 android:layout_width="match_parent" |  | ||||||
|                                 app:icon="@drawable/ic_baseline_add_24" |  | ||||||
|                             android:id="@+id/result_add_sync" |                             android:id="@+id/result_add_sync" | ||||||
|  |                             style="@style/WhiteButton" | ||||||
|  |                             android:layout_width="match_parent" | ||||||
|  |                             android:layout_gravity="center_vertical" | ||||||
|  |                             android:layout_marginStart="0dp" | ||||||
|  | 
 | ||||||
|  |                             android:layout_marginBottom="10dp" | ||||||
|  |                             android:text="@string/add_sync" | ||||||
|  |                             android:visibility="gone" | ||||||
|  |                             app:icon="@drawable/ic_baseline_add_24" /> | ||||||
|  | 
 | ||||||
|  |                         <LinearLayout | ||||||
|  |                             android:id="@+id/result_movie_parent" | ||||||
|  |                             android:layout_width="match_parent" | ||||||
|  |                             android:layout_height="wrap_content" | ||||||
|  |                             android:layout_marginTop="5dp" | ||||||
|  |                             android:orientation="vertical" | ||||||
|  |                             tools:visibility="visible"> | ||||||
|  | 
 | ||||||
|  |                             <com.google.android.material.button.MaterialButton | ||||||
|  |                                 android:id="@+id/result_play_movie" | ||||||
|  |                                 style="@style/WhiteButton" | ||||||
|  |                                 android:layout_width="match_parent" | ||||||
| 
 | 
 | ||||||
|                                 android:layout_gravity="center_vertical" |                                 android:layout_gravity="center_vertical" | ||||||
|                                 android:layout_marginStart="0dp" |                                 android:layout_marginStart="0dp" | ||||||
|                                 android:layout_marginBottom="10dp" |                                 android:layout_marginEnd="0dp" | ||||||
|                                 style="@style/WhiteButton" /> |  | ||||||
| 
 |  | ||||||
|                         <LinearLayout |  | ||||||
|                                 tools:visibility="visible" |  | ||||||
|                                 android:layout_marginTop="5dp" |  | ||||||
|                                 android:orientation="vertical" |  | ||||||
|                                 android:id="@+id/result_movie_parent" |  | ||||||
|                                 android:layout_width="match_parent" |  | ||||||
|                                 android:layout_height="wrap_content"> |  | ||||||
| 
 |  | ||||||
|                             <com.google.android.material.button.MaterialButton |  | ||||||
|                                 android:layout_marginBottom="10dp" |                                 android:layout_marginBottom="10dp" | ||||||
|                                 android:nextFocusUp="@id/result_bookmark_button" |                                 android:nextFocusUp="@id/result_bookmark_button" | ||||||
|                                 android:nextFocusDown="@id/result_download_movie" |                                 android:nextFocusDown="@id/result_download_movie" | ||||||
| 
 |  | ||||||
|                                     android:id="@+id/result_play_movie" |  | ||||||
|                                     style="@style/WhiteButton" |  | ||||||
|                                     android:layout_marginStart="0dp" |  | ||||||
|                                     android:layout_marginEnd="0dp" |  | ||||||
|                                     android:visibility="visible" |  | ||||||
|                                     android:layout_gravity="center_vertical" |  | ||||||
|                                 android:text="@string/play_movie_button" |                                 android:text="@string/play_movie_button" | ||||||
|                                     app:icon="@drawable/ic_baseline_play_arrow_24" |                                 android:visibility="visible" | ||||||
|                                     android:layout_width="match_parent" /> |                                 app:icon="@drawable/ic_baseline_play_arrow_24" /> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|                             <!--<com.google.android.material.button.MaterialButton |                             <!--<com.google.android.material.button.MaterialButton | ||||||
|  | @ -536,80 +540,80 @@ | ||||||
|                                 android:layout_height="wrap_content"> |                                 android:layout_height="wrap_content"> | ||||||
| 
 | 
 | ||||||
|                                 <com.google.android.material.button.MaterialButton |                                 <com.google.android.material.button.MaterialButton | ||||||
|                                         android:nextFocusUp="@id/result_play_movie" |  | ||||||
|                                         android:nextFocusDown="@id/result_season_button" |  | ||||||
| 
 |  | ||||||
|                                     android:id="@+id/result_download_movie" |                                     android:id="@+id/result_download_movie" | ||||||
|                                     style="@style/BlackButton" |                                     style="@style/BlackButton" | ||||||
|  | 
 | ||||||
|  |                                     android:layout_width="match_parent" | ||||||
|  |                                     android:layout_gravity="center_vertical" | ||||||
|                                     android:layout_marginStart="0dp" |                                     android:layout_marginStart="0dp" | ||||||
|                                     android:layout_marginEnd="0dp" |                                     android:layout_marginEnd="0dp" | ||||||
|                                         android:visibility="visible" |  | ||||||
|                                         android:layout_gravity="center_vertical" |  | ||||||
| 
 |  | ||||||
|                                     android:clickable="true" |                                     android:clickable="true" | ||||||
|                                     android:focusable="true" |                                     android:focusable="true" | ||||||
|                                         android:layout_width="match_parent" /> | 
 | ||||||
|  |                                     android:nextFocusUp="@id/result_play_movie" | ||||||
|  |                                     android:nextFocusDown="@id/result_season_button" | ||||||
|  |                                     android:visibility="visible" /> | ||||||
| 
 | 
 | ||||||
|                                 <LinearLayout |                                 <LinearLayout | ||||||
|                                         android:gravity="center" |  | ||||||
|                                         android:orientation="horizontal" |  | ||||||
|                                         android:layout_gravity="center" |  | ||||||
|                                     android:layout_width="match_parent" |                                     android:layout_width="match_parent" | ||||||
|                                         android:layout_height="wrap_content"> |                                     android:layout_height="wrap_content" | ||||||
|  |                                     android:layout_gravity="center" | ||||||
|  |                                     android:gravity="center" | ||||||
|  |                                     android:orientation="horizontal"> | ||||||
| 
 | 
 | ||||||
|                                     <androidx.core.widget.ContentLoadingProgressBar |                                     <androidx.core.widget.ContentLoadingProgressBar | ||||||
|                                         android:id="@+id/result_movie_progress_downloaded" |                                         android:id="@+id/result_movie_progress_downloaded" | ||||||
|  |                                         style="?android:attr/progressBarStyleHorizontal" | ||||||
|                                         android:layout_width="25dp" |                                         android:layout_width="25dp" | ||||||
|                                         android:layout_height="25dp" |                                         android:layout_height="25dp" | ||||||
|                                             android:indeterminate="false" |  | ||||||
|                                             android:progressDrawable="@drawable/circular_progress_bar_filled" |  | ||||||
|                                             android:background="@drawable/circle_shape" |  | ||||||
|                                             style="?android:attr/progressBarStyleHorizontal" |  | ||||||
|                                             android:max="100" |  | ||||||
|                                             android:layout_margin="5dp" |  | ||||||
|                                             android:paddingEnd="5dp" |  | ||||||
|                                             android:paddingStart="5dp" |  | ||||||
|                                         android:layout_gravity="end|center_vertical" |                                         android:layout_gravity="end|center_vertical" | ||||||
|  |                                         android:layout_margin="5dp" | ||||||
|  |                                         android:background="@drawable/circle_shape" | ||||||
|  |                                         android:indeterminate="false" | ||||||
|  |                                         android:max="100" | ||||||
|  |                                         android:paddingStart="5dp" | ||||||
|  |                                         android:paddingEnd="5dp" | ||||||
|                                         android:progress="30" |                                         android:progress="30" | ||||||
|  |                                         android:progressDrawable="@drawable/circular_progress_bar_filled" | ||||||
|                                         android:visibility="visible" /> |                                         android:visibility="visible" /> | ||||||
| 
 | 
 | ||||||
|                                     <ImageView |                                     <ImageView | ||||||
|                                         android:id="@+id/result_movie_download_icon" |                                         android:id="@+id/result_movie_download_icon" | ||||||
|                                             app:tint="?attr/white" |                                         android:layout_width="30dp" | ||||||
|                                             android:visibility="visible" |  | ||||||
|                                         android:layout_height="wrap_content" |                                         android:layout_height="wrap_content" | ||||||
|                                         android:layout_gravity="center" |                                         android:layout_gravity="center" | ||||||
|                                             android:layout_width="30dp" |  | ||||||
|                                         android:background="?selectableItemBackgroundBorderless" |                                         android:background="?selectableItemBackgroundBorderless" | ||||||
|  |                                         android:contentDescription="@string/download" | ||||||
|                                         android:src="@drawable/ic_baseline_play_arrow_24" |                                         android:src="@drawable/ic_baseline_play_arrow_24" | ||||||
|                                             android:contentDescription="@string/download" /> |                                         android:visibility="visible" | ||||||
|  |                                         app:tint="?attr/white" /> | ||||||
| 
 | 
 | ||||||
|                                     <TextView |                                     <TextView | ||||||
|                                         android:id="@+id/result_movie_download_text" |                                         android:id="@+id/result_movie_download_text" | ||||||
|  |                                         android:layout_width="wrap_content" | ||||||
|  |                                         android:layout_height="match_parent" | ||||||
|  |                                         android:gravity="center" | ||||||
|                                         android:letterSpacing="0.09" |                                         android:letterSpacing="0.09" | ||||||
|  |                                         android:textAllCaps="false" | ||||||
|                                         android:textColor="?attr/textColor" |                                         android:textColor="?attr/textColor" | ||||||
|                                         android:textSize="15sp" |                                         android:textSize="15sp" | ||||||
|                                         android:textStyle="bold" |                                         android:textStyle="bold" | ||||||
|                                             android:gravity="center" |                                         tools:text="Downloading" /> | ||||||
|                                             android:textAllCaps="false" |  | ||||||
|                                             tools:text="Downloading" |  | ||||||
|                                             android:layout_width="wrap_content" |  | ||||||
|                                             android:layout_height="match_parent" /> |  | ||||||
| 
 | 
 | ||||||
|                                     <TextView |                                     <TextView | ||||||
|                                             android:visibility="gone" |  | ||||||
|                                         android:id="@+id/result_movie_download_text_precentage" |                                         android:id="@+id/result_movie_download_text_precentage" | ||||||
|  |                                         android:layout_width="wrap_content" | ||||||
|  |                                         android:layout_height="match_parent" | ||||||
|  |                                         android:gravity="center" | ||||||
|                                         android:letterSpacing="0.09" |                                         android:letterSpacing="0.09" | ||||||
|                                         android:paddingStart="5dp" |                                         android:paddingStart="5dp" | ||||||
|                                         android:paddingEnd="5dp" |                                         android:paddingEnd="5dp" | ||||||
|  |                                         android:textAllCaps="false" | ||||||
|                                         android:textColor="?attr/textColor" |                                         android:textColor="?attr/textColor" | ||||||
|                                         android:textSize="15sp" |                                         android:textSize="15sp" | ||||||
|                                         android:textStyle="bold" |                                         android:textStyle="bold" | ||||||
|                                             android:gravity="center" |                                         android:visibility="gone" | ||||||
|                                             android:textAllCaps="false" |                                         tools:text="68%" /> | ||||||
|                                             tools:text="68%" |  | ||||||
|                                             android:layout_width="wrap_content" |  | ||||||
|                                             android:layout_height="match_parent" /> |  | ||||||
|                                 </LinearLayout> |                                 </LinearLayout> | ||||||
|                             </FrameLayout> |                             </FrameLayout> | ||||||
| 
 | 
 | ||||||
|  | @ -639,90 +643,90 @@ | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
| 
 | 
 | ||||||
|                         <LinearLayout |                         <LinearLayout | ||||||
|                                 android:visibility="gone" |  | ||||||
|                                 tools:visibility="visible" |  | ||||||
|                                 android:layout_marginTop="5dp" |  | ||||||
|                                 android:orientation="vertical" |  | ||||||
|                             android:id="@+id/result_series_parent" |                             android:id="@+id/result_series_parent" | ||||||
|                             android:layout_width="match_parent" |                             android:layout_width="match_parent" | ||||||
|                                 android:layout_height="wrap_content"> |                             android:layout_height="wrap_content" | ||||||
|  |                             android:layout_marginTop="5dp" | ||||||
|  |                             android:orientation="vertical" | ||||||
|  |                             android:visibility="gone" | ||||||
|  |                             tools:visibility="visible"> | ||||||
| 
 | 
 | ||||||
|                             <com.google.android.material.button.MaterialButton |                             <com.google.android.material.button.MaterialButton | ||||||
|                                     android:layout_marginBottom="10dp" |  | ||||||
|                                     android:nextFocusUp="@id/result_bookmark_button" |  | ||||||
|                                     android:nextFocusDown="@id/result_download_movie" |  | ||||||
| 
 |  | ||||||
|                                 android:id="@+id/result_resume_series_button" |                                 android:id="@+id/result_resume_series_button" | ||||||
|                                 style="@style/WhiteButton" |                                 style="@style/WhiteButton" | ||||||
|  |                                 android:layout_width="match_parent" | ||||||
|  | 
 | ||||||
|  |                                 android:layout_gravity="center_vertical" | ||||||
|                                 android:layout_marginStart="0dp" |                                 android:layout_marginStart="0dp" | ||||||
|                                 android:layout_marginEnd="0dp" |                                 android:layout_marginEnd="0dp" | ||||||
|                                     android:visibility="visible" |  | ||||||
|                                     tools:visibility="visible" |  | ||||||
|                                     android:layout_gravity="center_vertical" |  | ||||||
|                                     android:text="@string/resume" |  | ||||||
|                                     app:icon="@drawable/ic_baseline_play_arrow_24" |  | ||||||
|                                     android:layout_width="match_parent" /> |  | ||||||
| 
 |  | ||||||
|                             <com.google.android.material.button.MaterialButton |  | ||||||
|                                 android:layout_marginBottom="10dp" |                                 android:layout_marginBottom="10dp" | ||||||
|                                 android:nextFocusUp="@id/result_bookmark_button" |                                 android:nextFocusUp="@id/result_bookmark_button" | ||||||
|                                 android:nextFocusDown="@id/result_download_movie" |                                 android:nextFocusDown="@id/result_download_movie" | ||||||
|  |                                 android:text="@string/resume" | ||||||
|  |                                 android:visibility="visible" | ||||||
|  |                                 app:icon="@drawable/ic_baseline_play_arrow_24" | ||||||
|  |                                 tools:visibility="visible" /> | ||||||
| 
 | 
 | ||||||
|  |                             <com.google.android.material.button.MaterialButton | ||||||
|                                 android:id="@+id/result_next_series_button" |                                 android:id="@+id/result_next_series_button" | ||||||
|                                 style="@style/WhiteButton" |                                 style="@style/WhiteButton" | ||||||
|  |                                 android:layout_width="match_parent" | ||||||
|  | 
 | ||||||
|  |                                 android:layout_gravity="center_vertical" | ||||||
|                                 android:layout_marginStart="0dp" |                                 android:layout_marginStart="0dp" | ||||||
|                                 android:layout_marginEnd="0dp" |                                 android:layout_marginEnd="0dp" | ||||||
|                                     android:visibility="gone" |                                 android:layout_marginBottom="10dp" | ||||||
|                                     android:layout_gravity="center_vertical" |                                 android:nextFocusUp="@id/result_bookmark_button" | ||||||
|  |                                 android:nextFocusDown="@id/result_download_movie" | ||||||
|                                 android:text="@string/next_episode" |                                 android:text="@string/next_episode" | ||||||
|                                     app:icon="@drawable/cast_ic_mini_controller_skip_next" |                                 android:visibility="gone" | ||||||
|                                     android:layout_width="match_parent" /> |                                 app:icon="@drawable/cast_ic_mini_controller_skip_next" /> | ||||||
| 
 | 
 | ||||||
|                             <TextView |                             <TextView | ||||||
|                                     android:textColor="?attr/textColor" |  | ||||||
|                                 android:id="@+id/result_resume_series_title" |                                 android:id="@+id/result_resume_series_title" | ||||||
|                                     android:textStyle="bold" |  | ||||||
|                                     android:textSize="17sp" |  | ||||||
|                                     tools:text="S1E1 Episode 1" |  | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|                                     android:layout_height="wrap_content" /> |                                 android:layout_height="wrap_content" | ||||||
|  |                                 android:textColor="?attr/textColor" | ||||||
|  |                                 android:textSize="17sp" | ||||||
|  |                                 android:textStyle="bold" | ||||||
|  |                                 tools:text="S1E1 Episode 1" /> | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
| 
 | 
 | ||||||
|                         <LinearLayout |                         <LinearLayout | ||||||
|                                 tools:visibility="visible" |  | ||||||
|                                 android:visibility="gone" |  | ||||||
|                                 android:paddingTop="10dp" |  | ||||||
|                             android:id="@+id/result_resume_progress_holder" |                             android:id="@+id/result_resume_progress_holder" | ||||||
|                                 android:orientation="horizontal" |  | ||||||
|                             android:layout_width="match_parent" |                             android:layout_width="match_parent" | ||||||
|                                 android:layout_height="wrap_content"> |                             android:layout_height="wrap_content" | ||||||
|  |                             android:orientation="horizontal" | ||||||
|  |                             android:paddingTop="10dp" | ||||||
|  |                             android:visibility="gone" | ||||||
|  |                             tools:visibility="visible"> | ||||||
| 
 | 
 | ||||||
|                             <androidx.core.widget.ContentLoadingProgressBar |                             <androidx.core.widget.ContentLoadingProgressBar | ||||||
|                                     android:layout_height="20dp" |  | ||||||
|                                     tools:progress="50" |  | ||||||
|                                 android:id="@+id/result_resume_series_progress" |                                 android:id="@+id/result_resume_series_progress" | ||||||
|                                     android:indeterminate="false" |  | ||||||
|                                 style="?android:attr/progressBarStyleHorizontal" |                                 style="?android:attr/progressBarStyleHorizontal" | ||||||
|                                     android:progressBackgroundTint="?attr/colorPrimary" |  | ||||||
|                                     android:max="100" |  | ||||||
|                                     android:layout_gravity="end|center_vertical" |  | ||||||
|                                     android:progress="0" |  | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|  |                                 android:layout_height="20dp" | ||||||
|  |                                 android:layout_gravity="end|center_vertical" | ||||||
|                                 android:layout_weight="1" |                                 android:layout_weight="1" | ||||||
|  |                                 android:indeterminate="false" | ||||||
|  |                                 android:max="100" | ||||||
|  |                                 android:progress="0" | ||||||
|  |                                 android:progressBackgroundTint="?attr/colorPrimary" | ||||||
|                                 android:visibility="visible" |                                 android:visibility="visible" | ||||||
|  |                                 tools:progress="50" | ||||||
|                                 tools:visibility="visible" /> |                                 tools:visibility="visible" /> | ||||||
| 
 | 
 | ||||||
|                             <TextView |                             <TextView | ||||||
|                                 android:id="@+id/result_resume_series_progress_text" |                                 android:id="@+id/result_resume_series_progress_text" | ||||||
|                                     android:layout_gravity="center" |  | ||||||
|                                     android:paddingStart="10dp" |  | ||||||
|                                     android:gravity="center" |  | ||||||
|                                     tools:text="69m\nremaining" |  | ||||||
|                                     android:layout_weight="0" |  | ||||||
|                                     android:textColor="?attr/grayTextColor" |  | ||||||
|                                 android:layout_width="wrap_content" |                                 android:layout_width="wrap_content" | ||||||
|                                 android:layout_height="wrap_content" |                                 android:layout_height="wrap_content" | ||||||
|                                     tools:ignore="RtlSymmetry" /> |                                 android:layout_gravity="center" | ||||||
|  |                                 android:layout_weight="0" | ||||||
|  |                                 android:gravity="center" | ||||||
|  |                                 android:paddingStart="10dp" | ||||||
|  |                                 android:textColor="?attr/grayTextColor" | ||||||
|  |                                 tools:ignore="RtlSymmetry" | ||||||
|  |                                 tools:text="69m\nremaining" /> | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
| 
 | 
 | ||||||
|                         <LinearLayout |                         <LinearLayout | ||||||
|  | @ -732,86 +736,85 @@ | ||||||
|                             android:orientation="vertical"> |                             android:orientation="vertical"> | ||||||
| 
 | 
 | ||||||
|                             <LinearLayout |                             <LinearLayout | ||||||
|                                     android:layout_marginBottom="10dp" |  | ||||||
|                                     android:orientation="horizontal" |  | ||||||
|                                     android:gravity="center_vertical" |  | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|                                     android:layout_height="wrap_content"> |                                 android:layout_height="wrap_content" | ||||||
|  |                                 android:layout_marginBottom="10dp" | ||||||
|  |                                 android:gravity="center_vertical" | ||||||
|  |                                 android:orientation="horizontal"> | ||||||
| 
 | 
 | ||||||
|                                 <com.google.android.material.button.MaterialButton |                                 <com.google.android.material.button.MaterialButton | ||||||
|                                         tools:visibility="visible" |  | ||||||
|                                         tools:text="Season 1" |  | ||||||
|                                         android:nextFocusUp="@id/result_descript" |  | ||||||
|                                         android:nextFocusRight="@id/result_episode_select" |  | ||||||
|                                         android:nextFocusLeft="@id/result_episode_select" |  | ||||||
|                                         android:nextFocusDown="@id/result_episodes" |  | ||||||
| 
 |  | ||||||
|                                     android:id="@+id/result_season_button" |                                     android:id="@+id/result_season_button" | ||||||
|                                         android:visibility="gone" |                                     style="@style/MultiSelectButton" | ||||||
|                                     android:layout_gravity="center_vertical" |                                     android:layout_gravity="center_vertical" | ||||||
|                                     android:layout_marginStart="0dp" |                                     android:layout_marginStart="0dp" | ||||||
|                                         style="@style/MultiSelectButton" /> |                                     android:nextFocusLeft="@id/result_episode_select" | ||||||
|  |                                     android:nextFocusRight="@id/result_episode_select" | ||||||
|  |                                     android:nextFocusUp="@id/result_descript" | ||||||
|  |                                     android:nextFocusDown="@id/result_episodes" | ||||||
|  |                                     android:visibility="gone" | ||||||
|  |                                     tools:text="Season 1" | ||||||
|  |                                     tools:visibility="visible" /> | ||||||
| 
 | 
 | ||||||
|                                 <com.google.android.material.button.MaterialButton |                                 <com.google.android.material.button.MaterialButton | ||||||
|                                         tools:visibility="visible" |  | ||||||
|                                         tools:text="50-100" |  | ||||||
| 
 |  | ||||||
|                                         android:nextFocusUp="@id/result_descript" |  | ||||||
|                                         android:nextFocusRight="@id/result_season_button" |  | ||||||
|                                         android:nextFocusLeft="@id/result_season_button" |  | ||||||
|                                         android:nextFocusDown="@id/result_episodes" |  | ||||||
| 
 |  | ||||||
|                                     android:id="@+id/result_episode_select" |                                     android:id="@+id/result_episode_select" | ||||||
|                                         android:visibility="gone" |                                     style="@style/MultiSelectButton" | ||||||
|  | 
 | ||||||
|                                     android:layout_gravity="center_vertical" |                                     android:layout_gravity="center_vertical" | ||||||
|                                     android:layout_marginStart="0dp" |                                     android:layout_marginStart="0dp" | ||||||
|                                         style="@style/MultiSelectButton" /> |                                     android:nextFocusLeft="@id/result_season_button" | ||||||
| 
 |                                     android:nextFocusRight="@id/result_season_button" | ||||||
|                                 <com.google.android.material.button.MaterialButton |  | ||||||
|                                         tools:visibility="visible" |  | ||||||
|                                         tools:text="Dubbed" |  | ||||||
| 
 | 
 | ||||||
|                                     android:nextFocusUp="@id/result_descript" |                                     android:nextFocusUp="@id/result_descript" | ||||||
|                                         android:nextFocusRight="@id/result_season_button" |  | ||||||
|                                         android:nextFocusLeft="@id/result_season_button" |  | ||||||
|                                     android:nextFocusDown="@id/result_episodes" |                                     android:nextFocusDown="@id/result_episodes" | ||||||
| 
 |  | ||||||
|                                         android:id="@+id/result_dub_select" |  | ||||||
|                                     android:visibility="gone" |                                     android:visibility="gone" | ||||||
|  |                                     tools:text="50-100" | ||||||
|  |                                     tools:visibility="visible" /> | ||||||
|  | 
 | ||||||
|  |                                 <com.google.android.material.button.MaterialButton | ||||||
|  |                                     android:id="@+id/result_dub_select" | ||||||
|  |                                     style="@style/MultiSelectButton" | ||||||
|  | 
 | ||||||
|                                     android:layout_gravity="center_vertical" |                                     android:layout_gravity="center_vertical" | ||||||
|                                     android:layout_marginStart="0dp" |                                     android:layout_marginStart="0dp" | ||||||
|                                         style="@style/MultiSelectButton" /> |                                     android:nextFocusLeft="@id/result_season_button" | ||||||
|  |                                     android:nextFocusRight="@id/result_season_button" | ||||||
|  | 
 | ||||||
|  |                                     android:nextFocusUp="@id/result_descript" | ||||||
|  |                                     android:nextFocusDown="@id/result_episodes" | ||||||
|  |                                     android:visibility="gone" | ||||||
|  |                                     tools:text="Dubbed" | ||||||
|  |                                     tools:visibility="visible" /> | ||||||
| 
 | 
 | ||||||
|                                 <TextView |                                 <TextView | ||||||
|  |                                     android:id="@+id/result_episodes_text" | ||||||
|                                     android:layout_width="wrap_content" |                                     android:layout_width="wrap_content" | ||||||
|                                     android:layout_height="wrap_content" |                                     android:layout_height="wrap_content" | ||||||
|                                         android:id="@+id/result_episodes_text" |                                     android:layout_gravity="center_vertical" | ||||||
|                                         tools:text="8 Episodes" |  | ||||||
|                                         android:textSize="17sp" |  | ||||||
|                                     android:paddingTop="10dp" |                                     android:paddingTop="10dp" | ||||||
|                                     android:paddingBottom="10dp" |                                     android:paddingBottom="10dp" | ||||||
|                                         android:layout_gravity="center_vertical" |                                     android:textColor="?attr/textColor" | ||||||
|  |                                     android:textSize="17sp" | ||||||
|                                     android:textStyle="normal" |                                     android:textStyle="normal" | ||||||
|                                         android:textColor="?attr/textColor" /> |                                     tools:text="8 Episodes" /> | ||||||
|                             </LinearLayout> |                             </LinearLayout> | ||||||
| 
 | 
 | ||||||
|                             <com.facebook.shimmer.ShimmerFrameLayout |                             <com.facebook.shimmer.ShimmerFrameLayout | ||||||
|                                     tools:visibility="visible" |  | ||||||
|                                     app:shimmer_base_alpha="0.2" |  | ||||||
|                                     app:shimmer_highlight_alpha="0.3" |  | ||||||
|                                     app:shimmer_duration="@integer/loading_time" |  | ||||||
|                                     app:shimmer_auto_start="true" |  | ||||||
|                                 android:id="@+id/result_episode_loading" |                                 android:id="@+id/result_episode_loading" | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|                                 android:layout_height="match_parent" |                                 android:layout_height="match_parent" | ||||||
|                                 android:layout_gravity="center" |                                 android:layout_gravity="center" | ||||||
|                                 android:layout_marginTop="15dp" |                                 android:layout_marginTop="15dp" | ||||||
|                                     android:orientation="vertical"> |                                 android:orientation="vertical" | ||||||
|  |                                 app:shimmer_auto_start="true" | ||||||
|  |                                 app:shimmer_base_alpha="0.2" | ||||||
|  |                                 app:shimmer_duration="@integer/loading_time" | ||||||
|  |                                 app:shimmer_highlight_alpha="0.3" | ||||||
|  |                                 tools:visibility="visible"> | ||||||
| 
 | 
 | ||||||
|                                 <LinearLayout |                                 <LinearLayout | ||||||
|                                         android:orientation="vertical" |  | ||||||
|                                     android:layout_width="match_parent" |                                     android:layout_width="match_parent" | ||||||
|                                         android:layout_height="wrap_content"> |                                     android:layout_height="wrap_content" | ||||||
|  |                                     android:orientation="vertical"> | ||||||
| 
 | 
 | ||||||
|                                     <include layout="@layout/loading_episode" /> |                                     <include layout="@layout/loading_episode" /> | ||||||
| 
 | 
 | ||||||
|  | @ -831,14 +834,14 @@ | ||||||
|                                     android:layout_height="50dp" />--> |                                     android:layout_height="50dp" />--> | ||||||
| 
 | 
 | ||||||
|                             <androidx.recyclerview.widget.RecyclerView |                             <androidx.recyclerview.widget.RecyclerView | ||||||
|                                     android:descendantFocusability="afterDescendants" |  | ||||||
|                                 android:id="@+id/result_episodes" |                                 android:id="@+id/result_episodes" | ||||||
|                                     android:clipToPadding="false" |  | ||||||
|                                     android:layout_marginTop="0dp" |  | ||||||
|                                     android:paddingBottom="100dp" |  | ||||||
|                                     tools:listitem="@layout/result_episode" |  | ||||||
|                                 android:layout_width="match_parent" |                                 android:layout_width="match_parent" | ||||||
|                                     android:layout_height="wrap_content" /> |                                 android:layout_height="wrap_content" | ||||||
|  |                                 android:layout_marginTop="0dp" | ||||||
|  |                                 android:clipToPadding="false" | ||||||
|  |                                 android:descendantFocusability="afterDescendants" | ||||||
|  |                                 android:paddingBottom="100dp" | ||||||
|  |                                 tools:listitem="@layout/result_episode" /> | ||||||
|                         </LinearLayout> |                         </LinearLayout> | ||||||
|                     </LinearLayout> |                     </LinearLayout> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,28 +1,28 @@ | ||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|         xmlns:tools="http://schemas.android.com/tools" |  | ||||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" |     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||||
|  |     xmlns:tools="http://schemas.android.com/tools" | ||||||
|     android:layout_width="wrap_content" |     android:layout_width="wrap_content" | ||||||
|     android:layout_height="wrap_content" |     android:layout_height="wrap_content" | ||||||
|         android:paddingLeft="2dp" |  | ||||||
|         android:paddingRight="2dp" |  | ||||||
|         android:paddingTop="-10dp" |  | ||||||
|     android:layout_marginTop="-4dp" |     android:layout_marginTop="-4dp" | ||||||
|         android:layout_marginBottom="-4dp"> |     android:layout_marginBottom="-4dp" | ||||||
|  |     android:paddingLeft="2dp" | ||||||
|  |     android:paddingTop="-10dp" | ||||||
|  |     android:paddingRight="2dp"> | ||||||
|     <!--app:strokeColor="@color/colorAccent"--> |     <!--app:strokeColor="@color/colorAccent"--> | ||||||
| 
 | 
 | ||||||
|     <com.google.android.material.button.MaterialButton |     <com.google.android.material.button.MaterialButton | ||||||
|             android:minHeight="0dp" |         android:id="@+id/result_tag_card" | ||||||
|             android:minWidth="0dp" |         style="@style/Tag" | ||||||
|             android:layout_height="37dp" |  | ||||||
|             android:textAllCaps="false" |  | ||||||
|             android:textSize="12sp" |  | ||||||
|         android:layout_width="wrap_content" |         android:layout_width="wrap_content" | ||||||
|             app:cornerRadius="100dp" |         android:layout_height="37dp" | ||||||
|             tools:text="Test" |         android:minWidth="0dp" | ||||||
|  |         android:minHeight="0dp" | ||||||
|  |         android:textAllCaps="false" | ||||||
|         android:textColor="?attr/textColor" |         android:textColor="?attr/textColor" | ||||||
|             style="@style/Widget.MaterialComponents.Button.OutlinedButton" |         android:textSize="12sp" | ||||||
|             android:id="@+id/result_tag_card"> |         app:cornerRadius="100dp" | ||||||
|  |         tools:text="Test"> | ||||||
| 
 | 
 | ||||||
|     </com.google.android.material.button.MaterialButton> |     </com.google.android.material.button.MaterialButton> | ||||||
| </FrameLayout> | </FrameLayout> | ||||||
|  | @ -186,8 +186,7 @@ | ||||||
|         <item name="android:windowBackground">?attr/primaryBlackBackground</item> |         <item name="android:windowBackground">?attr/primaryBlackBackground</item> | ||||||
|     </style> |     </style> | ||||||
| 
 | 
 | ||||||
|     <style name="AppSearchViewStyle" |     <style name="AppSearchViewStyle" parent="Theme.MaterialComponents.NoActionBar"> | ||||||
|            parent="Theme.MaterialComponents.NoActionBar"> |  | ||||||
|         <item name="android:searchIcon">@drawable/search_icon</item> |         <item name="android:searchIcon">@drawable/search_icon</item> | ||||||
|         <item name="android:queryHint">@string/search_hint</item> |         <item name="android:queryHint">@string/search_hint</item> | ||||||
|         <item name="android:background">@color/transparent</item> |         <item name="android:background">@color/transparent</item> | ||||||
|  | @ -212,8 +211,7 @@ | ||||||
|         <item name="behavior_peekHeight">512dp</item> |         <item name="behavior_peekHeight">512dp</item> | ||||||
|     </style> |     </style> | ||||||
| 
 | 
 | ||||||
|     <style name="PreferenceTheme" parent="@style/AppTheme"> |     <style name="PreferenceTheme" parent="@style/AppTheme"></style> | ||||||
|     </style> |  | ||||||
| 
 | 
 | ||||||
|     <style name="Theme.AlertDialog" parent="ThemeOverlay.MaterialComponents.Dialog.Alert"> |     <style name="Theme.AlertDialog" parent="ThemeOverlay.MaterialComponents.Dialog.Alert"> | ||||||
|         <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> |         <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> | ||||||
|  | @ -229,6 +227,7 @@ | ||||||
|     <style name="AppButtonStyle" parent="android:Widget.Holo.Button"> |     <style name="AppButtonStyle" parent="android:Widget.Holo.Button"> | ||||||
|         <item name="android:fontFamily">@font/google_sans</item> |         <item name="android:fontFamily">@font/google_sans</item> | ||||||
|     </style> |     </style> | ||||||
|  | 
 | ||||||
|     <style name="AppEditStyle" parent="android:Widget.EditText"> |     <style name="AppEditStyle" parent="android:Widget.EditText"> | ||||||
|         <item name="android:fontFamily">@font/google_sans</item> |         <item name="android:fontFamily">@font/google_sans</item> | ||||||
|     </style> |     </style> | ||||||
|  | @ -262,6 +261,7 @@ | ||||||
|         <item name="tabMinWidth">75dp</item> |         <item name="tabMinWidth">75dp</item> | ||||||
|         <item name="tabMode">scrollable</item>--> |         <item name="tabMode">scrollable</item>--> | ||||||
|     </style> |     </style> | ||||||
|  | 
 | ||||||
|     <style name="AlertDialogCustom" parent="Theme.AppCompat.Dialog.Alert"> |     <style name="AlertDialogCustom" parent="Theme.AppCompat.Dialog.Alert"> | ||||||
|         <item name="android:windowFullscreen">true</item> |         <item name="android:windowFullscreen">true</item> | ||||||
|         <item name="android:textColor">?attr/textColor</item> |         <item name="android:textColor">?attr/textColor</item> | ||||||
|  | @ -278,9 +278,11 @@ | ||||||
|         <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> |         <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> | ||||||
|         <item name="android:windowBackground">@drawable/dialog__window_background</item> |         <item name="android:windowBackground">@drawable/dialog__window_background</item> | ||||||
|     </style> |     </style> | ||||||
|  | 
 | ||||||
|     <style name="AlertDialogCustomTransparent" parent="Theme.AppCompat.Dialog.Alert"> |     <style name="AlertDialogCustomTransparent" parent="Theme.AppCompat.Dialog.Alert"> | ||||||
|         <item name="android:windowBackground">@color/transparent</item> |         <item name="android:windowBackground">@color/transparent</item> | ||||||
|     </style> |     </style> | ||||||
|  | 
 | ||||||
|     <style name="AlertDialogCustomBlack" parent="Theme.AppCompat.Dialog.Alert"> |     <style name="AlertDialogCustomBlack" parent="Theme.AppCompat.Dialog.Alert"> | ||||||
|         <item name="android:windowBackground">?attr/primaryBlackBackground</item> |         <item name="android:windowBackground">?attr/primaryBlackBackground</item> | ||||||
|         <item name="android:layout_width">fill_parent</item> |         <item name="android:layout_width">fill_parent</item> | ||||||
|  | @ -451,6 +453,10 @@ | ||||||
|         <item name="strokeColor">@color/toggle_button_outline</item> |         <item name="strokeColor">@color/toggle_button_outline</item> | ||||||
|     </style> |     </style> | ||||||
| 
 | 
 | ||||||
|  |     <style name="Tag" parent="Widget.MaterialComponents.Button.OutlinedButton"> | ||||||
|  |         <item name="strokeColor">@color/tag_stroke_color</item> | ||||||
|  |     </style> | ||||||
|  | 
 | ||||||
|     <style name="VideoButtonTV"> |     <style name="VideoButtonTV"> | ||||||
|         <item name="android:stateListAnimator">@null</item> |         <item name="android:stateListAnimator">@null</item> | ||||||
|         <item name="strokeColor">@color/transparent</item> |         <item name="strokeColor">@color/transparent</item> | ||||||
|  | @ -495,26 +501,34 @@ | ||||||
|         <item name="castPlayButtonDrawable">@drawable/ic_baseline_play_arrow_24</item> |         <item name="castPlayButtonDrawable">@drawable/ic_baseline_play_arrow_24</item> | ||||||
|         <item name="castPauseButtonDrawable">@drawable/netflix_pause</item> |         <item name="castPauseButtonDrawable">@drawable/netflix_pause</item> | ||||||
|         <item name="castStopButtonDrawable">@drawable/cast_ic_expanded_controller_stop</item> |         <item name="castStopButtonDrawable">@drawable/cast_ic_expanded_controller_stop</item> | ||||||
|         <item name="castSkipPreviousButtonDrawable">@drawable/cast_ic_expanded_controller_skip_previous</item> |         <item name="castSkipPreviousButtonDrawable"> | ||||||
|         <item name="castSkipNextButtonDrawable">@drawable/cast_ic_expanded_controller_skip_next</item> |             @drawable/cast_ic_expanded_controller_skip_previous | ||||||
|  |         </item> | ||||||
|  |         <item name="castSkipNextButtonDrawable">@drawable/cast_ic_expanded_controller_skip_next | ||||||
|  |         </item> | ||||||
|         <item name="castRewind30ButtonDrawable">@drawable/go_back_30</item> |         <item name="castRewind30ButtonDrawable">@drawable/go_back_30</item> | ||||||
|         <item name="castForward30ButtonDrawable">@drawable/go_forward_30</item> |         <item name="castForward30ButtonDrawable">@drawable/go_forward_30</item> | ||||||
|     </style> |     </style> | ||||||
|  | 
 | ||||||
|     <style name="CustomCastMiniController" parent="CastMiniController"> |     <style name="CustomCastMiniController" parent="CastMiniController"> | ||||||
|         <item name="castMiniControllerLoadingIndicatorColor">?attr/colorPrimary</item> |         <item name="castMiniControllerLoadingIndicatorColor">?attr/colorPrimary</item> | ||||||
|         <item name="castShowImageThumbnail">true</item> |         <item name="castShowImageThumbnail">true</item> | ||||||
| 
 | 
 | ||||||
|         <item name="castTitleTextAppearance">@style/TextAppearance.AppCompat.Subhead</item> |         <item name="castTitleTextAppearance">@style/TextAppearance.AppCompat.Subhead</item> | ||||||
|         <item name="castSubtitleTextAppearance">@style/TextAppearance.AppCompat.Caption</item> |         <item name="castSubtitleTextAppearance">@style/TextAppearance.AppCompat.Caption</item> | ||||||
|         <item name="castBackground">@color/transparent</item> <!--CHECK bitDarkerGrayBackground darkBackground--> |         <item name="castBackground">@color/transparent | ||||||
|  |         </item> <!--CHECK bitDarkerGrayBackground darkBackground--> | ||||||
|         <item name="castProgressBarColor">?attr/colorPrimary</item> |         <item name="castProgressBarColor">?attr/colorPrimary</item> | ||||||
|         <item name="castStopButtonDrawable">@drawable/cast_ic_mini_controller_stop</item>' |         <item name="castStopButtonDrawable">@drawable/cast_ic_mini_controller_stop</item>' | ||||||
|         <item name="castLargeStopButtonDrawable">@drawable/cast_ic_mini_controller_stop_large</item> |         <item name="castLargeStopButtonDrawable">@drawable/cast_ic_mini_controller_stop_large</item> | ||||||
|         <item name="castSkipPreviousButtonDrawable">@drawable/cast_ic_mini_controller_skip_prev</item> |         <item name="castSkipPreviousButtonDrawable">@drawable/cast_ic_mini_controller_skip_prev | ||||||
|  |         </item> | ||||||
|         <item name="castSkipNextButtonDrawable">@drawable/cast_ic_mini_controller_skip_next</item> |         <item name="castSkipNextButtonDrawable">@drawable/cast_ic_mini_controller_skip_next</item> | ||||||
|         <item name="castRewind30ButtonDrawable">@drawable/go_back_30</item> |         <item name="castRewind30ButtonDrawable">@drawable/go_back_30</item> | ||||||
|         <item name="castForward30ButtonDrawable">@drawable/go_forward_30</item> |         <item name="castForward30ButtonDrawable">@drawable/go_forward_30</item> | ||||||
|         <item name="castMuteToggleButtonDrawable">@drawable/cast_ic_mini_controller_mute</item> |         <item name="castMuteToggleButtonDrawable">@drawable/cast_ic_mini_controller_mute</item> | ||||||
|         <item name="castClosedCaptionsButtonDrawable">@drawable/cast_ic_mini_controller_closed_caption</item> |         <item name="castClosedCaptionsButtonDrawable"> | ||||||
|  |             @drawable/cast_ic_mini_controller_closed_caption | ||||||
|  |         </item> | ||||||
|     </style> |     </style> | ||||||
| </resources> | </resources> | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue