Browse Source

Make all the activities edge to edge

merge-requests/2298/head
Nicolas Pomepuy 2 years ago
parent
commit
bb6935def9
  1. 18
      application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt
  2. 107
      application/vlc-android/res/layout/widget_mini_player_configure.xml
  3. 24
      application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt
  4. 20
      application/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt
  5. 18
      application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt
  6. 30
      application/vlc-android/src/org/videolan/vlc/widget/MiniPlayerConfigureActivity.kt

18
application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/gui/remoteaccess/onboarding/RemoteAccessOnboardingActivity.kt

@ -27,8 +27,12 @@ package org.videolan.vlc.remoteaccessserver.gui.remoteaccess.onboarding
import android.os.Bundle
import android.view.View
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.commit
import org.videolan.tools.setGone
import org.videolan.vlc.R
@ -40,7 +44,21 @@ class RemoteAccessOnboardingActivity : AppCompatActivity(), OnboardingFragmentLi
private lateinit var skipButton: Button
private val viewModel: RemoteAccessOnboardingViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content)) { v, windowInsets ->
val bars = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars()
or WindowInsetsCompat.Type.displayCutout()
)
v.updatePadding(
left = bars.left,
top = bars.top,
right = bars.right,
bottom = bars.bottom,
)
WindowInsetsCompat.CONSUMED
}
setContentView(R.layout.activity_onboarding)
showFragment(viewModel.currentFragment)
}

107
application/vlc-android/res/layout/widget_mini_player_configure.xml

@ -24,76 +24,91 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:vlc="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator"
<LinearLayout xmlns:vlc="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" />
<View
android:id="@+id/status_view"
android:background="?attr/background_default"
android:layout_width="match_parent"
android:layout_height="28dp" />
<androidx.core.widget.NestedScrollView
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
vlc:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_height="match_parent">
<include layout="@layout/toolbar" />
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:fillViewport="true"
vlc:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:id="@+id/widget_mini_player_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/widget_preview"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/widget_preview_rounded_bg"
android:layout_gravity="end"
android:layout_marginTop="24dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical">
<TextView
<ImageView
android:id="@+id/widget_preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:textSize="18sp"
android:textColor="?attr/font_default"
android:text="@string/widget_preview"/>
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp" />
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/preview_playing"
android:checked="true"
android:text="@string/playing" />
android:layout_gravity="end"
android:layout_marginTop="24dp"
android:background="?attr/widget_preview_rounded_bg"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingRight="16dp"
android:paddingBottom="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:text="@string/widget_preview"
android:textColor="?attr/font_default"
android:textSize="18sp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/preview_playing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/playing" />
</LinearLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/fragment_placeholder"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="?attr/background_default" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
<FrameLayout
android:background="?attr/background_default"
android:id="@+id/fragment_placeholder"
android:layout_width="fill_parent"
android:layout_height="match_parent" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

24
application/vlc-android/src/org/videolan/vlc/gui/BaseActivity.kt

@ -14,12 +14,16 @@ import android.view.KeyEvent
import android.view.Menu
import android.view.MenuItem
import android.view.View
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.app.BaseContextWrappingDelegate
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
@ -57,6 +61,12 @@ abstract class BaseActivity : AppCompatActivity() {
open val displayTitle = false
open fun forcedTheme():Int? = null
open var isOTPActivity:Boolean = false
/**
* Enables edge-to-edge mode for this activity.
* Set it to false if you want to override this behavior.
*/
open var isEdgeToEdge = true
abstract fun getSnackAnchorView(overAudioPlayer:Boolean = false): View?
private var baseContextWrappingDelegate: AppCompatDelegate? = null
private var resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
@ -74,7 +84,21 @@ abstract class BaseActivity : AppCompatActivity() {
open fun onDisplaySettingChanged(key:String, value:Any) { }
override fun onCreate(savedInstanceState: Bundle?) {
if (isEdgeToEdge) enableEdgeToEdge()
settings = Settings.getInstance(this)
if (isEdgeToEdge) ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content)) { v, windowInsets ->
val bars = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars()
or WindowInsetsCompat.Type.displayCutout()
)
v.updatePadding(
left = bars.left,
top = bars.top,
right = bars.right,
bottom = bars.bottom,
)
WindowInsetsCompat.CONSUMED
}
/* Theme must be applied before super.onCreate */
applyTheme()
super.onCreate(savedInstanceState)

