Browse Source
android: Add early access upgrade fragment
android: Add early access upgrade fragment
We now have a second build flavor that will determine whether the "Get Early Access" button appears.pull/15/merge
committed by
bunnei
13 changed files with 419 additions and 2 deletions
-
6src/android/app/build.gradle.kts
-
16src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
-
83src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EarlyAccessFragment.kt
-
18src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt
-
9src/android/app/src/main/res/drawable/ic_check_circle.xml
-
9src/android/app/src/main/res/drawable/ic_diamond.xml
-
9src/android/app/src/main/res/drawable/premium_background.xml
-
1src/android/app/src/main/res/layout/card_home_option.xml
-
242src/android/app/src/main/res/layout/fragment_early_access.xml
-
8src/android/app/src/main/res/navigation/home_navigation.xml
-
3src/android/app/src/main/res/values-night/yuzu_colors.xml
-
14src/android/app/src/main/res/values/strings.xml
-
3src/android/app/src/main/res/values/yuzu_colors.xml
@ -0,0 +1,83 @@ |
|||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-2.0-or-later |
|||
|
|||
package org.yuzu.yuzu_emu.fragments |
|||
|
|||
import android.content.Intent |
|||
import android.net.Uri |
|||
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.activityViewModels |
|||
import androidx.navigation.fragment.findNavController |
|||
import com.google.android.material.transition.MaterialSharedAxis |
|||
import org.yuzu.yuzu_emu.R |
|||
import org.yuzu.yuzu_emu.databinding.FragmentEarlyAccessBinding |
|||
import org.yuzu.yuzu_emu.model.HomeViewModel |
|||
|
|||
class EarlyAccessFragment : Fragment() { |
|||
private var _binding: FragmentEarlyAccessBinding? = null |
|||
private val binding get() = _binding!! |
|||
|
|||
private val homeViewModel: HomeViewModel by activityViewModels() |
|||
|
|||
override fun onCreate(savedInstanceState: Bundle?) { |
|||
super.onCreate(savedInstanceState) |
|||
enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) |
|||
returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) |
|||
} |
|||
|
|||
override fun onCreateView( |
|||
inflater: LayoutInflater, |
|||
container: ViewGroup?, |
|||
savedInstanceState: Bundle? |
|||
): View { |
|||
_binding = FragmentEarlyAccessBinding.inflate(layoutInflater) |
|||
return binding.root |
|||
} |
|||
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|||
homeViewModel.setNavigationVisibility(visible = false, animated = true) |
|||
homeViewModel.setStatusBarShadeVisibility(visible = false) |
|||
|
|||
binding.toolbarAbout.setNavigationOnClickListener { |
|||
parentFragmentManager.primaryNavigationFragment?.findNavController()?.popBackStack() |
|||
} |
|||
|
|||
binding.getEarlyAccessButton.setOnClickListener { openLink(getString(R.string.play_store_link)) } |
|||
|
|||
setInsets() |
|||
} |
|||
|
|||
private fun openLink(link: String) { |
|||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(link)) |
|||
startActivity(intent) |
|||
} |
|||
|
|||
private fun setInsets() = |
|||
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _: View, windowInsets: WindowInsetsCompat -> |
|||
val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) |
|||
val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()) |
|||
|
|||
val leftInsets = barInsets.left + cutoutInsets.left |
|||
val rightInsets = barInsets.right + cutoutInsets.right |
|||
|
|||
val mlpAppBar = binding.appbarEa.layoutParams as ViewGroup.MarginLayoutParams |
|||
mlpAppBar.leftMargin = leftInsets |
|||
mlpAppBar.rightMargin = rightInsets |
|||
binding.appbarEa.layoutParams = mlpAppBar |
|||
|
|||
binding.scrollEa.updatePadding( |
|||
left = leftInsets, |
|||
right = rightInsets, |
|||
bottom = barInsets.bottom |
|||
) |
|||
|
|||
windowInsets |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|||
android:width="24dp" |
|||
android:height="24dp" |
|||
android:viewportWidth="24" |
|||
android:viewportHeight="24"> |
|||
<path |
|||
android:fillColor="?attr/colorControlNormal" |
|||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z" /> |
|||
</vector> |
|||
@ -0,0 +1,9 @@ |
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|||
android:width="24dp" |
|||
android:height="24dp" |
|||
android:viewportWidth="24" |
|||
android:viewportHeight="24"> |
|||
<path |
|||
android:fillColor="?attr/colorControlNormal" |
|||
android:pathData="M19,3H5L2,9l10,12L22,9L19,3zM9.62,8l1.5,-3h1.76l1.5,3H9.62zM11,10v6.68L5.44,10H11zM13,10h5.56L13,16.68V10zM19.26,8h-2.65l-1.5,-3h2.65L19.26,8zM6.24,5h2.65l-1.5,3H4.74L6.24,5z" /> |
|||
</vector> |
|||
@ -0,0 +1,9 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<shape xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
<gradient |
|||
android:type="linear" |
|||
android:angle="45" |
|||
android:startColor="@color/yuzu_ea_background_start" |
|||
android:endColor="@color/yuzu_ea_background_end" /> |
|||
<corners android:radius="12dp" /> |
|||
</shape> |
|||
@ -0,0 +1,242 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<androidx.coordinatorlayout.widget.CoordinatorLayout |
|||
xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:app="http://schemas.android.com/apk/res-auto" |
|||
android:id="@+id/coordinator_about" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
android:background="?attr/colorSurface"> |
|||
|
|||
<com.google.android.material.appbar.AppBarLayout |
|||
android:id="@+id/appbar_ea" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:fitsSystemWindows="true"> |
|||
|
|||
<com.google.android.material.appbar.MaterialToolbar |
|||
android:id="@+id/toolbar_about" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="?attr/actionBarSize" |
|||
app:navigationIcon="@drawable/ic_back" |
|||
app:title="@string/early_access" /> |
|||
|
|||
</com.google.android.material.appbar.AppBarLayout> |
|||
|
|||
<androidx.core.widget.NestedScrollView |
|||
android:id="@+id/scroll_ea" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
android:clipToPadding="false" |
|||
android:paddingBottom="20dp" |
|||
android:scrollbars="vertical" |
|||
android:fadeScrollbars="false" |
|||
app:layout_behavior="@string/appbar_scrolling_view_behavior"> |
|||
|
|||
<LinearLayout |
|||
android:id="@+id/card_ea" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="match_parent" |
|||
android:layout_marginVertical="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:background="@drawable/premium_background" |
|||
android:orientation="vertical"> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.TitleLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="16dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:text="@string/early_access_benefits" |
|||
android:textAlignment="center" |
|||
android:textStyle="bold" /> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:orientation="horizontal"> |
|||
|
|||
<ImageView |
|||
android:layout_width="24dp" |
|||
android:layout_height="24dp" |
|||
android:layout_gravity="center_vertical" |
|||
android:src="@drawable/ic_check_circle" |
|||
app:tint="?attr/colorOnSurface" /> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.BodyLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginStart="20dp" |
|||
android:text="@string/cutting_edge_features" |
|||
android:textAlignment="viewStart" |
|||
android:layout_gravity="start|center_vertical" /> |
|||
|
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:orientation="horizontal"> |
|||
|
|||
<ImageView |
|||
android:layout_width="24dp" |
|||
android:layout_height="24dp" |
|||
android:layout_gravity="center_vertical" |
|||
android:src="@drawable/ic_check_circle" |
|||
app:tint="?attr/colorOnSurface" /> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.BodyLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginStart="20dp" |
|||
android:text="@string/early_access_updates" |
|||
android:textAlignment="viewStart" |
|||
android:layout_gravity="start|center_vertical" /> |
|||
|
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:orientation="horizontal"> |
|||
|
|||
<ImageView |
|||
android:layout_width="24dp" |
|||
android:layout_height="24dp" |
|||
android:layout_gravity="center_vertical" |
|||
android:src="@drawable/ic_check_circle" |
|||
app:tint="?attr/colorOnSurface" /> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.BodyLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginStart="20dp" |
|||
android:text="@string/no_manual_installation" |
|||
android:textAlignment="viewStart" |
|||
android:layout_gravity="start|center_vertical" /> |
|||
|
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:orientation="horizontal"> |
|||
|
|||
<ImageView |
|||
android:layout_width="24dp" |
|||
android:layout_height="24dp" |
|||
android:layout_gravity="center_vertical" |
|||
android:src="@drawable/ic_check_circle" |
|||
app:tint="?attr/colorOnSurface" /> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.BodyLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginStart="20dp" |
|||
android:text="@string/prioritized_support" |
|||
android:textAlignment="viewStart" |
|||
android:layout_gravity="start|center_vertical" /> |
|||
|
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:orientation="horizontal"> |
|||
|
|||
<ImageView |
|||
android:layout_width="24dp" |
|||
android:layout_height="24dp" |
|||
android:layout_gravity="center_vertical" |
|||
android:src="@drawable/ic_check_circle" |
|||
app:tint="?attr/colorOnSurface" /> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.BodyLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginStart="20dp" |
|||
android:text="@string/helping_game_preservation" |
|||
android:textAlignment="viewStart" |
|||
android:layout_gravity="start|center_vertical" /> |
|||
|
|||
</LinearLayout> |
|||
|
|||
<LinearLayout |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="32dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:orientation="horizontal"> |
|||
|
|||
<ImageView |
|||
android:layout_width="24dp" |
|||
android:layout_height="24dp" |
|||
android:layout_gravity="center_vertical" |
|||
android:src="@drawable/ic_check_circle" |
|||
app:tint="?attr/colorOnSurface" /> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.BodyLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginStart="20dp" |
|||
android:text="@string/our_eternal_gratitude" |
|||
android:textAlignment="viewStart" |
|||
android:layout_gravity="start|center_vertical" /> |
|||
|
|||
</LinearLayout> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.TitleLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:text="@string/are_you_interested" |
|||
android:layout_marginTop="80dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:textStyle="bold" |
|||
android:textAlignment="center" /> |
|||
|
|||
<com.google.android.material.card.MaterialCardView |
|||
style="?attr/materialCardViewFilledStyle" |
|||
android:id="@+id/get_early_access_button" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:layout_marginTop="16dp" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:layout_marginBottom="28dp" |
|||
android:background="?attr/selectableItemBackground" |
|||
android:backgroundTint="@android:color/black"> |
|||
|
|||
<com.google.android.material.textview.MaterialTextView |
|||
style="@style/TextAppearance.Material3.TitleLarge" |
|||
android:layout_width="match_parent" |
|||
android:layout_height="wrap_content" |
|||
android:text="@string/get_early_access" |
|||
android:layout_marginHorizontal="20dp" |
|||
android:layout_marginVertical="8dp" |
|||
android:textColor="@android:color/white" |
|||
android:textStyle="bold" |
|||
android:textAlignment="center" /> |
|||
|
|||
</com.google.android.material.card.MaterialCardView> |
|||
|
|||
</LinearLayout> |
|||
|
|||
</androidx.core.widget.NestedScrollView> |
|||
|
|||
</androidx.coordinatorlayout.widget.CoordinatorLayout> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue