summaryrefslogtreecommitdiffstats
path: root/src/android/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt28
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt17
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt24
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InsetsHelper.kt10
-rw-r--r--src/android/app/src/main/res/layout/activity_main.xml1
-rw-r--r--src/android/app/src/main/res/layout/activity_settings.xml3
-rw-r--r--src/android/app/src/main/res/layout/fragment_grid.xml31
-rw-r--r--src/android/app/src/main/res/layout/fragment_settings.xml3
9 files changed, 110 insertions, 21 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
index 1705a72e8..e403aa6d7 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt
@@ -8,20 +8,24 @@ import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.view.Menu
+import android.view.View
+import android.widget.FrameLayout
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
import androidx.localbroadcastmanager.content.LocalBroadcastManager
+import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.progressindicator.LinearProgressIndicator
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.features.settings.model.Settings
import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragment.Companion.newInstance
-import org.yuzu.yuzu_emu.utils.DirectoryInitialization
-import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver
-import org.yuzu.yuzu_emu.utils.EmulationMenuSettings
-import org.yuzu.yuzu_emu.utils.ThemeHelper
+import org.yuzu.yuzu_emu.utils.*
class SettingsActivity : AppCompatActivity(), SettingsActivityView {
private val presenter = SettingsActivityPresenter(this)
@@ -32,6 +36,9 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
+
+ WindowCompat.setDecorFitsSystemWindows(window, false)
+
val launcher = intent
val gameID = launcher.getStringExtra(ARG_GAME_ID)
val menuTag = launcher.getStringExtra(ARG_MENU_TAG)
@@ -40,6 +47,8 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
// Show "Back" button in the action bar for navigation
setSupportActionBar(findViewById(R.id.toolbar_settings))
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
+
+ setInsets()
}
override fun onSupportNavigateUp(): Boolean {
@@ -185,6 +194,17 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
private val fragment: SettingsFragment?
get() = supportFragmentManager.findFragmentByTag(FRAGMENT_TAG) as SettingsFragment?
+ private fun setInsets() {
+ val appBar = findViewById<AppBarLayout>(R.id.appbar_settings)
+ val frame = findViewById<FrameLayout>(R.id.frame_content)
+ ViewCompat.setOnApplyWindowInsetsListener(frame) { view: View, windowInsets: WindowInsetsCompat ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ view.updatePadding(left = insets.left, right = insets.right)
+ InsetsHelper.insetAppBar(insets, appBar)
+ windowInsets
+ }
+ }
+
companion object {
private const val ARG_MENU_TAG = "menu_tag"
private const val ARG_GAME_ID = "game_id"
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
index fe04c9651..bef5b9705 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
@@ -8,6 +8,9 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.recyclerview.widget.LinearLayoutManager
@@ -25,6 +28,8 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
private var activityView: SettingsActivityView? = null
private var adapter: SettingsAdapter? = null
+ private lateinit var recyclerView: RecyclerView
+
override fun onAttach(context: Context) {
super.onAttach(context)
activityView = context as SettingsActivityView
@@ -50,7 +55,7 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val manager = LinearLayoutManager(activity)
- val recyclerView = view.findViewById<RecyclerView>(R.id.list_settings)
+ recyclerView = view.findViewById(R.id.list_settings)
recyclerView.adapter = adapter
recyclerView.layoutManager = manager
val dividerDecoration = MaterialDividerItemDecoration(requireContext(), LinearLayoutManager.VERTICAL)
@@ -58,6 +63,8 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
recyclerView.addItemDecoration(dividerDecoration)
val activity = activity as SettingsActivityView?
presenter.onViewCreated(activity!!.settings)
+
+ setInsets()
}
override fun onDetach() {
@@ -106,6 +113,14 @@ class SettingsFragment : Fragment(), SettingsFragmentView {
activityView!!.onSettingChanged()
}
+ private fun setInsets() {
+ ViewCompat.setOnApplyWindowInsetsListener(recyclerView) { view: View, windowInsets: WindowInsetsCompat ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ view.updatePadding(bottom = insets.bottom)
+ windowInsets
+ }
+ }
+
companion object {
private const val ARGUMENT_MENU_TAG = "menu_tag"
private const val ARGUMENT_GAME_ID = "game_id"
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
index 266403885..ba60a26e8 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt
@@ -9,9 +9,17 @@ import android.net.Uri
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
+import android.view.View
+import android.widget.FrameLayout
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
+import com.google.android.material.appbar.AppBarLayout
+import com.google.android.material.color.MaterialColors
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.yuzu.yuzu_emu.NativeLibrary
import org.yuzu.yuzu_emu.R
@@ -31,6 +39,9 @@ class MainActivity : AppCompatActivity(), MainView {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
+
+ WindowCompat.setDecorFitsSystemWindows(window, false)
+
findViews()
setSupportActionBar(toolbar)
presenter.onCreate()
@@ -50,6 +61,8 @@ class MainActivity : AppCompatActivity(), MainView {
// Dismiss previous notifications (should not happen unless a crash occurred)
EmulationActivity.tryDismissRunningNotification(this)
+
+ setInsets()
}
override fun onSaveInstanceState(outState: Bundle) {
@@ -230,4 +243,15 @@ class MainActivity : AppCompatActivity(), MainView {
EmulationActivity.tryDismissRunningNotification(this)
super.onDestroy()
}
+
+ private fun setInsets() {
+ val appBar = findViewById<AppBarLayout>(R.id.appbar_main)
+ val frame = findViewById<FrameLayout>(R.id.games_platform_frame)
+ ViewCompat.setOnApplyWindowInsetsListener(frame) { view: View, windowInsets: WindowInsetsCompat ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ view.updatePadding(left = insets.left, right = insets.right)
+ InsetsHelper.insetAppBar(insets, appBar)
+ windowInsets
+ }
+ }
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt
index efd77ea7e..42b61a81a 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt
@@ -10,6 +10,9 @@ import android.view.View
import android.view.ViewGroup
import android.view.ViewTreeObserver.OnGlobalLayoutListener
import android.widget.TextView
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -17,6 +20,7 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.YuzuApplication
import org.yuzu.yuzu_emu.adapters.GameAdapter
+import org.yuzu.yuzu_emu.utils.InsetsHelper
class PlatformGamesFragment : Fragment(), PlatformGamesView {
private val presenter = PlatformGamesPresenter(this)
@@ -65,6 +69,8 @@ class PlatformGamesFragment : Fragment(), PlatformGamesView {
refresh()
pullToRefresh.isRefreshing = false
}
+
+ setInsets()
}
override fun refresh() {
@@ -91,6 +97,14 @@ class PlatformGamesFragment : Fragment(), PlatformGamesView {
textView = root.findViewById(R.id.gamelist_empty_text)
}
+ private fun setInsets() {
+ ViewCompat.setOnApplyWindowInsetsListener(recyclerView) { view: View, windowInsets: WindowInsetsCompat ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ view.updatePadding(bottom = insets.bottom)
+ windowInsets
+ }
+ }
+
companion object {
const val TAG = "PlatformGamesFragment"
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InsetsHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InsetsHelper.kt
index 3f9acc5b0..2eae77a1d 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InsetsHelper.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InsetsHelper.kt
@@ -1,12 +1,22 @@
package org.yuzu.yuzu_emu.utils
import android.content.Context
+import android.view.ViewGroup.MarginLayoutParams
+import androidx.core.graphics.Insets
+import com.google.android.material.appbar.AppBarLayout
object InsetsHelper {
const val THREE_BUTTON_NAVIGATION = 0
const val TWO_BUTTON_NAVIGATION = 1
const val GESTURE_NAVIGATION = 2
+ fun insetAppBar(insets: Insets, appBarLayout: AppBarLayout) {
+ val mlpAppBar = appBarLayout.layoutParams as MarginLayoutParams
+ mlpAppBar.leftMargin = insets.left
+ mlpAppBar.rightMargin = insets.right
+ appBarLayout.layoutParams = mlpAppBar
+ }
+
fun getSystemGestureType(context: Context): Int {
val resources = context.resources
val resourceId =
diff --git a/src/android/app/src/main/res/layout/activity_main.xml b/src/android/app/src/main/res/layout/activity_main.xml
index 34abf955d..059aaa9b4 100644
--- a/src/android/app/src/main/res/layout/activity_main.xml
+++ b/src/android/app/src/main/res/layout/activity_main.xml
@@ -9,6 +9,7 @@
android:id="@+id/appbar_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:fitsSystemWindows="true"
app:liftOnScrollTargetViewId="@id/grid_games">
<androidx.appcompat.widget.Toolbar
diff --git a/src/android/app/src/main/res/layout/activity_settings.xml b/src/android/app/src/main/res/layout/activity_settings.xml
index 449deab08..dc23200ea 100644
--- a/src/android/app/src/main/res/layout/activity_settings.xml
+++ b/src/android/app/src/main/res/layout/activity_settings.xml
@@ -9,7 +9,8 @@
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_settings"
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:fitsSystemWindows="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar_settings"
diff --git a/src/android/app/src/main/res/layout/fragment_grid.xml b/src/android/app/src/main/res/layout/fragment_grid.xml
index 01399e18d..bfb670b6d 100644
--- a/src/android/app/src/main/res/layout/fragment_grid.xml
+++ b/src/android/app/src/main/res/layout/fragment_grid.xml
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
@@ -17,18 +18,20 @@
android:id="@+id/gamelist_empty_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:gravity="center"
android:text="@string/empty_gamelist"
- android:visibility="gone"
android:textSize="18sp"
- android:gravity="center" />
+ android:visibility="gone" />
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/grid_games"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:clipToPadding="false"
+ tools:listitem="@layout/card_game" />
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/grid_games"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:clipToPadding="false"
- tools:listitem="@layout/card_game" />
</RelativeLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
</FrameLayout>
diff --git a/src/android/app/src/main/res/layout/fragment_settings.xml b/src/android/app/src/main/res/layout/fragment_settings.xml
index 13780927e..6feb092ff 100644
--- a/src/android/app/src/main/res/layout/fragment_settings.xml
+++ b/src/android/app/src/main/res/layout/fragment_settings.xml
@@ -8,6 +8,7 @@
android:id="@+id/list_settings"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?attr/colorSurface" />
+ android:background="?attr/colorSurface"
+ android:clipToPadding="false" />
</org.yuzu.yuzu_emu.features.settings.ui.SettingsFrameLayout>