Skip to content

Commit 7d907fd

Browse files
committed
fix(preview-video): insets of exo controls
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 617c600 commit 7d907fd

1 file changed

Lines changed: 39 additions & 8 deletions

File tree

app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.kt

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,17 @@ import android.view.MotionEvent
2727
import android.view.View
2828
import android.view.View.OnTouchListener
2929
import android.view.ViewGroup
30+
import android.widget.FrameLayout
3031
import androidx.annotation.OptIn
3132
import androidx.annotation.StringRes
3233
import androidx.core.net.toUri
3334
import androidx.core.view.MenuHost
3435
import androidx.core.view.MenuProvider
36+
import androidx.core.view.ViewCompat
37+
import androidx.core.view.WindowInsetsCompat
38+
import androidx.core.view.marginBottom
39+
import androidx.core.view.updateLayoutParams
40+
import androidx.core.view.updatePadding
3541
import androidx.drawerlayout.widget.DrawerLayout
3642
import androidx.lifecycle.Lifecycle
3743
import androidx.lifecycle.lifecycleScope
@@ -40,6 +46,7 @@ import androidx.media3.common.Player
4046
import androidx.media3.common.util.UnstableApi
4147
import androidx.media3.exoplayer.ExoPlayer
4248
import androidx.media3.session.MediaSession
49+
import androidx.media3.ui.DefaultTimeBar
4350
import com.nextcloud.client.account.User
4451
import com.nextcloud.client.account.UserAccountManager
4552
import com.nextcloud.client.di.Injectable
@@ -176,6 +183,36 @@ class PreviewMediaFragment :
176183
isLivePhoto = bundle.getBoolean(IS_LIVE_PHOTO)
177184
}
178185

186+
override fun onResume() {
187+
super.onResume()
188+
applyWindowInsets()
189+
}
190+
191+
@OptIn(UnstableApi::class)
192+
private fun applyWindowInsets() {
193+
binding.root.post {
194+
val rootInsets = ViewCompat.getRootWindowInsets(binding.root) ?: return@post
195+
val insets = rootInsets.getInsets(
196+
WindowInsetsCompat.Type.systemBars() or
197+
WindowInsetsCompat.Type.displayCutout()
198+
)
199+
val playerView = binding.exoplayerView
200+
val exoControls = playerView
201+
.findViewById<FrameLayout>(androidx.media3.ui.R.id.exo_bottom_bar)
202+
val exoProgress = playerView
203+
.findViewById<DefaultTimeBar>(androidx.media3.ui.R.id.exo_progress)
204+
val progressOriginalMargin = exoProgress?.marginBottom ?: 0
205+
exoControls?.updateLayoutParams<ViewGroup.MarginLayoutParams> {
206+
bottomMargin = insets.bottom
207+
}
208+
exoProgress?.updateLayoutParams<ViewGroup.MarginLayoutParams> {
209+
bottomMargin = insets.bottom + progressOriginalMargin
210+
}
211+
exoControls?.updatePadding(left = insets.left, right = insets.right)
212+
exoProgress?.updatePadding(left = insets.left, right = insets.right)
213+
}
214+
}
215+
179216
private fun setLoadingView() {
180217
binding.progress.visibility = View.VISIBLE
181218
binding.emptyView.emptyListView.visibility = View.GONE
@@ -576,20 +613,14 @@ class PreviewMediaFragment :
576613
startPlaybackPosition: Long,
577614
autoplay: Boolean,
578615
isLivePhoto: Boolean
579-
): PreviewMediaFragment {
580-
val previewMediaFragment = PreviewMediaFragment()
581-
582-
val bundle = Bundle().apply {
616+
): PreviewMediaFragment = PreviewMediaFragment().apply {
617+
arguments = Bundle().apply {
583618
putParcelable(FILE, fileToDetail)
584619
putParcelable(USER, user)
585620
putLong(PLAYBACK_POSITION, startPlaybackPosition)
586621
putBoolean(AUTOPLAY, autoplay)
587622
putBoolean(IS_LIVE_PHOTO, isLivePhoto)
588623
}
589-
590-
previewMediaFragment.arguments = bundle
591-
592-
return previewMediaFragment
593624
}
594625

595626
/**

0 commit comments

Comments
 (0)