change animations for bottom sheet

pull/44/head
Denis Çerri 3 years ago
parent d860511ce9
commit 2bfb998e4a
No known key found for this signature in database
GPG Key ID: 95C43D517D830350

@ -133,7 +133,7 @@
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="12">
<list size="13">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
@ -146,12 +146,13 @@
<item index="9" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
<item index="10" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.qual.Nullable" />
<item index="11" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NullableType" />
<item index="12" class="java.lang.String" itemvalue="org.jspecify.nullness.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="11">
<list size="12">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
@ -163,6 +164,7 @@
<item index="8" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullType" />
<item index="9" class="java.lang.String" itemvalue="org.checkerframework.checker.nullness.compatqual.NonNullDecl" />
<item index="10" class="java.lang.String" itemvalue="org.eclipse.jdt.annotation.NonNull" />
<item index="11" class="java.lang.String" itemvalue="org.jspecify.nullness.NonNull" />
</list>
</value>
</option>

@ -72,9 +72,8 @@ android {
signingConfig signingConfigs.debug
}
benchmark {
dev {
initWith buildTypes.release
proguardFiles 'baseline-profiles-rules.pro'
}
debug {
@ -169,4 +168,7 @@ dependencies {
implementation "com.squareup.okhttp3:logging-interceptor:4.7.2"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
}

@ -32,9 +32,6 @@
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".receiver.ShareActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.SEND" />
@ -47,6 +44,21 @@
<data android:mimeType="application/txt" />
</intent-filter>
</activity>
<activity android:name=".receiver.ShareActivity"
android:exported="true">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.SEND" />-->
<!-- <category android:name="android.intent.category.DEFAULT" />-->
<!-- <data android:mimeType="text/plain" />-->
<!-- </intent-filter>-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.SEND" />-->
<!-- <category android:name="android.intent.category.DEFAULT"/>-->
<!-- <data android:mimeType="application/txt" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name=".ui.settings.SettingsActivity"

@ -1,30 +1,16 @@
package com.deniscerri.ytdlnis
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import android.widget.Toast
import androidx.preference.PreferenceManager
import androidx.work.Configuration
import androidx.work.WorkManager
import com.deniscerri.ytdlnis.util.NotificationUtil
import com.deniscerri.ytdlnis.util.UpdateUtil
import com.google.android.material.color.DynamicColors
import com.yausername.aria2c.Aria2c
import com.yausername.ffmpeg.FFmpeg
import com.yausername.youtubedl_android.YoutubeDL
import com.yausername.youtubedl_android.YoutubeDLException
import io.reactivex.Completable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.exceptions.UndeliverableException
import io.reactivex.observers.DisposableCompletableObserver
import io.reactivex.plugins.RxJavaPlugins
import io.reactivex.schedulers.Schedulers
import java.io.File
import java.util.concurrent.Executors
class App : Application() {

@ -235,8 +235,8 @@ class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener{
sortSheet = BottomSheetDialog(requireContext())
sortSheet!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
sortSheet!!.setContentView(R.layout.history_sort_sheet)
val newest = sortSheet!!.findViewById<TextView>(R.id.newest)
val oldest = sortSheet!!.findViewById<TextView>(R.id.oldest)
val newest = sortSheet!!.findViewById<TextView>(R.id.date)
val oldest = sortSheet!!.findViewById<TextView>(R.id.title)
newest!!.setOnClickListener {
historyViewModel.setSorting(HistorySort.DESC)
sortSheet!!.cancel()
@ -245,7 +245,7 @@ class HistoryFragment : Fragment(), HistoryAdapter.OnItemClickListener{
historyViewModel.setSorting(HistorySort.ASC)
sortSheet!!.cancel()
}
val cancel = sortSheet!!.findViewById<TextView>(R.id.cancel)
val cancel = sortSheet!!.findViewById<TextView>(R.id.author)
cancel!!.setOnClickListener { sortSheet!!.cancel() }
sortSheet!!.show()
sortSheet!!.window!!.setLayout(

@ -135,6 +135,8 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
showSingleDownloadSheet(it[0], DownloadViewModel.Type.video)
}
}
}else{
downloadAllFabCoordinator!!.visibility = GONE
}
firstBoot = false
}
@ -169,6 +171,7 @@ class HomeFragment : Fragment(), HomeAdapter.OnItemClickListener, View.OnClickLi
inputQueriesLength = inputQueries!!.size
Handler(Looper.getMainLooper()).post { scrollToTop() }
val thread = Thread {
resultViewModel.parseQuery(inputQueries!!.pop()!!, true)
while (!inputQueries!!.isEmpty()) {
inputQuery = inputQueries!!.pop()
resultViewModel.parseQuery(inputQuery!!, false)

@ -0,0 +1,24 @@
package com.deniscerri.ytdlnis.ui.downloadcard
import android.view.View
import androidx.viewpager2.widget.ViewPager2
import kotlin.math.abs
class BackgroundToForegroundPageTransformer : ViewPager2.PageTransformer {
override fun transformPage(page: View, pos: Float) {
val scale = if (pos < 0) pos + 1f else abs(1f - pos)
page.scaleX = scale
page.scaleY = scale
page.pivotX = page.width * 0.5f
page.pivotY = page.height * 0.5f
page.alpha = if (pos < -1f || pos > 1f) 0f else 1f - (scale - 1f)
page.post {
val wMeasureSpec = View.MeasureSpec.makeMeasureSpec(page.width, View.MeasureSpec.EXACTLY)
val hMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
page.measure(wMeasureSpec, hMeasureSpec)
page.minimumHeight = hMeasureSpec
}
}
}

@ -9,7 +9,10 @@ import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.AutoCompleteTextView
import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
@ -18,16 +21,12 @@ import com.deniscerri.ytdlnis.MainActivity
import com.deniscerri.ytdlnis.R
import com.deniscerri.ytdlnis.database.models.DownloadItem
import com.deniscerri.ytdlnis.database.models.ResultItem
import com.deniscerri.ytdlnis.database.repository.DownloadRepository
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel
import com.deniscerri.ytdlnis.database.viewmodel.ResultViewModel
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type
import com.deniscerri.ytdlnis.databinding.FragmentHomeBinding
import com.deniscerri.ytdlnis.util.FileUtil
import com.google.android.material.textfield.TextInputLayout
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import com.deniscerri.ytdlnis.database.viewmodel.DownloadViewModel.Type
class DownloadAudioFragment(private var resultItem: ResultItem) : Fragment() {
@ -44,6 +43,10 @@ class DownloadAudioFragment(private var resultItem: ResultItem) : Fragment() {
lateinit var downloadItem: DownloadItem
override fun onResume() {
super.onResume()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@ -168,12 +171,19 @@ class DownloadAudioFragment(private var resultItem: ResultItem) : Fragment() {
containers
)
)
val selectedContainer: String = if (containers.contains(formats[formats.lastIndex].container)){
formats[formats.lastIndex].container
}else{
val selectedContainer: String = try {
if (containers.contains(formats[formats.lastIndex].container)){
formats[formats.lastIndex].container
}else{
containers[0]
}
}catch (e: Exception){
containers[0]
}
downloadItem.format.container = selectedContainer
Log.e("TAG", selectedContainer)
containerAutoCompleteTextView!!.setText(selectedContainer, false)
(container!!.editText as AutoCompleteTextView?)!!.onItemClickListener =
AdapterView.OnItemClickListener { _: AdapterView<*>?, _: View?, index: Int, _: Long ->

@ -8,7 +8,11 @@ import android.content.DialogInterface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.widget.Adapter
import android.widget.Button
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.view.get
import androidx.core.view.size
import androidx.lifecycle.ViewModelProvider
import androidx.viewpager2.widget.ViewPager2
import com.deniscerri.ytdlnis.R
@ -78,7 +82,7 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
viewPager2.currentItem = tab!!.position
viewPager2.setCurrentItem(tab!!.position, false)
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
@ -93,16 +97,8 @@ class DownloadBottomSheetDialog(private val resultItem: ResultItem, private val
tabLayout.selectTab(tabLayout.getTabAt(position))
}
})
viewPager2.setPageTransformer { v, _ ->
v.post {
val wMeasureSpec = View.MeasureSpec.makeMeasureSpec(v.width, View.MeasureSpec.EXACTLY)
val hMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
v.measure(wMeasureSpec, hMeasureSpec)
viewPager2.layoutParams = (viewPager2.layoutParams).also { lp -> lp.height = v.measuredHeight }
viewPager2.invalidate()
}
}
viewPager2.setPageTransformer(BackgroundToForegroundPageTransformer())
val scheduleBtn = view.findViewById<MaterialButton>(R.id.bottomsheet_schedule_button)
scheduleBtn.setOnClickListener{

@ -24,7 +24,6 @@ import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
import java.util.concurrent.atomic.AtomicReference
import java.io.File
class UpdateUtil(var context: Context) {
private val tag = "UpdateUtil"

@ -1,112 +1,127 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingBottom="0dp"
android:paddingHorizontal="20dp"
android:orientation="vertical">
<TextView
android:id="@+id/bottom_sheet_title"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content"
android:text="@string/download" />
<TextView
android:id="@+id/bottom_sheet_subtitle"
android:layout_width="wrap_content"
android:textSize="15sp"
android:layout_height="wrap_content"
android:text="@string/configure_download" />
</LinearLayout>
<com.google.android.material.tabs.TabLayout
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@android:color/transparent"
app:tabMode="scrollable"
android:layout_margin="10dp"
app:tabGravity="fill"
android:id="@+id/download_tablayout" >
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/audio" />
android:orientation="vertical">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/video" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/run_command" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="20dp"
android:paddingBottom="0dp"
android:paddingHorizontal="20dp"
android:orientation="vertical">
<TextView
android:id="@+id/bottom_sheet_title"
android:layout_width="wrap_content"
android:textSize="25sp"
android:layout_height="wrap_content"
android:text="@string/download" />
<TextView
android:id="@+id/bottom_sheet_subtitle"
android:layout_width="wrap_content"
android:textSize="15sp"
android:layout_height="wrap_content"
android:text="@string/configure_download" />
</LinearLayout>
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@android:color/transparent"
app:tabMode="scrollable"
android:layout_margin="10dp"
app:tabGravity="fill"
android:id="@+id/download_tablayout" >
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/audio" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/video" />
</com.google.android.material.tabs.TabLayout>
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/run_command" />
<androidx.viewpager2.widget.ViewPager2
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/download_viewpager" />
</com.google.android.material.tabs.TabLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:padding="10dp"
android:orientation="horizontal">
<androidx.viewpager2.widget.ViewPager2
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/download_viewpager" />
<Button
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:id="@+id/bottomsheet_schedule_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
app:icon="@drawable/ic_clock" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:gravity="end"
android:orientation="horizontal">
<Button
style="@style/Widget.Material3.Button.OutlinedButton.Icon"
android:id="@+id/bottomsheet_cancel_button"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:layout_marginEnd="10dp"
app:icon="@drawable/ic_cancel" />
android:layout_gravity="bottom"
android:padding="10dp"
android:orientation="horizontal">
<Button
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
android:id="@+id/bottomsheet_schedule_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
app:icon="@drawable/ic_clock" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:gravity="end"
android:orientation="horizontal">
<Button
style="@style/Widget.Material3.Button.OutlinedButton.Icon"
android:id="@+id/bottomsheet_cancel_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:layout_marginEnd="10dp"
app:icon="@drawable/ic_cancel" />
<Button
style="@style/Widget.Material3.Button.ElevatedButton.Icon"
android:id="@+id/bottomsheet_download_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/download"
app:icon="@drawable/ic_down"
android:autoLink="all"/>
</LinearLayout>
</LinearLayout>
<Button
style="@style/Widget.Material3.Button.ElevatedButton.Icon"
android:id="@+id/bottomsheet_download_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/download"
app:icon="@drawable/ic_down"
android:autoLink="all"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

@ -11,6 +11,56 @@
android:padding="10dp"
android:orientation="vertical">
<!-- <androidx.constraintlayout.widget.ConstraintLayout-->
<!-- android:id="@+id/result_card_constraintLayout"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content">-->
<!-- <RelativeLayout-->
<!-- android:id="@+id/result_relative_layout"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="0dp"-->
<!-- app:layout_constraintDimensionRatio="H,16:9"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent">-->
<!-- <com.google.android.material.card.MaterialCardView-->
<!-- android:id="@+id/result_card_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- app:cardCornerRadius="10dp"-->
<!-- app:cardElevation="10dp"-->
<!-- app:cardMaxElevation="12dp"-->
<!-- app:cardBackgroundColor="@color/black"-->
<!-- app:cardPreventCornerOverlap="true"-->
<!-- android:checkable="true"-->
<!-- app:strokeWidth="0dp"-->
<!-- android:layout_margin="10dp">-->
<!-- <com.devbrackets.android.exomedia.ui.widget.VideoView-->
<!-- android:id="@+id/result_video_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- app:useDefaultControls="true"/>-->
<!-- </com.google.android.material.card.MaterialCardView>-->
<!-- </RelativeLayout>-->
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
<!-- <com.google.android.material.slider.RangeSlider-->
<!-- android:id="@+id/range_slider"-->
<!-- android:layout_marginHorizontal="10dp"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:values="@array/initial_slider_values"-->
<!-- android:valueFrom="0.0"-->
<!-- android:valueTo="100.0" />-->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/title_textinput"
android:layout_width="match_parent"

@ -11,6 +11,55 @@
android:padding="10dp"
android:orientation="vertical">
<!-- <androidx.constraintlayout.widget.ConstraintLayout-->
<!-- android:id="@+id/result_card_constraintLayout"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content">-->
<!-- <RelativeLayout-->
<!-- android:id="@+id/result_relative_layout"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="0dp"-->
<!-- app:layout_constraintDimensionRatio="H,16:9"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent">-->
<!-- <com.google.android.material.card.MaterialCardView-->
<!-- android:id="@+id/result_card_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- app:cardCornerRadius="10dp"-->
<!-- app:cardElevation="10dp"-->
<!-- app:cardMaxElevation="12dp"-->
<!-- app:cardBackgroundColor="@color/black"-->
<!-- app:cardPreventCornerOverlap="true"-->
<!-- android:checkable="true"-->
<!-- app:strokeWidth="0dp"-->
<!-- android:layout_margin="10dp">-->
<!-- <com.devbrackets.android.exomedia.ui.widget.VideoView-->
<!-- android:id="@+id/result_video_view"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- app:useDefaultControls="true"/>-->
<!-- </com.google.android.material.card.MaterialCardView>-->
<!-- </RelativeLayout>-->
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
<!-- <com.google.android.material.slider.RangeSlider-->
<!-- android:id="@+id/range_slider"-->
<!-- android:layout_marginHorizontal="10dp"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:values="@array/initial_slider_values"-->
<!-- android:valueFrom="0.0"-->
<!-- android:valueTo="100.0" />-->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/title_textinput"
android:layout_width="match_parent"

@ -13,8 +13,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/home_toolbar"
android:layout_width="match_parent"
@ -43,56 +41,50 @@
</LinearLayout>
</ScrollView>
<LinearLayout
<androidx.recyclerview.widget.RecyclerView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:id="@+id/recyclerViewHome"
android:orientation="vertical"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:clipToPadding="false"
android:paddingBottom="100dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
/>
<com.facebook.shimmer.ShimmerFrameLayout
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"
android:id="@+id/shimmer_results_framelayout"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
<LinearLayout
android:id="@+id/shimmer_linear_layout"
android:layout_width="match_parent"
android:id="@+id/recyclerViewHome"
android:nestedScrollingEnabled="false"
android:orientation="vertical"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:clipToPadding="false"
android:paddingBottom="100dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
/>
<com.facebook.shimmer.ShimmerFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/shimmer_results_framelayout"
android:layout_margin="10dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/shimmer_linear_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:orientation="vertical">
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
<include layout="@layout/result_card_shimmer" />
</LinearLayout>
</LinearLayout>
</com.facebook.shimmer.ShimmerFrameLayout>
</LinearLayout>
</com.facebook.shimmer.ShimmerFrameLayout>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/home_fabs"

@ -12,39 +12,72 @@
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:layout_marginVertical="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/newest"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:text="@string/newest_first"
android:drawablePadding="20dp"
android:paddingBottom="20dp"
app:drawableLeftCompat="@drawable/ic_up" />
<TextView
android:id="@+id/oldest"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_up"/>
<TextView
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:padding="10dp"
android:text="@string/date_added" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:text="@string/oldest_first"
android:drawablePadding="20dp"
android:paddingBottom="20dp"
app:drawableLeftCompat="@drawable/ic_down" />
android:orientation="horizontal">
<ImageView
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_up"/>
<View style="@style/Divider.Horizontal"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:padding="10dp"
android:text="@string/title" />
</LinearLayout>
<TextView
android:id="@+id/cancel"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
app:icon="@drawable/ic_link"
android:text="@string/cancel"
android:drawablePadding="20dp"
app:drawableLeftCompat="@drawable/ic_cancel" />
android:orientation="horizontal">
<ImageView
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/ic_up"/>
<TextView
android:id="@+id/author"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="15sp"
android:padding="10dp"
android:text="@string/author" />
</LinearLayout>
</LinearLayout>

@ -53,4 +53,9 @@
<string-array name="sponsorblock_settings_default">
<item>music_offtopic</item>
</string-array>
<array name="initial_slider_values">
<item>0.0</item>
<item>100.0</item>
</array>
</resources>

@ -165,4 +165,5 @@
<string name="template">Template</string>
<string name="logs">Logs</string>
<string name="commands">Commands</string>
<string name="date_added">Date added</string>
</resources>

@ -4,8 +4,8 @@
buildscript {
def versionMajor = 1
def versionMinor = 4
def versionPatch = 9
def versionMinor = 5
def versionPatch = 0
def versionBuild = 0 // bump for dogfood builds, public betas, etc.
ext {
@ -37,8 +37,8 @@ buildscript {
}
plugins {
id 'com.android.application' version '7.4.0' apply false
id 'com.android.library' version '7.4.0' apply false
id 'com.android.application' version '7.4.1' apply false
id 'com.android.library' version '7.4.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.21' apply false
}

Loading…
Cancel
Save