20
application/vlc-android/src/org/videolan/vlc/gui/SecondaryActivity.kt

@ -28,9 +28,15 @@ import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.activity.enableEdgeToEdge
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.os.bundleOf
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.google.android.material.appbar.AppBarLayout
@ -80,7 +86,21 @@ class SecondaryActivity : ContentActivity(), IDialogManager {
else null
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
ViewCompat.setOnApplyWindowInsetsListener(findViewById<View>(android.R.id.content)) { v, windowInsets ->
val bars = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars()
or WindowInsetsCompat.Type.displayCutout()
)
v.updatePadding(
left = bars.left,
top = bars.top,
right = bars.right,
bottom = bars.bottom,
)
WindowInsetsCompat.CONSUMED
}
setContentView(R.layout.secondary)
initAudioPlayerContainerActivity()

18
application/vlc-android/src/org/videolan/vlc/gui/onboarding/OnboardingActivity.kt

@ -9,11 +9,15 @@ import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.edit
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.commit
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch
@ -38,7 +42,21 @@ class OnboardingActivity : AppCompatActivity(), OnboardingFragmentListener {
private lateinit var nextButton: Button
private val viewModel: OnboardingViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content)) { v, windowInsets ->
val bars = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars()
or WindowInsetsCompat.Type.displayCutout()
)
v.updatePadding(
left = bars.left,
top = bars.top,
right = bars.right,
bottom = bars.bottom,
)
WindowInsetsCompat.CONSUMED
}
// viewModel.permissionGranted = Permissions.canReadStorage(applicationContext)
setContentView(R.layout.activity_onboarding)
showFragment(viewModel.currentFragment)

30
application/vlc-android/src/org/videolan/vlc/widget/MiniPlayerConfigureActivity.kt

@ -36,8 +36,14 @@ import android.view.Menu
import android.view.MenuItem
import android.widget.FrameLayout
import android.widget.FrameLayout.LayoutParams
import android.widget.LinearLayout
import androidx.activity.enableEdgeToEdge
import androidx.core.content.ContextCompat
import androidx.core.os.bundleOf
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.palette.graphics.Palette
@ -62,12 +68,34 @@ class MiniPlayerConfigureActivity : BaseActivity() {
override val displayTitle = true
private lateinit var binding: WidgetMiniPlayerConfigureBinding
var appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID
override var isEdgeToEdge = false
override fun getSnackAnchorView(overAudioPlayer: Boolean) = binding.coordinator
public override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
binding = WidgetMiniPlayerConfigureBinding.inflate(layoutInflater)
ViewCompat.setOnApplyWindowInsetsListener(binding.statusView) { v, windowInsets ->
val bars = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars()
or WindowInsetsCompat.Type.displayCutout()
)
v.updateLayoutParams {
if (BuildConfig.DEBUG) Log.d(this::class.java.simpleName, "Set height to: ${bars.top}")
v.layoutParams.height = bars.top
}
WindowInsetsCompat.CONSUMED
}
ViewCompat.setOnApplyWindowInsetsListener(binding.fragmentPlaceholder) { v, windowInsets ->
val bars = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars()
or WindowInsetsCompat.Type.displayCutout()
)
v.updatePadding(
bottom = bars.bottom
)
WindowInsetsCompat.CONSUMED
}
setContentView(binding.root)
if (BuildConfig.DEBUG) Log.d(this::class.java.simpleName, "Launching MiniPlayerConfigureActivity")

Loading…
Cancel
Save