Showing
4 changed files
with
414 additions
and
12 deletions
... | @@ -2,6 +2,7 @@ package ly.warp.sdk.activities; | ... | @@ -2,6 +2,7 @@ package ly.warp.sdk.activities; |
2 | 2 | ||
3 | import android.Manifest; | 3 | import android.Manifest; |
4 | import android.content.ActivityNotFoundException; | 4 | import android.content.ActivityNotFoundException; |
5 | +import android.content.Context; | ||
5 | import android.content.Intent; | 6 | import android.content.Intent; |
6 | import android.content.pm.PackageManager; | 7 | import android.content.pm.PackageManager; |
7 | import android.graphics.Bitmap; | 8 | import android.graphics.Bitmap; |
... | @@ -9,11 +10,15 @@ import android.graphics.Canvas; | ... | @@ -9,11 +10,15 @@ import android.graphics.Canvas; |
9 | import android.graphics.drawable.Drawable; | 10 | import android.graphics.drawable.Drawable; |
10 | import android.net.Uri; | 11 | import android.net.Uri; |
11 | import android.os.Bundle; | 12 | import android.os.Bundle; |
13 | +import android.os.Handler; | ||
12 | import android.text.TextUtils; | 14 | import android.text.TextUtils; |
13 | import android.util.Log; | 15 | import android.util.Log; |
14 | import android.view.View; | 16 | import android.view.View; |
17 | +import android.view.accessibility.AccessibilityEvent; | ||
18 | +import android.view.accessibility.AccessibilityManager; | ||
15 | import android.widget.ImageView; | 19 | import android.widget.ImageView; |
16 | import android.widget.LinearLayout; | 20 | import android.widget.LinearLayout; |
21 | +import android.widget.RelativeLayout; | ||
17 | import android.widget.TextView; | 22 | import android.widget.TextView; |
18 | 23 | ||
19 | import androidx.annotation.NonNull; | 24 | import androidx.annotation.NonNull; |
... | @@ -21,6 +26,9 @@ import androidx.annotation.Nullable; | ... | @@ -21,6 +26,9 @@ import androidx.annotation.Nullable; |
21 | import androidx.appcompat.app.AlertDialog; | 26 | import androidx.appcompat.app.AlertDialog; |
22 | import androidx.core.app.ActivityCompat; | 27 | import androidx.core.app.ActivityCompat; |
23 | import androidx.core.content.ContextCompat; | 28 | import androidx.core.content.ContextCompat; |
29 | +import androidx.core.view.AccessibilityDelegateCompat; | ||
30 | +import androidx.core.view.ViewCompat; | ||
31 | +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; | ||
24 | import androidx.fragment.app.FragmentActivity; | 32 | import androidx.fragment.app.FragmentActivity; |
25 | 33 | ||
26 | import com.bumptech.glide.Glide; | 34 | import com.bumptech.glide.Glide; |
... | @@ -104,6 +112,9 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe | ... | @@ -104,6 +112,9 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe |
104 | mIvBack.setOnClickListener(this); | 112 | mIvBack.setOnClickListener(this); |
105 | mFontHeader = findViewById(R.id.textView3); | 113 | mFontHeader = findViewById(R.id.textView3); |
106 | WarpUtils.renderCustomFont(this, R.font.bt_cosmo_bold, mFontHeader); | 114 | WarpUtils.renderCustomFont(this, R.font.bt_cosmo_bold, mFontHeader); |
115 | + | ||
116 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
117 | + mFontHeader.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
107 | } | 118 | } |
108 | 119 | ||
109 | @Override | 120 | @Override |
... | @@ -214,9 +225,12 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe | ... | @@ -214,9 +225,12 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe |
214 | final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this, R.style.BottomSheetDialog); | 225 | final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this, R.style.BottomSheetDialog); |
215 | bottomSheetDialog.setContentView(R.layout.dl_map_pin); | 226 | bottomSheetDialog.setContentView(R.layout.dl_map_pin); |
216 | 227 | ||
217 | - ImageView dialogClose = (ImageView) bottomSheetDialog.findViewById(R.id.iv_map_pin_close); | 228 | + RelativeLayout dialogClose = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_map_pin_close); |
218 | dialogClose.setOnClickListener(view -> bottomSheetDialog.dismiss()); | 229 | dialogClose.setOnClickListener(view -> bottomSheetDialog.dismiss()); |
219 | 230 | ||
231 | + RelativeLayout imagePhone = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_phone); | ||
232 | + RelativeLayout imageLocation = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_location); | ||
233 | + | ||
220 | TextView pinTitle = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_title); | 234 | TextView pinTitle = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_title); |
221 | WarpUtils.renderCustomFont(ShopsActivity.this, R.font.pf_square_sans_pro_bold, pinTitle); | 235 | WarpUtils.renderCustomFont(ShopsActivity.this, R.font.pf_square_sans_pro_bold, pinTitle); |
222 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { | 236 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { |
... | @@ -267,6 +281,122 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe | ... | @@ -267,6 +281,122 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe |
267 | startActivity(mapIntent); | 281 | startActivity(mapIntent); |
268 | }); | 282 | }); |
269 | 283 | ||
284 | + pinTitle.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
285 | + ViewCompat.setAccessibilityDelegate(pinTitle, new AccessibilityDelegateCompat() { | ||
286 | + @Override | ||
287 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
288 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
289 | + info.setClassName("android.widget.TextView"); | ||
290 | + info.setContentDescription(pinTitle.getText().toString()); | ||
291 | + } | ||
292 | + }); | ||
293 | + | ||
294 | + dialogClose.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
295 | + ViewCompat.setAccessibilityDelegate(dialogClose, new AccessibilityDelegateCompat() { | ||
296 | + @Override | ||
297 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
298 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
299 | + info.setClassName("android.widget.Button"); | ||
300 | + info.setContentDescription(getString(R.string.accessibility_close)); | ||
301 | + } | ||
302 | + }); | ||
303 | + | ||
304 | + pinLogo.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
305 | + pinName.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
306 | + pinDays.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
307 | + pinTel.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
308 | + pinAddress.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
309 | + pinDirectionsText.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
310 | + pinDirections.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
311 | + imagePhone.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
312 | + imageLocation.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
313 | + | ||
314 | + View rootView = findViewById(android.R.id.content); | ||
315 | + if (rootView != null) { | ||
316 | + rootView.post(() -> { | ||
317 | + rootView.announceForAccessibility(getString(R.string.accessibility_pin) + ", " + getString(R.string.accessibility_shop) + ", "); | ||
318 | + }); | ||
319 | + | ||
320 | + new Handler().postDelayed(() -> { | ||
321 | + dialogClose.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
322 | + | ||
323 | + pinTitle.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
324 | + pinLogo.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
325 | + ViewCompat.setAccessibilityDelegate(pinLogo, new AccessibilityDelegateCompat() { | ||
326 | + @Override | ||
327 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
328 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
329 | + info.setClassName("android.widget.ImageView"); | ||
330 | + info.setContentDescription(getString(R.string.accessibility_shop_logo)); | ||
331 | + } | ||
332 | + }); | ||
333 | + | ||
334 | + pinName.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
335 | + ViewCompat.setAccessibilityDelegate(pinName, new AccessibilityDelegateCompat() { | ||
336 | + @Override | ||
337 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
338 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
339 | + info.setClassName("android.widget.TextView"); | ||
340 | + info.setContentDescription(merch.getName()); | ||
341 | + } | ||
342 | + }); | ||
343 | + | ||
344 | + pinDays.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
345 | + | ||
346 | + imagePhone.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
347 | + ViewCompat.setAccessibilityDelegate(imagePhone, new AccessibilityDelegateCompat() { | ||
348 | + @Override | ||
349 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
350 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
351 | + info.setClassName("android.widget.ImageView"); | ||
352 | + info.setContentDescription(getString(R.string.accessibility_phone)); | ||
353 | + } | ||
354 | + }); | ||
355 | + | ||
356 | + pinTel.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
357 | + ViewCompat.setAccessibilityDelegate(pinTel, new AccessibilityDelegateCompat() { | ||
358 | + @Override | ||
359 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
360 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
361 | + info.setClassName("android.widget.TextView"); | ||
362 | + info.setContentDescription(WarplyManagerHelper.formatPhoneNumber(merch.getTelephone())); | ||
363 | + } | ||
364 | + }); | ||
365 | + | ||
366 | + imageLocation.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
367 | + ViewCompat.setAccessibilityDelegate(imageLocation, new AccessibilityDelegateCompat() { | ||
368 | + @Override | ||
369 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
370 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
371 | + info.setClassName("android.widget.ImageView"); | ||
372 | + info.setContentDescription(getString(R.string.accessibility_address)); | ||
373 | + } | ||
374 | + }); | ||
375 | + | ||
376 | + pinAddress.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
377 | + ViewCompat.setAccessibilityDelegate(pinAddress, new AccessibilityDelegateCompat() { | ||
378 | + @Override | ||
379 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
380 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
381 | + info.setClassName("android.widget.TextView"); | ||
382 | + info.setContentDescription(merch.getAddress()); | ||
383 | + } | ||
384 | + }); | ||
385 | + | ||
386 | + pinDirectionsText.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
387 | + | ||
388 | + pinDirections.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
389 | + ViewCompat.setAccessibilityDelegate(pinDirections, new AccessibilityDelegateCompat() { | ||
390 | + @Override | ||
391 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
392 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
393 | + info.setClassName("android.widget.Button"); | ||
394 | + info.setContentDescription(getString(R.string.cos_directions)); | ||
395 | + } | ||
396 | + }); | ||
397 | + }, 3000); | ||
398 | + } | ||
399 | + | ||
270 | bottomSheetDialog.show(); | 400 | bottomSheetDialog.show(); |
271 | 401 | ||
272 | return false; | 402 | return false; |
... | @@ -338,6 +468,32 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe | ... | @@ -338,6 +468,32 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe |
338 | return; | 468 | return; |
339 | } | 469 | } |
340 | 470 | ||
471 | + //Accessibility | ||
472 | + mFontHeader.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
473 | + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() { | ||
474 | + @Override | ||
475 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
476 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
477 | + info.setClassName("android.widget.TextView"); | ||
478 | + info.setHeading(true); | ||
479 | + } | ||
480 | + }); | ||
481 | + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); | ||
482 | + | ||
483 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
484 | + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() { | ||
485 | + @Override | ||
486 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
487 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
488 | + info.setClassName("android.widget.Button"); | ||
489 | + info.setContentDescription(getString(R.string.accessibility_back)); | ||
490 | + } | ||
491 | + }); | ||
492 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
493 | + mIvBack.postDelayed(() -> { | ||
494 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
495 | + }, 1000); | ||
496 | + | ||
341 | for (Merchant merch : result) { | 497 | for (Merchant merch : result) { |
342 | if (!TextUtils.isEmpty(merch.getImgPreview())) { | 498 | if (!TextUtils.isEmpty(merch.getImgPreview())) { |
343 | Glide.with(ShopsActivity.this) | 499 | Glide.with(ShopsActivity.this) |
... | @@ -440,6 +596,32 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe | ... | @@ -440,6 +596,32 @@ public class ShopsActivity extends FragmentActivity implements View.OnClickListe |
440 | return; | 596 | return; |
441 | } | 597 | } |
442 | 598 | ||
599 | + //Accessibility | ||
600 | + mFontHeader.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
601 | + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() { | ||
602 | + @Override | ||
603 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
604 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
605 | + info.setClassName("android.widget.TextView"); | ||
606 | + info.setHeading(true); | ||
607 | + } | ||
608 | + }); | ||
609 | + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); | ||
610 | + | ||
611 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
612 | + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() { | ||
613 | + @Override | ||
614 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
615 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
616 | + info.setClassName("android.widget.Button"); | ||
617 | + info.setContentDescription(getString(R.string.accessibility_back)); | ||
618 | + } | ||
619 | + }); | ||
620 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
621 | + mIvBack.postDelayed(() -> { | ||
622 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
623 | + }, 1000); | ||
624 | + | ||
443 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { | 625 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { |
444 | for (Merchant parentMerch : mMerchantParentList) { | 626 | for (Merchant parentMerch : mMerchantParentList) { |
445 | for (Merchant merch : result) { | 627 | for (Merchant merch : result) { | ... | ... |
... | @@ -2,6 +2,7 @@ package ly.warp.sdk.activities; | ... | @@ -2,6 +2,7 @@ package ly.warp.sdk.activities; |
2 | 2 | ||
3 | import android.Manifest; | 3 | import android.Manifest; |
4 | import android.content.ActivityNotFoundException; | 4 | import android.content.ActivityNotFoundException; |
5 | +import android.content.Context; | ||
5 | import android.content.Intent; | 6 | import android.content.Intent; |
6 | import android.content.pm.PackageManager; | 7 | import android.content.pm.PackageManager; |
7 | import android.graphics.Bitmap; | 8 | import android.graphics.Bitmap; |
... | @@ -9,11 +10,15 @@ import android.graphics.Canvas; | ... | @@ -9,11 +10,15 @@ import android.graphics.Canvas; |
9 | import android.graphics.drawable.Drawable; | 10 | import android.graphics.drawable.Drawable; |
10 | import android.net.Uri; | 11 | import android.net.Uri; |
11 | import android.os.Bundle; | 12 | import android.os.Bundle; |
13 | +import android.os.Handler; | ||
12 | import android.text.TextUtils; | 14 | import android.text.TextUtils; |
13 | import android.util.Log; | 15 | import android.util.Log; |
14 | import android.view.View; | 16 | import android.view.View; |
17 | +import android.view.accessibility.AccessibilityEvent; | ||
18 | +import android.view.accessibility.AccessibilityManager; | ||
15 | import android.widget.ImageView; | 19 | import android.widget.ImageView; |
16 | import android.widget.LinearLayout; | 20 | import android.widget.LinearLayout; |
21 | +import android.widget.RelativeLayout; | ||
17 | import android.widget.TextView; | 22 | import android.widget.TextView; |
18 | 23 | ||
19 | import androidx.annotation.NonNull; | 24 | import androidx.annotation.NonNull; |
... | @@ -21,6 +26,9 @@ import androidx.annotation.Nullable; | ... | @@ -21,6 +26,9 @@ import androidx.annotation.Nullable; |
21 | import androidx.appcompat.app.AlertDialog; | 26 | import androidx.appcompat.app.AlertDialog; |
22 | import androidx.core.app.ActivityCompat; | 27 | import androidx.core.app.ActivityCompat; |
23 | import androidx.core.content.ContextCompat; | 28 | import androidx.core.content.ContextCompat; |
29 | +import androidx.core.view.AccessibilityDelegateCompat; | ||
30 | +import androidx.core.view.ViewCompat; | ||
31 | +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; | ||
24 | import androidx.fragment.app.FragmentActivity; | 32 | import androidx.fragment.app.FragmentActivity; |
25 | 33 | ||
26 | import com.bumptech.glide.Glide; | 34 | import com.bumptech.glide.Glide; |
... | @@ -103,6 +111,9 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic | ... | @@ -103,6 +111,9 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic |
103 | mIvBack.setOnClickListener(this); | 111 | mIvBack.setOnClickListener(this); |
104 | mFontHeader = findViewById(R.id.textView3); | 112 | mFontHeader = findViewById(R.id.textView3); |
105 | WarpUtils.renderCustomFont(this, R.font.bt_cosmo_bold, mFontHeader); | 113 | WarpUtils.renderCustomFont(this, R.font.bt_cosmo_bold, mFontHeader); |
114 | + | ||
115 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
116 | + mFontHeader.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
106 | } | 117 | } |
107 | 118 | ||
108 | @Override | 119 | @Override |
... | @@ -215,9 +226,12 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic | ... | @@ -215,9 +226,12 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic |
215 | final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this, R.style.BottomSheetDialog); | 226 | final BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(this, R.style.BottomSheetDialog); |
216 | bottomSheetDialog.setContentView(R.layout.dl_map_pin); | 227 | bottomSheetDialog.setContentView(R.layout.dl_map_pin); |
217 | 228 | ||
218 | - ImageView dialogClose = (ImageView) bottomSheetDialog.findViewById(R.id.iv_map_pin_close); | 229 | + RelativeLayout dialogClose = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_map_pin_close); |
219 | dialogClose.setOnClickListener(view -> bottomSheetDialog.dismiss()); | 230 | dialogClose.setOnClickListener(view -> bottomSheetDialog.dismiss()); |
220 | 231 | ||
232 | + RelativeLayout imagePhone = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_phone); | ||
233 | + RelativeLayout imageLocation = (RelativeLayout) bottomSheetDialog.findViewById(R.id.rl_location); | ||
234 | + | ||
221 | TextView pinTitle = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_title); | 235 | TextView pinTitle = (TextView) bottomSheetDialog.findViewById(R.id.tv_pin_title); |
222 | WarpUtils.renderCustomFont(ShopsHuaweiActivity.this, R.font.pf_square_sans_pro_bold, pinTitle); | 236 | WarpUtils.renderCustomFont(ShopsHuaweiActivity.this, R.font.pf_square_sans_pro_bold, pinTitle); |
223 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { | 237 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { |
... | @@ -271,6 +285,122 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic | ... | @@ -271,6 +285,122 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic |
271 | } | 285 | } |
272 | }); | 286 | }); |
273 | 287 | ||
288 | + pinTitle.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
289 | + ViewCompat.setAccessibilityDelegate(pinTitle, new AccessibilityDelegateCompat() { | ||
290 | + @Override | ||
291 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
292 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
293 | + info.setClassName("android.widget.TextView"); | ||
294 | + info.setContentDescription(pinTitle.getText().toString()); | ||
295 | + } | ||
296 | + }); | ||
297 | + | ||
298 | + dialogClose.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
299 | + ViewCompat.setAccessibilityDelegate(dialogClose, new AccessibilityDelegateCompat() { | ||
300 | + @Override | ||
301 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
302 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
303 | + info.setClassName("android.widget.Button"); | ||
304 | + info.setContentDescription(getString(R.string.accessibility_close)); | ||
305 | + } | ||
306 | + }); | ||
307 | + | ||
308 | + pinLogo.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
309 | + pinName.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
310 | + pinDays.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
311 | + pinTel.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
312 | + pinAddress.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
313 | + pinDirectionsText.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
314 | + pinDirections.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
315 | + imagePhone.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
316 | + imageLocation.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
317 | + | ||
318 | + View rootView = findViewById(android.R.id.content); | ||
319 | + if (rootView != null) { | ||
320 | + rootView.post(() -> { | ||
321 | + rootView.announceForAccessibility(getString(R.string.accessibility_pin) + ", " + getString(R.string.accessibility_shop) + ", "); | ||
322 | + }); | ||
323 | + | ||
324 | + new Handler().postDelayed(() -> { | ||
325 | + dialogClose.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
326 | + | ||
327 | + pinTitle.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
328 | + pinLogo.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
329 | + ViewCompat.setAccessibilityDelegate(pinLogo, new AccessibilityDelegateCompat() { | ||
330 | + @Override | ||
331 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
332 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
333 | + info.setClassName("android.widget.ImageView"); | ||
334 | + info.setContentDescription(getString(R.string.accessibility_shop_logo)); | ||
335 | + } | ||
336 | + }); | ||
337 | + | ||
338 | + pinName.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
339 | + ViewCompat.setAccessibilityDelegate(pinName, new AccessibilityDelegateCompat() { | ||
340 | + @Override | ||
341 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
342 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
343 | + info.setClassName("android.widget.TextView"); | ||
344 | + info.setContentDescription(merch.getName()); | ||
345 | + } | ||
346 | + }); | ||
347 | + | ||
348 | + pinDays.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
349 | + | ||
350 | + imagePhone.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
351 | + ViewCompat.setAccessibilityDelegate(imagePhone, new AccessibilityDelegateCompat() { | ||
352 | + @Override | ||
353 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
354 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
355 | + info.setClassName("android.widget.ImageView"); | ||
356 | + info.setContentDescription(getString(R.string.accessibility_phone)); | ||
357 | + } | ||
358 | + }); | ||
359 | + | ||
360 | + pinTel.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
361 | + ViewCompat.setAccessibilityDelegate(pinTel, new AccessibilityDelegateCompat() { | ||
362 | + @Override | ||
363 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
364 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
365 | + info.setClassName("android.widget.TextView"); | ||
366 | + info.setContentDescription(WarplyManagerHelper.formatPhoneNumber(merch.getTelephone())); | ||
367 | + } | ||
368 | + }); | ||
369 | + | ||
370 | + imageLocation.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
371 | + ViewCompat.setAccessibilityDelegate(imageLocation, new AccessibilityDelegateCompat() { | ||
372 | + @Override | ||
373 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
374 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
375 | + info.setClassName("android.widget.ImageView"); | ||
376 | + info.setContentDescription(getString(R.string.accessibility_address)); | ||
377 | + } | ||
378 | + }); | ||
379 | + | ||
380 | + pinAddress.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
381 | + ViewCompat.setAccessibilityDelegate(pinAddress, new AccessibilityDelegateCompat() { | ||
382 | + @Override | ||
383 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
384 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
385 | + info.setClassName("android.widget.TextView"); | ||
386 | + info.setContentDescription(merch.getAddress()); | ||
387 | + } | ||
388 | + }); | ||
389 | + | ||
390 | + pinDirectionsText.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
391 | + | ||
392 | + pinDirections.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
393 | + ViewCompat.setAccessibilityDelegate(pinDirections, new AccessibilityDelegateCompat() { | ||
394 | + @Override | ||
395 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
396 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
397 | + info.setClassName("android.widget.Button"); | ||
398 | + info.setContentDescription(getString(R.string.cos_directions)); | ||
399 | + } | ||
400 | + }); | ||
401 | + }, 3000); | ||
402 | + } | ||
403 | + | ||
274 | bottomSheetDialog.show(); | 404 | bottomSheetDialog.show(); |
275 | 405 | ||
276 | return false; | 406 | return false; |
... | @@ -355,6 +485,32 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic | ... | @@ -355,6 +485,32 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic |
355 | return; | 485 | return; |
356 | } | 486 | } |
357 | 487 | ||
488 | + //Accessibility | ||
489 | + mFontHeader.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
490 | + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() { | ||
491 | + @Override | ||
492 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
493 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
494 | + info.setClassName("android.widget.TextView"); | ||
495 | + info.setHeading(true); | ||
496 | + } | ||
497 | + }); | ||
498 | + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); | ||
499 | + | ||
500 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
501 | + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() { | ||
502 | + @Override | ||
503 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
504 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
505 | + info.setClassName("android.widget.Button"); | ||
506 | + info.setContentDescription(getString(R.string.accessibility_back)); | ||
507 | + } | ||
508 | + }); | ||
509 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
510 | + mIvBack.postDelayed(() -> { | ||
511 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
512 | + }, 1000); | ||
513 | + | ||
358 | for (Merchant merch : result) { | 514 | for (Merchant merch : result) { |
359 | if (!TextUtils.isEmpty(merch.getImgPreview())) { | 515 | if (!TextUtils.isEmpty(merch.getImgPreview())) { |
360 | Glide.with(ShopsHuaweiActivity.this) | 516 | Glide.with(ShopsHuaweiActivity.this) |
... | @@ -463,6 +619,32 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic | ... | @@ -463,6 +619,32 @@ public class ShopsHuaweiActivity extends FragmentActivity implements View.OnClic |
463 | return; | 619 | return; |
464 | } | 620 | } |
465 | 621 | ||
622 | + //Accessibility | ||
623 | + mFontHeader.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
624 | + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() { | ||
625 | + @Override | ||
626 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
627 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
628 | + info.setClassName("android.widget.TextView"); | ||
629 | + info.setHeading(true); | ||
630 | + } | ||
631 | + }); | ||
632 | + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); | ||
633 | + | ||
634 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
635 | + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() { | ||
636 | + @Override | ||
637 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
638 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
639 | + info.setClassName("android.widget.Button"); | ||
640 | + info.setContentDescription(getString(R.string.accessibility_back)); | ||
641 | + } | ||
642 | + }); | ||
643 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
644 | + mIvBack.postDelayed(() -> { | ||
645 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
646 | + }, 1000); | ||
647 | + | ||
466 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { | 648 | if (mMerchantParentList != null && mMerchantParentList.size() > 0) { |
467 | for (Merchant parentMerch : mMerchantParentList) { | 649 | for (Merchant parentMerch : mMerchantParentList) { |
468 | for (Merchant merch : result) { | 650 | for (Merchant merch : result) { | ... | ... |
... | @@ -10,27 +10,39 @@ | ... | @@ -10,27 +10,39 @@ |
10 | <RelativeLayout | 10 | <RelativeLayout |
11 | android:id="@+id/rl_map_pin" | 11 | android:id="@+id/rl_map_pin" |
12 | android:layout_width="match_parent" | 12 | android:layout_width="match_parent" |
13 | - android:layout_height="wrap_content" | 13 | + android:layout_height="48dp" |
14 | - android:layout_marginBottom="24dp" | 14 | + android:layout_marginTop="8dp" |
15 | - android:paddingHorizontal="24dp" | 15 | + android:layout_marginBottom="24dp"> |
16 | - android:paddingTop="16dp"> | ||
17 | 16 | ||
18 | <TextView | 17 | <TextView |
19 | android:id="@+id/tv_pin_title" | 18 | android:id="@+id/tv_pin_title" |
20 | android:layout_width="wrap_content" | 19 | android:layout_width="wrap_content" |
21 | - android:layout_height="wrap_content" | 20 | + android:layout_height="match_parent" |
22 | android:layout_alignParentStart="true" | 21 | android:layout_alignParentStart="true" |
22 | + android:layout_marginStart="24dp" | ||
23 | + android:gravity="center_vertical" | ||
23 | android:textColor="@color/cos_grey9" | 24 | android:textColor="@color/cos_grey9" |
24 | android:textSize="16sp" | 25 | android:textSize="16sp" |
25 | tools:text="ΓΕΡΜΑΝΟΣ" /> | 26 | tools:text="ΓΕΡΜΑΝΟΣ" /> |
26 | 27 | ||
28 | + <RelativeLayout | ||
29 | + android:id="@+id/rl_map_pin_close" | ||
30 | + android:layout_width="32dp" | ||
31 | + android:layout_height="32dp" | ||
32 | + android:layout_alignParentEnd="true" | ||
33 | + android:layout_centerVertical="true" | ||
34 | + android:layout_gravity="center" | ||
35 | + android:layout_marginEnd="12dp" | ||
36 | + android:gravity="center"> | ||
37 | + | ||
27 | <ImageView | 38 | <ImageView |
28 | android:id="@+id/iv_map_pin_close" | 39 | android:id="@+id/iv_map_pin_close" |
29 | android:layout_width="16dp" | 40 | android:layout_width="16dp" |
30 | android:layout_height="16dp" | 41 | android:layout_height="16dp" |
31 | - android:layout_alignParentEnd="true" | 42 | + android:contentDescription="@string/accessibility_close" |
32 | android:src="@drawable/ic_close" /> | 43 | android:src="@drawable/ic_close" /> |
33 | </RelativeLayout> | 44 | </RelativeLayout> |
45 | + </RelativeLayout> | ||
34 | 46 | ||
35 | <LinearLayout | 47 | <LinearLayout |
36 | android:layout_width="match_parent" | 48 | android:layout_width="match_parent" |
... | @@ -82,18 +94,28 @@ | ... | @@ -82,18 +94,28 @@ |
82 | android:layout_height="36dp" | 94 | android:layout_height="36dp" |
83 | android:gravity="center_vertical" | 95 | android:gravity="center_vertical" |
84 | android:orientation="horizontal" | 96 | android:orientation="horizontal" |
85 | - android:paddingHorizontal="24dp"> | 97 | + android:paddingStart="24dp" |
98 | + android:paddingEnd="24dp"> | ||
99 | + | ||
100 | + <RelativeLayout | ||
101 | + android:id="@+id/rl_phone" | ||
102 | + android:layout_width="28dp" | ||
103 | + android:layout_height="28dp" | ||
104 | + android:gravity="center"> | ||
86 | 105 | ||
87 | <ImageView | 106 | <ImageView |
107 | + android:id="@+id/iv_phone" | ||
88 | android:layout_width="14dp" | 108 | android:layout_width="14dp" |
89 | android:layout_height="14dp" | 109 | android:layout_height="14dp" |
90 | android:src="@drawable/ic_pin_tel" /> | 110 | android:src="@drawable/ic_pin_tel" /> |
111 | + </RelativeLayout> | ||
91 | 112 | ||
92 | <TextView | 113 | <TextView |
93 | android:id="@+id/tv_pin_tel" | 114 | android:id="@+id/tv_pin_tel" |
94 | android:layout_width="wrap_content" | 115 | android:layout_width="wrap_content" |
95 | - android:layout_height="wrap_content" | 116 | + android:layout_height="match_parent" |
96 | android:layout_marginStart="12dp" | 117 | android:layout_marginStart="12dp" |
118 | + android:gravity="center_vertical" | ||
97 | android:textColor="@color/grey" | 119 | android:textColor="@color/grey" |
98 | android:textSize="14sp" | 120 | android:textSize="14sp" |
99 | tools:text="210-6230543" /> | 121 | tools:text="210-6230543" /> |
... | @@ -110,7 +132,8 @@ | ... | @@ -110,7 +132,8 @@ |
110 | android:layout_width="match_parent" | 132 | android:layout_width="match_parent" |
111 | android:layout_height="wrap_content" | 133 | android:layout_height="wrap_content" |
112 | android:layout_marginBottom="16dp" | 134 | android:layout_marginBottom="16dp" |
113 | - android:paddingHorizontal="24dp"> | 135 | + android:paddingStart="24dp" |
136 | + android:paddingEnd="24dp"> | ||
114 | 137 | ||
115 | <LinearLayout | 138 | <LinearLayout |
116 | android:id="@+id/ll_pin_address" | 139 | android:id="@+id/ll_pin_address" |
... | @@ -119,16 +142,25 @@ | ... | @@ -119,16 +142,25 @@ |
119 | android:gravity="center_vertical" | 142 | android:gravity="center_vertical" |
120 | android:orientation="horizontal"> | 143 | android:orientation="horizontal"> |
121 | 144 | ||
145 | + <RelativeLayout | ||
146 | + android:id="@+id/rl_location" | ||
147 | + android:layout_width="28dp" | ||
148 | + android:layout_height="28dp" | ||
149 | + android:gravity="center"> | ||
150 | + | ||
122 | <ImageView | 151 | <ImageView |
152 | + android:id="@+id/iv_location" | ||
123 | android:layout_width="14dp" | 153 | android:layout_width="14dp" |
124 | android:layout_height="14dp" | 154 | android:layout_height="14dp" |
125 | android:src="@drawable/ic_pin_location" /> | 155 | android:src="@drawable/ic_pin_location" /> |
156 | + </RelativeLayout> | ||
126 | 157 | ||
127 | <TextView | 158 | <TextView |
128 | android:id="@+id/tv_pin_address" | 159 | android:id="@+id/tv_pin_address" |
129 | android:layout_width="184dp" | 160 | android:layout_width="184dp" |
130 | - android:layout_height="wrap_content" | 161 | + android:layout_height="match_parent" |
131 | android:layout_marginStart="12dp" | 162 | android:layout_marginStart="12dp" |
163 | + android:gravity="center_vertical" | ||
132 | android:maxLines="2" | 164 | android:maxLines="2" |
133 | android:textColor="@color/grey" | 165 | android:textColor="@color/grey" |
134 | android:textSize="14sp" | 166 | android:textSize="14sp" | ... | ... |
... | @@ -268,6 +268,12 @@ | ... | @@ -268,6 +268,12 @@ |
268 | <string name="accessibility_expand">Ανεπτυγμένο</string> | 268 | <string name="accessibility_expand">Ανεπτυγμένο</string> |
269 | <string name="accessibility_collapse">Συμπτυγμένο</string> | 269 | <string name="accessibility_collapse">Συμπτυγμένο</string> |
270 | <string name="accessibility_activate">Διπλό πάτημα για επιλογή</string> | 270 | <string name="accessibility_activate">Διπλό πάτημα για επιλογή</string> |
271 | + <string name="accessibility_open">Διπλό πάτημα για άνοιγμα</string> | ||
272 | + <string name="accessibility_pin">Πινέζα</string> | ||
273 | + <string name="accessibility_shop">κατάστημα</string> | ||
274 | + <string name="accessibility_phone">Τηλέφωνο</string> | ||
275 | + <string name="accessibility_address">Διεύθυνση</string> | ||
276 | + <string name="accessibility_shop_logo">Λογότυπο καταστήματος</string> | ||
271 | 277 | ||
272 | <string-array name="coupons_array"> | 278 | <string-array name="coupons_array"> |
273 | <item>Κουπόνια</item> | 279 | <item>Κουπόνια</item> | ... | ... |
-
Please register or login to post a comment