mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-22 10:51:50 -05:00
android: New settings fragment animations
This commit is contained in:
parent
f40059e4ba
commit
352559b83d
12 changed files with 80 additions and 163 deletions
|
@ -97,10 +97,10 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView {
|
||||||
if (addToStack) {
|
if (addToStack) {
|
||||||
if (areSystemAnimationsEnabled()) {
|
if (areSystemAnimationsEnabled()) {
|
||||||
transaction.setCustomAnimations(
|
transaction.setCustomAnimations(
|
||||||
R.animator.settings_enter,
|
R.anim.anim_settings_fragment_in,
|
||||||
R.animator.settings_exit,
|
R.anim.anim_settings_fragment_out,
|
||||||
R.animator.settings_pop_enter,
|
0,
|
||||||
R.animator.setttings_pop_exit
|
R.anim.anim_pop_settings_fragment_out
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
transaction.addToBackStack(null)
|
transaction.addToBackStack(null)
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
package org.yuzu.yuzu_emu.features.settings.ui
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.widget.FrameLayout
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FrameLayout subclass with few Properties added to simplify animations.
|
|
||||||
* Don't remove the methods appearing as unused, in order not to break the menu animations
|
|
||||||
*/
|
|
||||||
class SettingsFrameLayout : FrameLayout {
|
|
||||||
private val mVisibleness = 1.0f
|
|
||||||
|
|
||||||
constructor(context: Context?) : super(context!!)
|
|
||||||
constructor(context: Context?, attrs: AttributeSet?) : super(context!!, attrs)
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
context: Context?,
|
|
||||||
attrs: AttributeSet?,
|
|
||||||
defStyleAttr: Int
|
|
||||||
) : super(context!!, attrs, defStyleAttr)
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
context: Context?,
|
|
||||||
attrs: AttributeSet?,
|
|
||||||
defStyleAttr: Int,
|
|
||||||
defStyleRes: Int
|
|
||||||
) : super(context!!, attrs, defStyleAttr, defStyleRes)
|
|
||||||
|
|
||||||
var yFraction: Float
|
|
||||||
get() = y / height
|
|
||||||
set(yFraction) {
|
|
||||||
val height = height
|
|
||||||
y = (if (height > 0) yFraction * height else -9999) as Float
|
|
||||||
}
|
|
||||||
var visibleness: Float
|
|
||||||
get() = mVisibleness
|
|
||||||
set(visibleness) {
|
|
||||||
scaleX = visibleness
|
|
||||||
scaleY = visibleness
|
|
||||||
alpha = visibleness
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<alpha
|
||||||
|
android:duration="125"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromAlpha="1"
|
||||||
|
android:toAlpha="0" />
|
||||||
|
|
||||||
|
<translate
|
||||||
|
android:duration="125"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromXDelta="0"
|
||||||
|
android:toXDelta="-75" />
|
||||||
|
|
||||||
|
</set>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<alpha
|
||||||
|
android:duration="@android:integer/config_shortAnimTime"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromAlpha="0"
|
||||||
|
android:toAlpha="1" />
|
||||||
|
|
||||||
|
<translate
|
||||||
|
android:duration="@android:integer/config_shortAnimTime"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromXDelta="-200"
|
||||||
|
android:toXDelta="0" />
|
||||||
|
|
||||||
|
</set>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<alpha
|
||||||
|
android:duration="125"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromAlpha="1"
|
||||||
|
android:toAlpha="0" />
|
||||||
|
|
||||||
|
<translate
|
||||||
|
android:duration="125"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromXDelta="0"
|
||||||
|
android:toXDelta="75" />
|
||||||
|
|
||||||
|
</set>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<alpha
|
||||||
|
android:duration="@android:integer/config_shortAnimTime"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromAlpha="0"
|
||||||
|
android:toAlpha="1" />
|
||||||
|
|
||||||
|
<translate
|
||||||
|
android:duration="@android:integer/config_shortAnimTime"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromXDelta="200"
|
||||||
|
android:toXDelta="0" />
|
||||||
|
|
||||||
|
</set>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<alpha
|
||||||
|
android:duration="@android:integer/config_shortAnimTime"
|
||||||
|
android:interpolator="@android:anim/decelerate_interpolator"
|
||||||
|
android:fromAlpha="1"
|
||||||
|
android:toAlpha="0" />
|
||||||
|
|
||||||
|
</set>
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="yFraction"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="1.0"
|
|
||||||
android:valueTo="0" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="translationZ"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="100.0"
|
|
||||||
android:valueTo="0" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="elevation"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="100.0"
|
|
||||||
android:valueTo="0" />
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/accelerate_cubic"
|
|
||||||
android:propertyName="visibleness"
|
|
||||||
android:valueFrom="1.0f"
|
|
||||||
android:valueTo="0.6f"
|
|
||||||
android:valueType="floatType" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="translationZ"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="0"
|
|
||||||
android:valueTo="-100.0" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="elevation"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="0"
|
|
||||||
android:valueTo="-100.0" />
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="visibleness"
|
|
||||||
android:valueFrom="0.6f"
|
|
||||||
android:valueTo="1.0f"
|
|
||||||
android:valueType="floatType" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="translationZ"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="-100.0"
|
|
||||||
android:valueTo="0" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="elevation"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="-100.0"
|
|
||||||
android:valueTo="0" />
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/accelerate_cubic"
|
|
||||||
android:propertyName="yFraction"
|
|
||||||
android:valueFrom="0"
|
|
||||||
android:valueTo="1.0" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="translationZ"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="0.0"
|
|
||||||
android:valueTo="100" />
|
|
||||||
|
|
||||||
<objectAnimator
|
|
||||||
android:duration="@android:integer/config_mediumAnimTime"
|
|
||||||
android:interpolator="@android:interpolator/decelerate_cubic"
|
|
||||||
android:propertyName="elevation"
|
|
||||||
android:startOffset="@android:integer/config_shortAnimTime"
|
|
||||||
android:valueFrom="0.0"
|
|
||||||
android:valueTo="100" />
|
|
||||||
|
|
||||||
</set>
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<org.yuzu.yuzu_emu.features.settings.ui.SettingsFrameLayout
|
<FrameLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
@ -11,4 +11,4 @@
|
||||||
android:background="?attr/colorSurface"
|
android:background="?attr/colorSurface"
|
||||||
android:clipToPadding="false" />
|
android:clipToPadding="false" />
|
||||||
|
|
||||||
</org.yuzu.yuzu_emu.features.settings.ui.SettingsFrameLayout>
|
</FrameLayout>
|
||||||
|
|
Loading…
Reference in a new issue