aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxbzk <xbzk@noreply.localhost>2025-06-05 18:58:43 +0000
committercrueter <crueter@noreply.localhost>2025-06-05 18:58:43 +0000
commitd2364ae1f7f6ea962d296148d85fe08549baed37 (patch)
treea702cb8739d6d868e5133b90f675dfdf3eb7e296 /src
parent4cc39b98d6b74b605def76ffdcc933c307b01edd (diff)
Built-in landscape searchbar & status bar fixes (#154)
android layout: landscape: moves the searchbar to top bar's free space, increasing room for gamelist; minor fixes: landscape: avoid settings button getting beneath android navbar; portrait: avoid top bar's getting beneath android status bar. Co-authored-by: Allison Cunha <allisonbzk@gmail.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/154 Co-authored-by: xbzk <xbzk@noreply.localhost> Co-committed-by: xbzk <xbzk@noreply.localhost>
Diffstat (limited to 'src')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt7
-rw-r--r--src/android/app/src/main/res/layout-land/fragment_games.xml219
2 files changed, 226 insertions, 0 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
index c1d0f6297a..b0121ad132 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
@@ -454,6 +454,7 @@ class GamesFragment : Fragment() {
val leftInsets = barInsets.left + cutoutInsets.left
val rightInsets = barInsets.right + cutoutInsets.right
+ val topInsets = barInsets.top + cutoutInsets.top
val mlpSwipe = binding.swipeRefresh.layoutParams as ViewGroup.MarginLayoutParams
if (view.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
mlpSwipe.leftMargin = leftInsets
@@ -464,6 +465,12 @@ class GamesFragment : Fragment() {
}
binding.swipeRefresh.layoutParams = mlpSwipe
+ val mlpHeader = binding.header.layoutParams as ViewGroup.MarginLayoutParams
+ mlpHeader.leftMargin += leftInsets
+ mlpHeader.rightMargin += rightInsets
+ mlpHeader.topMargin += if (!isLandscape) topInsets else 0
+ binding.header.layoutParams = mlpHeader
+
binding.noticeText.updatePadding(bottom = spacingNavigation)
binding.header.updatePadding(top = cutoutInsets.top + resources.getDimensionPixelSize(R.dimen.spacing_large) + if (isLandscape) barInsets.top else 0)
binding.gridGames.updatePadding(
diff --git a/src/android/app/src/main/res/layout-land/fragment_games.xml b/src/android/app/src/main/res/layout-land/fragment_games.xml
new file mode 100644
index 0000000000..68ccb86b57
--- /dev/null
+++ b/src/android/app/src/main/res/layout-land/fragment_games.xml
@@ -0,0 +1,219 @@
+<androidx.constraintlayout.widget.ConstraintLayout
+
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="?attr/colorSurface"
+ >
+
+ <LinearLayout
+ android:id="@+id/header"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_marginHorizontal="20dp"
+ app:layout_constraintTop_toTopOf="parent"
+ >
+
+ <com.google.android.material.textview.MaterialTextView
+ android:id="@+id/title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/app_name"
+ android:textAppearance="@style/TextAppearance.Material3.HeadlineLarge"
+ android:textSize="27sp"
+ android:textStyle="bold"
+ />
+
+ <FrameLayout
+ android:id="@+id/frame_search"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginHorizontal="15dp"
+ android:layout_weight="1"
+ android:visibility="visible"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/header"
+ >
+
+ <com.google.android.material.card.MaterialCardView
+ android:id="@+id/search_background"
+ style="?attr/materialCardViewFilledStyle"
+ android:layout_width="match_parent"
+ android:layout_height="48dp"
+ app:cardCornerRadius="21dp"
+ >
+
+ <LinearLayout
+ android:id="@+id/search_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginStart="18dp"
+ android:layout_marginEnd="42dp"
+ android:orientation="horizontal"
+ >
+
+ <ImageView
+ android:layout_width="21dp"
+ android:layout_height="21dp"
+ android:layout_gravity="center_vertical"
+ android:layout_marginEnd="18dp"
+ android:src="@drawable/ic_search"
+ app:tint="?attr/colorOnSurfaceVariant"
+ />
+
+ <EditText
+ android:id="@+id/search_text"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@android:color/transparent"
+ android:hint="@string/home_search_games"
+ android:inputType="text"
+ android:maxLines="1"
+ android:imeOptions="flagNoFullscreen"
+ />
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/clear_button"
+ android:layout_width="18dp"
+ android:layout_height="18dp"
+ android:layout_gravity="center_vertical|end"
+ android:layout_marginEnd="18dp"
+ android:background="?attr/selectableItemBackground"
+ android:src="@drawable/ic_clear"
+ android:visibility="invisible"
+ app:tint="?attr/colorOnSurfaceVariant"
+ />
+
+ </com.google.android.material.card.MaterialCardView>
+
+ </FrameLayout>
+
+ <com.google.android.material.card.MaterialCardView
+ android:id="@+id/view_button"
+ style="?attr/materialCardViewFilledStyle"
+ android:layout_width="42dp"
+ android:layout_height="42dp"
+ app:cardCornerRadius="21dp"
+ >
+
+ <ImageView
+ android:layout_width="18dp"
+ android:layout_height="18dp"
+ android:layout_gravity="center"
+ android:src="@drawable/ic_eye"
+ app:tint="?attr/colorOnSurfaceVariant"
+ />
+
+ </com.google.android.material.card.MaterialCardView>
+
+ <Space
+ android:layout_width="15dp"
+ android:layout_height="wrap_content"
+ />
+
+ <com.google.android.material.card.MaterialCardView
+ android:id="@+id/filter_button"
+ style="?attr/materialCardViewFilledStyle"
+ android:layout_width="42dp"
+ android:layout_height="42dp"
+ app:cardCornerRadius="21dp"
+ >
+
+ <ImageView
+ android:layout_width="18dp"
+ android:layout_height="18dp"
+ android:layout_gravity="center"
+ android:src="@drawable/ic_filter"
+ app:tint="?attr/colorOnSurfaceVariant"
+ />
+
+ </com.google.android.material.card.MaterialCardView>
+
+ <Space
+ android:layout_width="15dp"
+ android:layout_height="wrap_content"
+ />
+
+ <com.google.android.material.card.MaterialCardView
+ android:id="@+id/settings_button"
+ style="?attr/materialCardViewFilledStyle"
+ android:layout_width="42dp"
+ android:layout_height="42dp"
+ app:cardCornerRadius="21dp"
+ >
+
+ <ImageView
+ android:layout_width="18dp"
+ android:layout_height="18dp"
+ android:layout_gravity="center"
+ android:src="@drawable/ic_settings"
+ app:tint="?attr/colorOnSurfaceVariant"
+ />
+
+ </com.google.android.material.card.MaterialCardView>
+
+ </LinearLayout>
+
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/swipe_refresh"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_marginTop="8dp"
+ app:layout_constraintTop_toBottomOf="@id/header"
+ app:layout_constraintBottom_toBottomOf="parent"
+ >
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+
+ <com.google.android.material.textview.MaterialTextView
+ android:id="@+id/notice_text"
+ style="@style/TextAppearance.Material3.BodyLarge"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:padding="@dimen/spacing_large"
+ android:text="@string/empty_gamelist"
+ 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"
+ android:scrollbarStyle="outsideOverlay"
+ android:scrollbars="vertical"
+ android:fadeScrollbars="true"
+ android:paddingHorizontal="4dp"
+ android:paddingVertical="4dp"
+ />
+
+
+ </RelativeLayout>
+
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
+ <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
+ android:id="@+id/add_directory"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="16dp"
+ android:contentDescription="Select_game_folder"
+ android:text="@string/folder"
+ app:icon="@drawable/ic_cartridge_outline"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ android:textColor="?attr/colorOnPrimaryContainer"
+ app:backgroundTint="?attr/colorPrimaryContainer"
+ app:iconTint="?attr/colorOnPrimaryContainer"
+ />
+
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file