From fafca5299e13e0f44d1d2332d7669d55ad38fdb5 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 3 Nov 2014 11:30:01 -0800 Subject: [PATCH] Using a proxy call for isAttachedToWindow for pre 19 devices Bug: 17423114 Change-Id: I6f0cc306b7fcc8087b4e4fc92bb8796d51a989d6 --- .../android/launcher3/AppsCustomizePagedView.java | 6 +----- src/com/android/launcher3/Launcher.java | 12 ++---------- src/com/android/launcher3/Utilities.java | 13 +++++++++++++ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java index 0648858230..8aa013f8bf 100644 --- a/src/com/android/launcher3/AppsCustomizePagedView.java +++ b/src/com/android/launcher3/AppsCustomizePagedView.java @@ -366,11 +366,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen // This code triggers requestLayout so must be posted outside of the // layout pass. public void run() { - boolean attached = true; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - attached = isAttachedToWindow(); - } - if (attached) { + if (Utilities.isViewAttachedToWindow(AppsCustomizePagedView.this)) { setDataIsReady(); onDataReady(getMeasuredWidth(), getMeasuredHeight()); } diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index a2de314d3b..8b3b2a1e36 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -3597,11 +3597,7 @@ public class Launcher extends Activity for (int i = 0; i < layerViews.size(); i++) { View v = layerViews.get(i); if (v != null) { - boolean attached = true; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - attached = v.isAttachedToWindow(); - } - if (attached) v.buildLayer(); + if (Utilities.isViewAttachedToWindow(v)) v.buildLayer(); } } } @@ -3877,11 +3873,7 @@ public class Launcher extends Activity for (int i = 0; i < layerViews.size(); i++) { View v = layerViews.get(i); if (v != null) { - boolean attached = true; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - attached = v.isAttachedToWindow(); - } - if (attached) v.buildLayer(); + if (Utilities.isViewAttachedToWindow(v)) v.buildLayer(); } } } diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index 6caa1cf56c..7a16914b9d 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -16,6 +16,7 @@ package com.android.launcher3; +import android.annotation.TargetApi; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.ComponentName; @@ -38,6 +39,8 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.PaintDrawable; import android.os.Build; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; import android.util.Log; import android.util.Pair; import android.util.SparseArray; @@ -495,4 +498,14 @@ public final class Utilities { } return null; } + + @TargetApi(Build.VERSION_CODES.KITKAT) + public static boolean isViewAttachedToWindow(View v) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + return v.isAttachedToWindow(); + } else { + // A proxy call which returns null, if the view is not attached to the window. + return v.getKeyDispatcherState() != null; + } + } }