Update the snap targets in minimized mode to reflect the correct targets

In minimized mode there is only 1 split snap target compared to regular
portrait that has 30%, 50%, 70% targets. Update the accessibility options
for minimized mode to reflect the correct targets. Also removed the
middle target if there is only 1 split snap target.

Test: using talkback, see custom options on divider handle in minimized
mode
Fixes: 78304300

Change-Id: I8421499616cf0fe503c1f6a081a2151098640a9c
This commit is contained in:
Matthew Ng
2018-05-04 15:42:54 -07:00
parent a5f20a8df4
commit 6317df6e1e
2 changed files with 21 additions and 6 deletions

View File

@@ -370,6 +370,14 @@ public class DividerSnapAlgorithm {
return snapTarget;
}
/**
* @return whether or not there are more than 1 split targets that do not include the two
* dismiss targets, used in deciding to display the middle target for accessibility
*/
public boolean showMiddleSplitTargetForAccessibility() {
return (mTargets.size() - 2) > 1;
}
public boolean isFirstSplitTargetAvailable() {
return mFirstSplitTarget != mMiddleTarget;
}

View File

@@ -180,16 +180,20 @@ public class DividerView extends FrameLayout implements OnTouchListener,
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
final DividerSnapAlgorithm snapAlgorithm = getSnapAlgorithm();
if (isHorizontalDivision()) {
info.addAction(new AccessibilityAction(R.id.action_move_tl_full,
mContext.getString(R.string.accessibility_action_divider_top_full)));
if (mSnapAlgorithm.isFirstSplitTargetAvailable()) {
if (snapAlgorithm.isFirstSplitTargetAvailable()) {
info.addAction(new AccessibilityAction(R.id.action_move_tl_70,
mContext.getString(R.string.accessibility_action_divider_top_70)));
}
info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
if (snapAlgorithm.showMiddleSplitTargetForAccessibility()) {
// Only show the middle target if there are more than 1 split target
info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
mContext.getString(R.string.accessibility_action_divider_top_50)));
if (mSnapAlgorithm.isLastSplitTargetAvailable()) {
}
if (snapAlgorithm.isLastSplitTargetAvailable()) {
info.addAction(new AccessibilityAction(R.id.action_move_tl_30,
mContext.getString(R.string.accessibility_action_divider_top_30)));
}
@@ -198,13 +202,16 @@ public class DividerView extends FrameLayout implements OnTouchListener,
} else {
info.addAction(new AccessibilityAction(R.id.action_move_tl_full,
mContext.getString(R.string.accessibility_action_divider_left_full)));
if (mSnapAlgorithm.isFirstSplitTargetAvailable()) {
if (snapAlgorithm.isFirstSplitTargetAvailable()) {
info.addAction(new AccessibilityAction(R.id.action_move_tl_70,
mContext.getString(R.string.accessibility_action_divider_left_70)));
}
info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
if (snapAlgorithm.showMiddleSplitTargetForAccessibility()) {
// Only show the middle target if there are more than 1 split target
info.addAction(new AccessibilityAction(R.id.action_move_tl_50,
mContext.getString(R.string.accessibility_action_divider_left_50)));
if (mSnapAlgorithm.isLastSplitTargetAvailable()) {
}
if (snapAlgorithm.isLastSplitTargetAvailable()) {
info.addAction(new AccessibilityAction(R.id.action_move_tl_30,
mContext.getString(R.string.accessibility_action_divider_left_30)));
}