add more animation
This commit is contained in:
parent
4daa984abb
commit
10e761f2e7
|
@ -18,6 +18,19 @@ class AnimUtil {
|
|||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playTranslationY(
|
||||
views: List<View>,
|
||||
duration: Long,
|
||||
vararg values: Float
|
||||
): List<ObjectAnimator> {
|
||||
return mutableListOf<ObjectAnimator>().apply {
|
||||
for (view in views) {
|
||||
add(playTranslationY(view, duration, *values))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playTranslationX(
|
||||
view: View,
|
||||
|
@ -29,6 +42,19 @@ class AnimUtil {
|
|||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playTranslationX(
|
||||
views: List<View>,
|
||||
duration: Long,
|
||||
vararg values: Float
|
||||
): List<ObjectAnimator> {
|
||||
return mutableListOf<ObjectAnimator>().apply {
|
||||
for (view in views) {
|
||||
add(playTranslationX(view, duration, *values))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playTranslationZ(
|
||||
view: View,
|
||||
|
@ -40,6 +66,19 @@ class AnimUtil {
|
|||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playTranslationZ(
|
||||
views: List<View>,
|
||||
duration: Long,
|
||||
vararg values: Float
|
||||
): List<ObjectAnimator> {
|
||||
return mutableListOf<ObjectAnimator>().apply {
|
||||
for (view in views) {
|
||||
add(playTranslationZ(view, duration, *values))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playRotation(
|
||||
view: View,
|
||||
|
@ -62,6 +101,19 @@ class AnimUtil {
|
|||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playScaleX(
|
||||
views: List<View>,
|
||||
duration: Long,
|
||||
vararg values: Float
|
||||
): List<ObjectAnimator> {
|
||||
return mutableListOf<ObjectAnimator>().apply {
|
||||
for (view in views) {
|
||||
add(playScaleX(view, duration, *values))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playScaleY(
|
||||
view: View,
|
||||
|
@ -73,6 +125,19 @@ class AnimUtil {
|
|||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playScaleY(
|
||||
views: List<View>,
|
||||
duration: Long,
|
||||
vararg values: Float
|
||||
): List<ObjectAnimator> {
|
||||
return mutableListOf<ObjectAnimator>().apply {
|
||||
for (view in views) {
|
||||
add(playScaleY(view, duration, *values))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun playAlpha(
|
||||
view: View,
|
||||
|
|
|
@ -16,6 +16,7 @@ import androidx.core.view.forEach
|
|||
import androidx.databinding.DataBindingUtil
|
||||
import com.mio.util.AnimUtil
|
||||
import com.mio.util.AnimUtil.Companion.interpolator
|
||||
import com.mio.util.AnimUtil.Companion.startAfter
|
||||
import com.tungsten.fcl.R
|
||||
import com.tungsten.fcl.databinding.ActivityMainBinding
|
||||
import com.tungsten.fcl.game.JarExecutorHelper
|
||||
|
@ -299,7 +300,7 @@ class MainActivity : FCLActivity(), OnSelectListener, View.OnClickListener {
|
|||
}
|
||||
|
||||
fun refreshMenuView(view: FCLMenuView?) {
|
||||
bind.menu.forEach {
|
||||
bind.leftMenu.forEach {
|
||||
if (it is FCLMenuView && it != view) {
|
||||
it.isSelected = false
|
||||
}
|
||||
|
@ -407,7 +408,9 @@ class MainActivity : FCLActivity(), OnSelectListener, View.OnClickListener {
|
|||
.orElse(getString(R.string.message_unknown))
|
||||
val libraries = StringBuilder(game)
|
||||
val analyzer = LibraryAnalyzer.analyze(
|
||||
Profiles.getSelectedProfile().repository.getResolvedPreservingPatchesVersion(version)
|
||||
Profiles.getSelectedProfile().repository.getResolvedPreservingPatchesVersion(
|
||||
version
|
||||
)
|
||||
)
|
||||
for (mark in analyzer) {
|
||||
val libraryId = mark.libraryId
|
||||
|
@ -468,18 +471,35 @@ class MainActivity : FCLActivity(), OnSelectListener, View.OnClickListener {
|
|||
|
||||
private fun playAnim() {
|
||||
bind.apply {
|
||||
val speed = ThemeEngine.getInstance().getTheme().animationSpeed
|
||||
AnimUtil.playTranslationX(
|
||||
leftMenu,
|
||||
ThemeEngine.getInstance().getTheme().animationSpeed * 100L,
|
||||
listOf(leftMenu, splitLeft),
|
||||
speed * 100L,
|
||||
-100f,
|
||||
0f
|
||||
).interpolator(BounceInterpolator()).start()
|
||||
).forEach {
|
||||
it.interpolator(BounceInterpolator()).start()
|
||||
}
|
||||
AnimUtil.playTranslationX(
|
||||
rightMenu,
|
||||
ThemeEngine.getInstance().getTheme().animationSpeed * 100L,
|
||||
listOf(rightMenu, splitRight),
|
||||
speed * 100L,
|
||||
100f,
|
||||
0f
|
||||
).interpolator(BounceInterpolator()).start()
|
||||
).forEach {
|
||||
it.interpolator(BounceInterpolator()).start()
|
||||
}
|
||||
AnimUtil.playTranslationY(listOf(launch, executeJar), speed * 100L, -200f, 0f)
|
||||
.forEachIndexed { index, objectAnimator ->
|
||||
objectAnimator.interpolator(BounceInterpolator()).startAfter((index + 1) * 100L)
|
||||
}
|
||||
AnimUtil.playTranslationY(
|
||||
listOf(home, manage, download, controller, setting, back),
|
||||
speed * 100L,
|
||||
-300f,
|
||||
0f
|
||||
).forEachIndexed { index, objectAnimator ->
|
||||
objectAnimator.interpolator(BounceInterpolator()).startAfter((index + 1) * 100L)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,8 +7,10 @@ import android.view.ViewGroup;
|
|||
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
|
||||
import com.mio.util.AnimUtil;
|
||||
import com.tungsten.fcl.R;
|
||||
import com.tungsten.fcllibrary.component.FCLAdapter;
|
||||
import com.tungsten.fcllibrary.component.theme.ThemeEngine;
|
||||
import com.tungsten.fcllibrary.component.view.FCLImageButton;
|
||||
import com.tungsten.fcllibrary.component.view.FCLRadioButton;
|
||||
import com.tungsten.fcllibrary.component.view.FCLTextView;
|
||||
|
@ -71,6 +73,7 @@ public class VersionListAdapter extends FCLAdapter {
|
|||
viewHolder.subtitle.setText(versionListItem.getLibraries());
|
||||
viewHolder.radioButton.setOnClickListener(view1 -> versionListItem.getProfile().setSelectedVersion(versionListItem.getVersion()));
|
||||
viewHolder.delete.setOnClickListener(view1 -> Versions.deleteVersion(getContext(), versionListItem.getProfile(), versionListItem.getVersion()));
|
||||
AnimUtil.playTranslationX(view, ThemeEngine.getInstance().getTheme().getAnimationSpeed() * 30L, -100f, 0f).start();
|
||||
return view;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,76 +8,89 @@
|
|||
android:id="@+id/background"
|
||||
tools:context=".activity.MainActivity">
|
||||
|
||||
<ScrollView
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/left_menu"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/menu"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:orientation="vertical"
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/manage"
|
||||
android:src="@drawable/ic_baseline_home_24"
|
||||
android:id="@+id/home"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_home_24"
|
||||
android:id="@+id/home"/>
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/home"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/download"
|
||||
android:src="@drawable/ic_baseline_build_24"
|
||||
android:id="@+id/manage"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_build_24"
|
||||
android:id="@+id/manage"/>
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/manage"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/controller"
|
||||
android:src="@drawable/ic_baseline_cloud_download_24"
|
||||
android:id="@+id/download"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_cloud_download_24"
|
||||
android:id="@+id/download"/>
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/download"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/multiplayer"
|
||||
android:src="@drawable/ic_baseline_videogame_asset_24"
|
||||
android:id="@+id/controller"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_videogame_asset_24"
|
||||
android:id="@+id/controller"/>
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/controller"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/setting"
|
||||
android:src="@drawable/ic_baseline_wifi_24"
|
||||
android:id="@+id/multiplayer"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_wifi_24"
|
||||
android:id="@+id/multiplayer"/>
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/multiplayer"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/back"
|
||||
android:src="@drawable/ic_baseline_settings_24"
|
||||
android:id="@+id/setting"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_settings_24"
|
||||
android:id="@+id/setting"/>
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toBottomOf="@id/setting"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:src="@drawable/ic_baseline_arrow_back_24"
|
||||
android:id="@+id/back"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLMenuView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_arrow_back_24"
|
||||
android:id="@+id/back"/>
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</ScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<View
|
||||
android:background="@android:color/darker_gray"
|
||||
|
@ -98,8 +111,6 @@
|
|||
android:id="@+id/right_menu"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1"
|
||||
app:layout_constraintWidth_percent="0.25">
|
||||
|
|
|
@ -1,46 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:paddingBottom="10dp">
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLConstraintLayout
|
||||
android:background="@drawable/bg_container_white"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:background="@drawable/bg_container_white"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:padding="5dp"
|
||||
android:stateListAnimator="@xml/anim_scale"
|
||||
app:auto_constraint_background_tint="true"
|
||||
android:padding="5dp">
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLRadioButton
|
||||
android:id="@+id/radio"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintVertical_bias="0.5"/>
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.5" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/radio"
|
||||
app:layout_constraintVertical_bias="0.5"/>
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.5" />
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginStart="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
app:layout_constraintStart_toEndOf="@+id/icon"
|
||||
app:layout_constraintEnd_toStartOf="@+id/delete"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/delete"
|
||||
app:layout_constraintStart_toEndOf="@+id/icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.5">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
|
@ -49,36 +52,36 @@
|
|||
android:orientation="horizontal">
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||
app:auto_text_tint="true"
|
||||
android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:layout_gravity="center"
|
||||
android:id="@+id/title"/>
|
||||
android:singleLine="true"
|
||||
app:auto_text_tint="true" />
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||
android:paddingStart="4dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:layout_marginStart="10dp"
|
||||
android:id="@+id/tag"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="11sp"
|
||||
android:id="@+id/tag"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="10dp"
|
||||
android:paddingStart="4dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingEnd="4dp"
|
||||
android:paddingBottom="2dp"
|
||||
android:singleLine="true"
|
||||
app:auto_text_tint="true"/>
|
||||
android:textSize="11sp"
|
||||
app:auto_text_tint="true" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||
app:auto_text_tint="true"
|
||||
android:textSize="11sp"
|
||||
android:id="@+id/subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:id="@+id/subtitle"/>
|
||||
android:textSize="11sp"
|
||||
app:auto_text_tint="true" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
@ -87,11 +90,12 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_baseline_delete_24"
|
||||
android:stateListAnimator="@xml/anim_scale_large"
|
||||
app:auto_tint="true"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintVertical_bias="0.5"/>
|
||||
app:layout_constraintVertical_bias="0.5" />
|
||||
|
||||
</com.tungsten.fcllibrary.component.view.FCLConstraintLayout>
|
||||
|
||||
|
|
Loading…
Reference in New Issue