diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-05-22 22:00:02 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-05-22 22:00:02 +0000 |
commit | d1134a02952f259b8241faea85d0b848dd1dd1aa (patch) | |
tree | 6b50928fddd88b680b46c10c8d8e9fa94f3a3b7a | |
parent | c7ffd730a5cf87743004a8739290e8c1dd8ef668 (diff) | |
parent | f1507a6a647adde9a77db3efb2a92558c4dc2473 (diff) | |
download | android_packages_apps_Trebuchet-d1134a02952f259b8241faea85d0b848dd1dd1aa.tar.gz android_packages_apps_Trebuchet-d1134a02952f259b8241faea85d0b848dd1dd1aa.tar.bz2 android_packages_apps_Trebuchet-d1134a02952f259b8241faea85d0b848dd1dd1aa.zip |
Merge "Making overview panel accessible via Tab" into ub-launcher3-edmonton
-rw-r--r-- | quickstep/res/layout/task.xml | 5 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/views/ClearAllButton.java | 9 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/views/RecentsView.java | 25 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/views/RecentsViewContainer.java | 10 | ||||
-rw-r--r-- | res/layout/all_apps.xml | 3 | ||||
-rw-r--r-- | src/com/android/launcher3/views/ScrimView.java | 1 |
6 files changed, 50 insertions, 3 deletions
diff --git a/quickstep/res/layout/task.xml b/quickstep/res/layout/task.xml index 429f3a28e..f16387216 100644 --- a/quickstep/res/layout/task.xml +++ b/quickstep/res/layout/task.xml @@ -13,9 +13,11 @@ See the License for the specific language governing permissions and limitations under the License. --> -<com.android.quickstep.views.TaskView xmlns:android="http://schemas.android.com/apk/res/android" +<com.android.quickstep.views.TaskView + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" + android:focusable="false" android:elevation="4dp"> <com.android.quickstep.views.TaskThumbnailView @@ -29,5 +31,6 @@ android:layout_width="@dimen/task_thumbnail_icon_size" android:layout_height="@dimen/task_thumbnail_icon_size" android:importantForAccessibility="no" + android:focusable="false" android:layout_gravity="top|center_horizontal" /> </com.android.quickstep.views.TaskView>
\ No newline at end of file diff --git a/quickstep/src/com/android/quickstep/views/ClearAllButton.java b/quickstep/src/com/android/quickstep/views/ClearAllButton.java index d5c43a0f5..25e3dc6c1 100644 --- a/quickstep/src/com/android/quickstep/views/ClearAllButton.java +++ b/quickstep/src/com/android/quickstep/views/ClearAllButton.java @@ -19,6 +19,7 @@ package com.android.quickstep.views; import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS; import android.content.Context; +import android.graphics.Rect; import android.os.Bundle; import android.support.annotation.Nullable; import android.util.AttributeSet; @@ -43,4 +44,12 @@ public class ClearAllButton extends Button { } return res; } + + @Override + protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { + super.onFocusChanged(focused, direction, previouslyFocusedRect); + if (focused) { + mRecentsView.revealClearAllButton(); + } + } } diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 91d3350d7..ae8ebbe09 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -41,6 +41,7 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Handler; import android.os.UserHandle; +import android.support.annotation.Nullable; import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; @@ -973,6 +974,13 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (event.getKeyCode()) { case KeyEvent.KEYCODE_TAB: + if (!event.isAltPressed() && + getNextPage() == + (event.isShiftPressed() ? 0 : getChildCount() - 1)) { + // If not Alt-Tab navigation, don't loop forever in the carousel and leave + // it once we reached the end. + return false; + } snapToPageRelative(event.isShiftPressed() ? -1 : 1); return true; case KeyEvent.KEYCODE_DPAD_RIGHT: @@ -998,6 +1006,22 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl return super.dispatchKeyEvent(event); } + @Override + protected void onFocusChanged(boolean gainFocus, int direction, + @Nullable Rect previouslyFocusedRect) { + super.onFocusChanged(gainFocus, direction, previouslyFocusedRect); + if (gainFocus && getChildCount() > 0) { + switch (direction) { + case FOCUS_FORWARD: + setCurrentPage(0); + break; + case FOCUS_BACKWARD: + setCurrentPage(getChildCount() - 1); + break; + } + } + } + public void snapToTaskAfterNext() { snapToPageRelative(1); } @@ -1309,6 +1333,7 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl } public void revealClearAllButton() { + setCurrentPage(getChildCount() - 1); // Loads tasks info if needed. scrollTo(mIsRtl ? 0 : computeMaxScrollX(), 0); } diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java index 429432b2f..06e2e8903 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java +++ b/quickstep/src/com/android/quickstep/views/RecentsViewContainer.java @@ -25,10 +25,13 @@ import android.util.AttributeSet; import android.util.FloatProperty; import android.view.Gravity; import android.view.MotionEvent; +import android.view.View; import com.android.launcher3.InsettableFrameLayout; import com.android.launcher3.R; +import java.util.ArrayList; + public class RecentsViewContainer extends InsettableFrameLayout { public static final FloatProperty<RecentsViewContainer> CONTENT_ALPHA = new FloatProperty<RecentsViewContainer>("contentAlpha") { @@ -104,4 +107,11 @@ public class RecentsViewContainer extends InsettableFrameLayout { mRecentsView.setContentAlpha(alpha); setVisibility(alpha > 0 ? VISIBLE : GONE); } + + @Override + public void addFocusables(ArrayList<View> views, int direction, int focusableMode) { + // Carousel is first in tab order. + views.add(mRecentsView); + views.add(mClearAllButton); + } }
\ No newline at end of file diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml index 5e7b117c4..02d793e1c 100644 --- a/res/layout/all_apps.xml +++ b/res/layout/all_apps.xml @@ -23,8 +23,7 @@ android:layout_height="match_parent" android:clipChildren="true" android:clipToPadding="false" - android:focusable="true" - android:focusableInTouchMode="true" + android:focusable="false" android:saveEnabled="false" > <include layout="@layout/all_apps_rv_layout" /> diff --git a/src/com/android/launcher3/views/ScrimView.java b/src/com/android/launcher3/views/ScrimView.java index 6bbce00fe..ea05cdc5c 100644 --- a/src/com/android/launcher3/views/ScrimView.java +++ b/src/com/android/launcher3/views/ScrimView.java @@ -118,6 +118,7 @@ public class ScrimView extends View implements Insettable, OnChangeListener, ViewCompat.setAccessibilityDelegate(this, mAccessibilityHelper); mAM = (AccessibilityManager) context.getSystemService(ACCESSIBILITY_SERVICE); + setFocusable(false); } @NonNull |