OSDN Git Service

Mark header bar buttons as clickable only when they are made visible.
authorWinson <winsonc@google.com>
Tue, 26 Apr 2016 17:22:47 +0000 (10:22 -0700)
committerWinson <winsonc@google.com>
Tue, 26 Apr 2016 18:39:28 +0000 (11:39 -0700)
- We were incorrectly setting the OnClickListener to null to try to do
  this, which still causes the touch event to be consumed by the button
  view, so instead we should just set the clickable state directly.

Bug: 27859552
Change-Id: Ida3b4a467c6f325ce8fe5a90b0b77c2bdda5a936

packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java

index e2f2198..7b372ec 100644 (file)
@@ -235,7 +235,6 @@ public class TaskViewHeader extends FrameLayout
 
         // Initialize the icon and description views
         mIconView = (ImageView) findViewById(R.id.icon);
-        mIconView.setClickable(false);
         mIconView.setOnLongClickListener(this);
         mTitleView = (TextView) findViewById(R.id.title);
         mDismissButton = (ImageView) findViewById(R.id.dismiss_task);
@@ -459,6 +458,8 @@ public class TaskViewHeader extends FrameLayout
         mDismissButton.setImageDrawable(t.useLightOnPrimaryColor ?
                 mLightDismissDrawable : mDarkDismissDrawable);
         mDismissButton.setContentDescription(t.dismissDescription);
+        mDismissButton.setOnClickListener(this);
+        mDismissButton.setClickable(false);
 
         // When freeform workspaces are enabled, then update the move-task button depending on the
         // current task
@@ -474,6 +475,8 @@ public class TaskViewHeader extends FrameLayout
                         ? mLightFreeformIcon
                         : mDarkFreeformIcon);
             }
+            mMoveTaskButton.setOnClickListener(this);
+            mMoveTaskButton.setClickable(false);
         }
 
         if (Recents.getDebugFlags().isFastToggleRecentsEnabled()) {
@@ -491,6 +494,7 @@ public class TaskViewHeader extends FrameLayout
         if (touchExplorationEnabled) {
             mIconView.setContentDescription(t.appInfoDescription);
             mIconView.setOnClickListener(this);
+            mIconView.setClickable(true);
         }
     }
 
@@ -509,15 +513,15 @@ public class TaskViewHeader extends FrameLayout
         mTask = null;
         mIconView.setImageDrawable(null);
         if (touchExplorationEnabled) {
-            mIconView.setOnClickListener(null);
+            mIconView.setClickable(false);
         }
     }
 
     /** Animates this task bar if the user does not interact with the stack after a certain time. */
     void startNoUserInteractionAnimation() {
         int duration = getResources().getInteger(R.integer.recents_task_enter_from_app_duration);
-        mDismissButton.setOnClickListener(this);
         mDismissButton.setVisibility(View.VISIBLE);
+        mDismissButton.setClickable(true);
         if (mDismissButton.getVisibility() == VISIBLE) {
             mDismissButton.animate()
                     .alpha(1f)
@@ -529,8 +533,8 @@ public class TaskViewHeader extends FrameLayout
         }
         if (mMoveTaskButton != null) {
             if (mMoveTaskButton.getVisibility() == VISIBLE) {
-                mMoveTaskButton.setOnClickListener(this);
                 mMoveTaskButton.setVisibility(View.VISIBLE);
+                mMoveTaskButton.setClickable(true);
                 mMoveTaskButton.animate()
                         .alpha(1f)
                         .setInterpolator(Interpolators.FAST_OUT_LINEAR_IN)
@@ -550,12 +554,12 @@ public class TaskViewHeader extends FrameLayout
         mDismissButton.setVisibility(View.VISIBLE);
         mDismissButton.animate().cancel();
         mDismissButton.setAlpha(1f);
-        mDismissButton.setOnClickListener(this);
+        mDismissButton.setClickable(true);
         if (mMoveTaskButton != null) {
             mMoveTaskButton.setVisibility(View.VISIBLE);
             mMoveTaskButton.animate().cancel();
             mMoveTaskButton.setAlpha(1f);
-            mMoveTaskButton.setOnClickListener(this);
+            mMoveTaskButton.setClickable(true);
         }
     }
 
@@ -566,11 +570,11 @@ public class TaskViewHeader extends FrameLayout
     void resetNoUserInteractionState() {
         mDismissButton.setVisibility(View.INVISIBLE);
         mDismissButton.setAlpha(0f);
-        mDismissButton.setOnClickListener(null);
+        mDismissButton.setClickable(false);
         if (mMoveTaskButton != null) {
             mMoveTaskButton.setVisibility(View.INVISIBLE);
             mMoveTaskButton.setAlpha(0f);
-            mMoveTaskButton.setOnClickListener(null);
+            mMoveTaskButton.setClickable(false);
         }
     }