Showing
7 changed files
with
131 additions
and
3 deletions
... | @@ -12,14 +12,19 @@ import android.text.Spanned; | ... | @@ -12,14 +12,19 @@ import android.text.Spanned; |
12 | import android.view.LayoutInflater; | 12 | import android.view.LayoutInflater; |
13 | import android.view.View; | 13 | import android.view.View; |
14 | import android.view.ViewGroup; | 14 | import android.view.ViewGroup; |
15 | +import android.view.accessibility.AccessibilityEvent; | ||
15 | import android.widget.ImageView; | 16 | import android.widget.ImageView; |
16 | import android.widget.LinearLayout; | 17 | import android.widget.LinearLayout; |
17 | import android.widget.RelativeLayout; | 18 | import android.widget.RelativeLayout; |
18 | import android.widget.TextView; | 19 | import android.widget.TextView; |
19 | 20 | ||
21 | +import androidx.annotation.NonNull; | ||
20 | import androidx.appcompat.app.AlertDialog; | 22 | import androidx.appcompat.app.AlertDialog; |
21 | import androidx.cardview.widget.CardView; | 23 | import androidx.cardview.widget.CardView; |
22 | import androidx.core.content.res.ResourcesCompat; | 24 | import androidx.core.content.res.ResourcesCompat; |
25 | +import androidx.core.view.AccessibilityDelegateCompat; | ||
26 | +import androidx.core.view.ViewCompat; | ||
27 | +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; | ||
23 | 28 | ||
24 | import com.bumptech.glide.Glide; | 29 | import com.bumptech.glide.Glide; |
25 | import com.bumptech.glide.load.engine.DiskCacheStrategy; | 30 | import com.bumptech.glide.load.engine.DiskCacheStrategy; |
... | @@ -92,6 +97,68 @@ public class MarketPassActivity extends Activity implements View.OnClickListener | ... | @@ -92,6 +97,68 @@ public class MarketPassActivity extends Activity implements View.OnClickListener |
92 | 97 | ||
93 | mPbLoading.setVisibility(View.VISIBLE); | 98 | mPbLoading.setVisibility(View.VISIBLE); |
94 | // WarplyManager.getMarketPassDetails(mMarketPassDetailsCallback); | 99 | // WarplyManager.getMarketPassDetails(mMarketPassDetailsCallback); |
100 | + | ||
101 | + //Accessibility | ||
102 | + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() { | ||
103 | + @Override | ||
104 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
105 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
106 | + info.setClassName("android.widget.TextView"); | ||
107 | + info.setHeading(true); | ||
108 | + } | ||
109 | + }); | ||
110 | + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); | ||
111 | + | ||
112 | + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() { | ||
113 | + @Override | ||
114 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
115 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
116 | + info.setClassName("android.widget.Button"); | ||
117 | + info.setContentDescription(getString(R.string.accessibility_back)); | ||
118 | + } | ||
119 | + }); | ||
120 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
121 | + mIvBack.postDelayed(() -> { | ||
122 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
123 | + }, 1000); | ||
124 | + | ||
125 | + ViewCompat.setAccessibilityDelegate(mIvInfo, new AccessibilityDelegateCompat() { | ||
126 | + @Override | ||
127 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
128 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
129 | + info.setClassName("android.widget.Button"); | ||
130 | + info.setContentDescription(getString(R.string.cos_market_Pass_info_title)); | ||
131 | + } | ||
132 | + }); | ||
133 | + | ||
134 | + ViewCompat.setAccessibilityDelegate(mTvBarcode, new AccessibilityDelegateCompat() { | ||
135 | + @Override | ||
136 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
137 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
138 | + info.setClassName("android.widget.TextView"); | ||
139 | + info.setContentDescription(getString(R.string.accessibility_market_pass_barcode_value) + ", " + mTvBarcode.getText().toString()); | ||
140 | + } | ||
141 | + }); | ||
142 | + | ||
143 | + mIvBarcode.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
144 | + ViewCompat.setAccessibilityDelegate(mIvBarcode, new AccessibilityDelegateCompat() { | ||
145 | + @Override | ||
146 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
147 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
148 | + info.setClassName("android.widget.ImageView"); | ||
149 | + info.setContentDescription(getString(R.string.accessibility_market_pass_barcode)); | ||
150 | + } | ||
151 | + }); | ||
152 | + | ||
153 | + ViewCompat.setAccessibilityDelegate(mLlMap, new AccessibilityDelegateCompat() { | ||
154 | + @Override | ||
155 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
156 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
157 | + info.setClassName("android.widget.Button"); | ||
158 | + info.setContentDescription(getString(R.string.cos_pass_map)); | ||
159 | + } | ||
160 | + }); | ||
161 | + | ||
95 | initViews(); | 162 | initViews(); |
96 | } | 163 | } |
97 | 164 | ||
... | @@ -148,7 +215,7 @@ public class MarketPassActivity extends Activity implements View.OnClickListener | ... | @@ -148,7 +215,7 @@ public class MarketPassActivity extends Activity implements View.OnClickListener |
148 | mIvInfo.setOnClickListener(this); | 215 | mIvInfo.setOnClickListener(this); |
149 | mLlMap.setOnClickListener(this); | 216 | mLlMap.setOnClickListener(this); |
150 | 217 | ||
151 | - if(WarplyManagerHelper.getMarketPassDetails() != null) { | 218 | + if (WarplyManagerHelper.getMarketPassDetails() != null) { |
152 | // if (mMarketPassDetails != null) | 219 | // if (mMarketPassDetails != null) |
153 | createBarcodeBitmap(WarplyManagerHelper.getMarketPassDetails().getBarcode()); | 220 | createBarcodeBitmap(WarplyManagerHelper.getMarketPassDetails().getBarcode()); |
154 | 221 | ||
... | @@ -179,6 +246,17 @@ public class MarketPassActivity extends Activity implements View.OnClickListener | ... | @@ -179,6 +246,17 @@ public class MarketPassActivity extends Activity implements View.OnClickListener |
179 | .load(WarplyManagerHelper.getMarketPassDetails().getSupermarkets().get(i).getLogo()) | 246 | .load(WarplyManagerHelper.getMarketPassDetails().getSupermarkets().get(i).getLogo()) |
180 | .diskCacheStrategy(DiskCacheStrategy.DATA) | 247 | .diskCacheStrategy(DiskCacheStrategy.DATA) |
181 | .into(merchantLogo); | 248 | .into(merchantLogo); |
249 | + | ||
250 | + merchantLogo.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
251 | + ViewCompat.setAccessibilityDelegate(merchantLogo, new AccessibilityDelegateCompat() { | ||
252 | + @Override | ||
253 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
254 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
255 | + info.setClassName("android.widget.ImageView"); | ||
256 | + info.setContentDescription(WarplyManagerHelper.getMarketPassDetails().getSupermarkets().get(tempIndex).getName()); | ||
257 | + } | ||
258 | + }); | ||
259 | + | ||
182 | mLlParentLogosView.addView(v, tempIndex, new ViewGroup.LayoutParams( | 260 | mLlParentLogosView.addView(v, tempIndex, new ViewGroup.LayoutParams( |
183 | ViewGroup.LayoutParams.WRAP_CONTENT, | 261 | ViewGroup.LayoutParams.WRAP_CONTENT, |
184 | ViewGroup.LayoutParams.WRAP_CONTENT)); | 262 | ViewGroup.LayoutParams.WRAP_CONTENT)); | ... | ... |
... | @@ -3,10 +3,16 @@ package ly.warp.sdk.activities; | ... | @@ -3,10 +3,16 @@ package ly.warp.sdk.activities; |
3 | import android.app.Activity; | 3 | import android.app.Activity; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.view.View; | 5 | import android.view.View; |
6 | +import android.view.accessibility.AccessibilityEvent; | ||
6 | import android.widget.ImageView; | 7 | import android.widget.ImageView; |
7 | import android.widget.LinearLayout; | 8 | import android.widget.LinearLayout; |
8 | import android.widget.TextView; | 9 | import android.widget.TextView; |
9 | 10 | ||
11 | +import androidx.annotation.NonNull; | ||
12 | +import androidx.core.view.AccessibilityDelegateCompat; | ||
13 | +import androidx.core.view.ViewCompat; | ||
14 | +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; | ||
15 | + | ||
10 | import ly.warp.sdk.R; | 16 | import ly.warp.sdk.R; |
11 | import ly.warp.sdk.utils.WarpUtils; | 17 | import ly.warp.sdk.utils.WarpUtils; |
12 | import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; | 18 | import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; |
... | @@ -54,6 +60,39 @@ public class MarketPassInfoActivity extends Activity implements View.OnClickList | ... | @@ -54,6 +60,39 @@ public class MarketPassInfoActivity extends Activity implements View.OnClickList |
54 | WarpUtils.renderCustomFont(this, R.font.peridot_regular, mTvBasketSubtitle, | 60 | WarpUtils.renderCustomFont(this, R.font.peridot_regular, mTvBasketSubtitle, |
55 | mTvEshopSubtitle, mTvAbSubtitle); | 61 | mTvEshopSubtitle, mTvAbSubtitle); |
56 | 62 | ||
63 | + //Accessibility | ||
64 | + ViewCompat.setAccessibilityDelegate(mFontHeader, new AccessibilityDelegateCompat() { | ||
65 | + @Override | ||
66 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
67 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
68 | + info.setClassName("android.widget.TextView"); | ||
69 | + info.setHeading(true); | ||
70 | + } | ||
71 | + }); | ||
72 | + mFontHeader.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED); | ||
73 | + | ||
74 | + ViewCompat.setAccessibilityDelegate(mIvBack, new AccessibilityDelegateCompat() { | ||
75 | + @Override | ||
76 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
77 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
78 | + info.setClassName("android.widget.Button"); | ||
79 | + info.setContentDescription(getString(R.string.accessibility_back)); | ||
80 | + } | ||
81 | + }); | ||
82 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); | ||
83 | + mIvBack.postDelayed(() -> { | ||
84 | + mIvBack.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); | ||
85 | + }, 1000); | ||
86 | + | ||
87 | + ViewCompat.setAccessibilityDelegate(mLlPassReturn, new AccessibilityDelegateCompat() { | ||
88 | + @Override | ||
89 | + public void onInitializeAccessibilityNodeInfo(View host, @NonNull AccessibilityNodeInfoCompat info) { | ||
90 | + super.onInitializeAccessibilityNodeInfo(host, info); | ||
91 | + info.setClassName("android.widget.Button"); | ||
92 | + info.setContentDescription(getString(R.string.cos_market_pass_return)); | ||
93 | + } | ||
94 | + }); | ||
95 | + | ||
57 | initViews(); | 96 | initViews(); |
58 | } | 97 | } |
59 | 98 | ... | ... |
... | @@ -22,6 +22,7 @@ | ... | @@ -22,6 +22,7 @@ |
22 | android:layout_height="48dp" | 22 | android:layout_height="48dp" |
23 | android:layout_marginStart="16dp" | 23 | android:layout_marginStart="16dp" |
24 | android:scaleType="centerInside" | 24 | android:scaleType="centerInside" |
25 | + android:contentDescription="@string/accessibility_back" | ||
25 | android:src="@drawable/ic_back" | 26 | android:src="@drawable/ic_back" |
26 | app:layout_constraintBottom_toBottomOf="parent" | 27 | app:layout_constraintBottom_toBottomOf="parent" |
27 | app:layout_constraintStart_toStartOf="parent" | 28 | app:layout_constraintStart_toStartOf="parent" |
... | @@ -33,6 +34,7 @@ | ... | @@ -33,6 +34,7 @@ |
33 | android:layout_height="wrap_content" | 34 | android:layout_height="wrap_content" |
34 | android:gravity="center" | 35 | android:gravity="center" |
35 | android:text="@string/cos_market_title" | 36 | android:text="@string/cos_market_title" |
37 | + android:contentDescription="@string/cos_market_title" | ||
36 | android:textColor="@color/cos_light_black" | 38 | android:textColor="@color/cos_light_black" |
37 | android:textSize="19sp" | 39 | android:textSize="19sp" |
38 | app:layout_constraintBottom_toBottomOf="parent" | 40 | app:layout_constraintBottom_toBottomOf="parent" |
... | @@ -149,8 +151,7 @@ | ... | @@ -149,8 +151,7 @@ |
149 | android:layout_height="wrap_content" | 151 | android:layout_height="wrap_content" |
150 | android:layout_below="@+id/rl_parent_pass" | 152 | android:layout_below="@+id/rl_parent_pass" |
151 | android:background="@color/cos_green14" | 153 | android:background="@color/cos_green14" |
152 | - android:gravity="center" | 154 | + android:gravity="center"> |
153 | - android:paddingVertical="16dp"> | ||
154 | 155 | ||
155 | <TextView | 156 | <TextView |
156 | android:id="@+id/tv_total_pass_title" | 157 | android:id="@+id/tv_total_pass_title" |
... | @@ -160,6 +161,7 @@ | ... | @@ -160,6 +161,7 @@ |
160 | android:letterSpacing="0.04" | 161 | android:letterSpacing="0.04" |
161 | android:textColor="@color/white" | 162 | android:textColor="@color/white" |
162 | android:textSize="16sp" | 163 | android:textSize="16sp" |
164 | + android:paddingVertical="16dp" | ||
163 | app:lineHeight="22dp" /> | 165 | app:lineHeight="22dp" /> |
164 | </LinearLayout> | 166 | </LinearLayout> |
165 | 167 | ... | ... |
... | @@ -22,6 +22,7 @@ | ... | @@ -22,6 +22,7 @@ |
22 | android:layout_marginStart="16dp" | 22 | android:layout_marginStart="16dp" |
23 | android:scaleType="centerInside" | 23 | android:scaleType="centerInside" |
24 | android:src="@drawable/ic_back" | 24 | android:src="@drawable/ic_back" |
25 | + android:contentDescription="@string/accessibility_back" | ||
25 | app:layout_constraintBottom_toBottomOf="parent" | 26 | app:layout_constraintBottom_toBottomOf="parent" |
26 | app:layout_constraintStart_toStartOf="parent" | 27 | app:layout_constraintStart_toStartOf="parent" |
27 | app:layout_constraintTop_toTopOf="parent" /> | 28 | app:layout_constraintTop_toTopOf="parent" /> |
... | @@ -32,6 +33,7 @@ | ... | @@ -32,6 +33,7 @@ |
32 | android:layout_height="wrap_content" | 33 | android:layout_height="wrap_content" |
33 | android:gravity="center" | 34 | android:gravity="center" |
34 | android:text="@string/cos_market_Pass_info_title" | 35 | android:text="@string/cos_market_Pass_info_title" |
36 | + android:contentDescription="@string/cos_market_Pass_info_title" | ||
35 | android:textColor="@color/cos_light_black" | 37 | android:textColor="@color/cos_light_black" |
36 | android:textSize="19sp" | 38 | android:textSize="19sp" |
37 | app:layout_constraintBottom_toBottomOf="parent" | 39 | app:layout_constraintBottom_toBottomOf="parent" | ... | ... |
... | @@ -16,6 +16,7 @@ | ... | @@ -16,6 +16,7 @@ |
16 | android:layout_height="48dp" | 16 | android:layout_height="48dp" |
17 | android:layout_marginStart="16dp" | 17 | android:layout_marginStart="16dp" |
18 | android:scaleType="centerInside" | 18 | android:scaleType="centerInside" |
19 | + android:contentDescription="@string/accessibility_back" | ||
19 | android:src="@drawable/ic_back" | 20 | android:src="@drawable/ic_back" |
20 | app:layout_constraintBottom_toBottomOf="parent" | 21 | app:layout_constraintBottom_toBottomOf="parent" |
21 | app:layout_constraintStart_toStartOf="parent" | 22 | app:layout_constraintStart_toStartOf="parent" |
... | @@ -26,6 +27,7 @@ | ... | @@ -26,6 +27,7 @@ |
26 | android:layout_width="wrap_content" | 27 | android:layout_width="wrap_content" |
27 | android:layout_height="wrap_content" | 28 | android:layout_height="wrap_content" |
28 | android:text="@string/cos_coupon_shops_title" | 29 | android:text="@string/cos_coupon_shops_title" |
30 | + android:contentDescription="@string/cos_coupon_shops_title" | ||
29 | android:textColor="@color/cos_light_black" | 31 | android:textColor="@color/cos_light_black" |
30 | android:textSize="19sp" | 32 | android:textSize="19sp" |
31 | app:layout_constraintBottom_toBottomOf="parent" | 33 | app:layout_constraintBottom_toBottomOf="parent" | ... | ... |
... | @@ -18,6 +18,7 @@ | ... | @@ -18,6 +18,7 @@ |
18 | android:layout_marginStart="16dp" | 18 | android:layout_marginStart="16dp" |
19 | android:scaleType="centerInside" | 19 | android:scaleType="centerInside" |
20 | android:src="@drawable/ic_back" | 20 | android:src="@drawable/ic_back" |
21 | + android:contentDescription="@string/accessibility_back" | ||
21 | app:layout_constraintBottom_toBottomOf="parent" | 22 | app:layout_constraintBottom_toBottomOf="parent" |
22 | app:layout_constraintStart_toStartOf="parent" | 23 | app:layout_constraintStart_toStartOf="parent" |
23 | app:layout_constraintTop_toTopOf="parent" /> | 24 | app:layout_constraintTop_toTopOf="parent" /> |
... | @@ -27,6 +28,7 @@ | ... | @@ -27,6 +28,7 @@ |
27 | android:layout_width="wrap_content" | 28 | android:layout_width="wrap_content" |
28 | android:layout_height="wrap_content" | 29 | android:layout_height="wrap_content" |
29 | android:text="@string/cos_coupon_shops_title" | 30 | android:text="@string/cos_coupon_shops_title" |
31 | + android:contentDescription="@string/cos_coupon_shops_title" | ||
30 | android:textColor="@color/cos_light_black" | 32 | android:textColor="@color/cos_light_black" |
31 | android:textSize="19sp" | 33 | android:textSize="19sp" |
32 | app:layout_constraintBottom_toBottomOf="parent" | 34 | app:layout_constraintBottom_toBottomOf="parent" | ... | ... |
... | @@ -274,6 +274,9 @@ | ... | @@ -274,6 +274,9 @@ |
274 | <string name="accessibility_phone">Τηλέφωνο</string> | 274 | <string name="accessibility_phone">Τηλέφωνο</string> |
275 | <string name="accessibility_address">Διεύθυνση</string> | 275 | <string name="accessibility_address">Διεύθυνση</string> |
276 | <string name="accessibility_shop_logo">Λογότυπο καταστήματος</string> | 276 | <string name="accessibility_shop_logo">Λογότυπο καταστήματος</string> |
277 | + <string name="accessibility_market_pass_info">Πληροφορίες</string> | ||
278 | + <string name="accessibility_market_pass_barcode_value">Αριθμός barcode</string> | ||
279 | + <string name="accessibility_market_pass_barcode">Barcode</string> | ||
277 | 280 | ||
278 | <string-array name="coupons_array"> | 281 | <string-array name="coupons_array"> |
279 | <item>Κουπόνια</item> | 282 | <item>Κουπόνια</item> | ... | ... |
-
Please register or login to post a comment