From 5e9e1878a2092cbd522c790514f6bbb34408fa0c Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 20 Sep 2023 19:31:26 +0530 Subject: [PATCH] fixup! [LeakCanary]: OnboardingFragment: Use viewbinding as official way Signed-off-by: Aayush Gupta --- .../view/ui/onboarding/AccentFragment.kt | 70 ++---------------- .../store/view/ui/onboarding/ThemeFragment.kt | 72 ++----------------- .../fragment_onboarding_accent.xml | 9 +-- .../layout-land/fragment_onboarding_theme.xml | 9 +-- .../res/layout/fragment_onboarding_accent.xml | 9 +-- .../res/layout/fragment_onboarding_theme.xml | 9 +-- 6 files changed, 17 insertions(+), 161 deletions(-) diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/AccentFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/AccentFragment.kt index 150a768f0..eadc5e5c8 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/AccentFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/AccentFragment.kt @@ -19,18 +19,11 @@ package com.aurora.store.view.ui.onboarding -import android.animation.Animator -import android.animation.AnimatorListenerAdapter -import android.graphics.Bitmap -import android.graphics.Canvas +import android.content.Context import android.os.Bundle import android.view.View -import android.view.ViewAnimationUtils import androidx.recyclerview.widget.StaggeredGridLayoutManager -import com.aurora.extensions.hide import com.aurora.extensions.isSAndAbove -import com.aurora.extensions.isVisible -import com.aurora.extensions.show import com.aurora.store.R import com.aurora.store.data.model.Accent import com.aurora.store.databinding.FragmentOnboardingAccentBinding @@ -38,12 +31,10 @@ import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_THEME_ACCENT import com.aurora.store.util.Preferences.PREFERENCE_THEME_TYPE import com.aurora.store.util.save -import com.aurora.store.view.custom.CubicBezierInterpolator import com.aurora.store.view.epoxy.views.AccentViewModel_ import com.aurora.store.view.ui.commons.BaseFragment import com.google.gson.reflect.TypeToken import java.nio.charset.StandardCharsets -import kotlin.math.sqrt class AccentFragment : BaseFragment(R.layout.fragment_onboarding_accent) { @@ -58,8 +49,8 @@ class AccentFragment : BaseFragment(R.layout.fragment_onboarding_accent) { super.onViewCreated(view, savedInstanceState) _binding = FragmentOnboardingAccentBinding.bind(view) - themeId = Preferences.getInteger(requireContext(), PREFERENCE_THEME_TYPE) - accentId = Preferences.getInteger(requireContext(), PREFERENCE_THEME_ACCENT) + themeId = Preferences.getInteger(view.context, PREFERENCE_THEME_TYPE) + accentId = Preferences.getInteger(view.context, PREFERENCE_THEME_ACCENT) // RecyclerView with(binding.epoxyRecycler) { @@ -70,7 +61,7 @@ class AccentFragment : BaseFragment(R.layout.fragment_onboarding_accent) { binding.epoxyRecycler.withModels { setFilterDuplicates(true) - loadAccentsFromAssets().forEach { + loadAccentsFromAssets(view.context).forEach { if (it.id == 0) { if (!isSAndAbove()) return@forEach } @@ -84,7 +75,6 @@ class AccentFragment : BaseFragment(R.layout.fragment_onboarding_accent) { accentId = it.id updateAccent(accentId) requestModelBuild() - animate(v) } ) } @@ -96,56 +86,8 @@ class AccentFragment : BaseFragment(R.layout.fragment_onboarding_accent) { save(PREFERENCE_THEME_ACCENT, accentId) } - private fun animate(view: View) { - if (binding.themeSwitchImage.isVisible()) { - return; - } - try { - val pos = IntArray(2) - view.getLocationInWindow(pos) - val w: Int = binding.root.measuredWidth - val h: Int = binding.root.measuredHeight - - val bitmap = Bitmap.createBitmap( - binding.root.measuredWidth, - binding.root.measuredHeight, - Bitmap.Config.ARGB_8888 - ) - - val canvas = Canvas(bitmap) - binding.root.draw(canvas) - binding.themeSwitchImage.setImageBitmap(bitmap) - binding.themeSwitchImage.show() - - val finalRadius = sqrt( - ((w - pos[0]) * (w - pos[0]) + (h - pos[1]) * (h - pos[1])).toDouble() - ).coerceAtLeast( - sqrt((pos[0] * pos[0] + (h - pos[1]) * (h - pos[1])).toDouble()) - ).toFloat() - - val anim: Animator = ViewAnimationUtils.createCircularReveal( - binding.root, - pos[0], - pos[1], - 0f, - finalRadius - ) - - anim.duration = 450 - anim.interpolator = CubicBezierInterpolator.EASE_IN_OUT_QUAD - anim.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - binding.themeSwitchImage.setImageDrawable(null) - binding.themeSwitchImage.hide() - } - }) - anim.start() - } catch (ignore: Throwable) { - } - } - - private fun loadAccentsFromAssets(): List { - val inputStream = requireContext().assets.open("accent.json") + private fun loadAccentsFromAssets(context: Context): List { + val inputStream = context.assets.open("accent.json") val bytes = ByteArray(inputStream.available()) inputStream.read(bytes) inputStream.close() diff --git a/app/src/main/java/com/aurora/store/view/ui/onboarding/ThemeFragment.kt b/app/src/main/java/com/aurora/store/view/ui/onboarding/ThemeFragment.kt index 09f78f865..66627b6ae 100644 --- a/app/src/main/java/com/aurora/store/view/ui/onboarding/ThemeFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/onboarding/ThemeFragment.kt @@ -19,16 +19,9 @@ package com.aurora.store.view.ui.onboarding -import android.animation.Animator -import android.animation.AnimatorListenerAdapter -import android.graphics.Bitmap -import android.graphics.Canvas +import android.content.Context import android.os.Bundle import android.view.View -import android.view.ViewAnimationUtils -import com.aurora.extensions.hide -import com.aurora.extensions.isVisible -import com.aurora.extensions.show import com.aurora.store.R import com.aurora.store.data.model.Theme import com.aurora.store.databinding.FragmentOnboardingThemeBinding @@ -36,12 +29,10 @@ import com.aurora.store.util.Preferences import com.aurora.store.util.Preferences.PREFERENCE_THEME_ACCENT import com.aurora.store.util.Preferences.PREFERENCE_THEME_TYPE import com.aurora.store.util.save -import com.aurora.store.view.custom.CubicBezierInterpolator import com.aurora.store.view.epoxy.views.ThemeViewModel_ import com.aurora.store.view.ui.commons.BaseFragment import com.google.gson.reflect.TypeToken import java.nio.charset.StandardCharsets -import kotlin.math.sqrt class ThemeFragment : BaseFragment(R.layout.fragment_onboarding_theme) { @@ -56,24 +47,23 @@ class ThemeFragment : BaseFragment(R.layout.fragment_onboarding_theme) { super.onViewCreated(view, savedInstanceState) _binding = FragmentOnboardingThemeBinding.bind(view) - themeId = Preferences.getInteger(requireContext(), PREFERENCE_THEME_TYPE) - accentId = Preferences.getInteger(requireContext(), PREFERENCE_THEME_ACCENT) + themeId = Preferences.getInteger(view.context, PREFERENCE_THEME_TYPE) + accentId = Preferences.getInteger(view.context, PREFERENCE_THEME_ACCENT) // RecyclerView binding.epoxyRecycler.withModels { setFilterDuplicates(true) - loadThemesFromAssets().forEach { + loadThemesFromAssets(view.context).forEach { add( ThemeViewModel_() .id(it.id) .theme(it) .markChecked(themeId == it.id) - .checked { v, checked -> + .checked { _, checked -> if (checked) { themeId = it.id update(themeId) requestModelBuild() - animate(v) } } ) @@ -91,56 +81,8 @@ class ThemeFragment : BaseFragment(R.layout.fragment_onboarding_theme) { save(PREFERENCE_THEME_TYPE, themeId) } - private fun animate(view: View) { - if (binding.themeSwitchImage.isVisible()) { - return; - } - try { - val pos = IntArray(2) - view.getLocationInWindow(pos) - val w: Int = binding.root.measuredWidth - val h: Int = binding.root.measuredHeight - - val bitmap = Bitmap.createBitmap( - binding.root.measuredWidth, - binding.root.measuredHeight, - Bitmap.Config.ARGB_8888 - ) - - val canvas = Canvas(bitmap) - binding.root.draw(canvas) - binding.themeSwitchImage.setImageBitmap(bitmap) - binding.themeSwitchImage.show() - - val finalRadius = sqrt( - ((w - pos[0]) * (w - pos[0]) + (h - pos[1]) * (h - pos[1])).toDouble() - ).coerceAtLeast( - sqrt((pos[0] * pos[0] + (h - pos[1]) * (h - pos[1])).toDouble()) - ).toFloat() - - val anim: Animator = ViewAnimationUtils.createCircularReveal( - binding.root, - pos[0], - pos[1], - 0f, - finalRadius - ) - - anim.duration = 450 - anim.interpolator = CubicBezierInterpolator.EASE_IN_OUT_QUAD - anim.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - binding.themeSwitchImage.setImageDrawable(null) - binding.themeSwitchImage.hide() - } - }) - anim.start() - } catch (ignore: Throwable) { - } - } - - private fun loadThemesFromAssets(): List { - val inputStream = requireContext().assets.open("themes.json") + private fun loadThemesFromAssets(context: Context): List { + val inputStream = context.assets.open("themes.json") val bytes = ByteArray(inputStream.available()) inputStream.read(bytes) inputStream.close() diff --git a/app/src/main/res/layout-land/fragment_onboarding_accent.xml b/app/src/main/res/layout-land/fragment_onboarding_accent.xml index 9c23370d5..d7d001103 100644 --- a/app/src/main/res/layout-land/fragment_onboarding_accent.xml +++ b/app/src/main/res/layout-land/fragment_onboarding_accent.xml @@ -73,11 +73,4 @@ app:itemSpacing="@dimen/margin_small" tools:listitem="@layout/view_theme" /> - - - \ No newline at end of file + diff --git a/app/src/main/res/layout-land/fragment_onboarding_theme.xml b/app/src/main/res/layout-land/fragment_onboarding_theme.xml index 3767df87d..89d10cdbc 100644 --- a/app/src/main/res/layout-land/fragment_onboarding_theme.xml +++ b/app/src/main/res/layout-land/fragment_onboarding_theme.xml @@ -74,11 +74,4 @@ app:itemSpacing="@dimen/margin_small" tools:listitem="@layout/view_theme" /> - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_onboarding_accent.xml b/app/src/main/res/layout/fragment_onboarding_accent.xml index 6680b414e..4f36fc269 100644 --- a/app/src/main/res/layout/fragment_onboarding_accent.xml +++ b/app/src/main/res/layout/fragment_onboarding_accent.xml @@ -62,11 +62,4 @@ app:itemSpacing="@dimen/margin_small" tools:listitem="@layout/view_theme" /> - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/fragment_onboarding_theme.xml b/app/src/main/res/layout/fragment_onboarding_theme.xml index cccf11a5a..e0817fee6 100644 --- a/app/src/main/res/layout/fragment_onboarding_theme.xml +++ b/app/src/main/res/layout/fragment_onboarding_theme.xml @@ -64,11 +64,4 @@ app:itemSpacing="@dimen/margin_small" tools:listitem="@layout/view_theme" /> - - - \ No newline at end of file +