Loading src/com/android/launcher3/views/FloatingIconView.java +16 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.CancellationSignal; import android.os.Handler; import android.os.Looper; import android.view.View; Loading Loading @@ -73,6 +74,7 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, private static final Rect sTmpRect = new Rect(); private Runnable mEndRunnable; private CancellationSignal mLoadIconSignal; private final int mBlurSizeOutline; Loading Loading @@ -153,6 +155,9 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, @Override public void onAnimationEnd(Animator animator) { if (mLoadIconSignal != null) { mLoadIconSignal.cancel(); } if (mEndRunnable != null) { mEndRunnable.run(); } else { Loading Loading @@ -186,7 +191,7 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, @WorkerThread private void getIcon(Launcher launcher, View v, ItemInfo info, boolean isOpening, Runnable onIconLoadedRunnable) { Runnable onIconLoadedRunnable, CancellationSignal loadIconSignal) { final LayoutParams lp = (LayoutParams) getLayoutParams(); Drawable drawable = null; boolean supportsAdaptiveIcons = ADAPTIVE_ICON_WINDOW_ANIM.get() Loading Loading @@ -290,7 +295,9 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, setBackground(finalDrawable); } if (!loadIconSignal.isCanceled()) { onIconLoadedRunnable.run(); } invalidate(); invalidateOutline(); }); Loading Loading @@ -386,6 +393,7 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, // Get the drawable on the background thread // Must be called after matchPositionOf so that we know what size to load. if (originalView.getTag() instanceof ItemInfo) { view.mLoadIconSignal = new CancellationSignal(); Runnable onIconLoaded = () -> { // Delay swapping views until the icon is loaded to prevent a flash. view.setVisibility(VISIBLE); Loading @@ -393,9 +401,10 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, originalView.setVisibility(INVISIBLE); } }; CancellationSignal loadIconSignal = view.mLoadIconSignal; new Handler(LauncherModel.getWorkerLooper()).postAtFrontOfQueue(() -> { view.getIcon(launcher, originalView, (ItemInfo) originalView.getTag(), isOpening, onIconLoaded); onIconLoaded, loadIconSignal); }); } Loading Loading @@ -461,6 +470,10 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, setScaleY(1); setAlpha(1); setBackground(null); if (mLoadIconSignal != null) { mLoadIconSignal.cancel(); } mLoadIconSignal = null; mEndRunnable = null; mIsAdaptiveIcon = false; mForeground = null; Loading Loading
src/com/android/launcher3/views/FloatingIconView.java +16 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.CancellationSignal; import android.os.Handler; import android.os.Looper; import android.view.View; Loading Loading @@ -73,6 +74,7 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, private static final Rect sTmpRect = new Rect(); private Runnable mEndRunnable; private CancellationSignal mLoadIconSignal; private final int mBlurSizeOutline; Loading Loading @@ -153,6 +155,9 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, @Override public void onAnimationEnd(Animator animator) { if (mLoadIconSignal != null) { mLoadIconSignal.cancel(); } if (mEndRunnable != null) { mEndRunnable.run(); } else { Loading Loading @@ -186,7 +191,7 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, @WorkerThread private void getIcon(Launcher launcher, View v, ItemInfo info, boolean isOpening, Runnable onIconLoadedRunnable) { Runnable onIconLoadedRunnable, CancellationSignal loadIconSignal) { final LayoutParams lp = (LayoutParams) getLayoutParams(); Drawable drawable = null; boolean supportsAdaptiveIcons = ADAPTIVE_ICON_WINDOW_ANIM.get() Loading Loading @@ -290,7 +295,9 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, setBackground(finalDrawable); } if (!loadIconSignal.isCanceled()) { onIconLoadedRunnable.run(); } invalidate(); invalidateOutline(); }); Loading Loading @@ -386,6 +393,7 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, // Get the drawable on the background thread // Must be called after matchPositionOf so that we know what size to load. if (originalView.getTag() instanceof ItemInfo) { view.mLoadIconSignal = new CancellationSignal(); Runnable onIconLoaded = () -> { // Delay swapping views until the icon is loaded to prevent a flash. view.setVisibility(VISIBLE); Loading @@ -393,9 +401,10 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, originalView.setVisibility(INVISIBLE); } }; CancellationSignal loadIconSignal = view.mLoadIconSignal; new Handler(LauncherModel.getWorkerLooper()).postAtFrontOfQueue(() -> { view.getIcon(launcher, originalView, (ItemInfo) originalView.getTag(), isOpening, onIconLoaded); onIconLoaded, loadIconSignal); }); } Loading Loading @@ -461,6 +470,10 @@ public class FloatingIconView extends View implements Animator.AnimatorListener, setScaleY(1); setAlpha(1); setBackground(null); if (mLoadIconSignal != null) { mLoadIconSignal.cancel(); } mLoadIconSignal = null; mEndRunnable = null; mIsAdaptiveIcon = false; mForeground = null; Loading