Showing
15 changed files
with
255 additions
and
47 deletions
... | @@ -6,12 +6,20 @@ import android.os.Bundle; | ... | @@ -6,12 +6,20 @@ import android.os.Bundle; |
6 | import android.util.TypedValue; | 6 | import android.util.TypedValue; |
7 | import android.view.View; | 7 | import android.view.View; |
8 | import android.widget.ImageView; | 8 | import android.widget.ImageView; |
9 | +import android.widget.LinearLayout; | ||
9 | import android.widget.TextView; | 10 | import android.widget.TextView; |
10 | 11 | ||
12 | +import androidx.annotation.NonNull; | ||
11 | import androidx.recyclerview.widget.LinearLayoutManager; | 13 | import androidx.recyclerview.widget.LinearLayoutManager; |
12 | import androidx.recyclerview.widget.RecyclerView; | 14 | import androidx.recyclerview.widget.RecyclerView; |
15 | +import androidx.viewpager2.widget.ViewPager2; | ||
16 | + | ||
17 | +import java.util.ArrayList; | ||
18 | +import java.util.Arrays; | ||
19 | +import java.util.List; | ||
13 | 20 | ||
14 | import ly.warp.sdk.R; | 21 | import ly.warp.sdk.R; |
22 | +import ly.warp.sdk.io.adapters.BannerAdapter; | ||
15 | import ly.warp.sdk.io.adapters.OfferAdapter; | 23 | import ly.warp.sdk.io.adapters.OfferAdapter; |
16 | import ly.warp.sdk.io.models.DummyDataProvider; | 24 | import ly.warp.sdk.io.models.DummyDataProvider; |
17 | import ly.warp.sdk.io.models.OfferCategory; | 25 | import ly.warp.sdk.io.models.OfferCategory; |
... | @@ -28,7 +36,10 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | ... | @@ -28,7 +36,10 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe |
28 | // =========================================================== | 36 | // =========================================================== |
29 | // Fields | 37 | // Fields |
30 | // =========================================================== | 38 | // =========================================================== |
31 | - private ImageView mIvBanner; | 39 | + private ViewPager2 mBannerViewPager; |
40 | + private BannerAdapter mBannerAdapter; | ||
41 | + private LinearLayout mDotsContainer; | ||
42 | + private List<ImageView> mDots; | ||
32 | 43 | ||
33 | // Category sections | 44 | // Category sections |
34 | private TextView mTvCategoryTopOffers; | 45 | private TextView mTvCategoryTopOffers; |
... | @@ -95,9 +106,7 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | ... | @@ -95,9 +106,7 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe |
95 | 106 | ||
96 | @Override | 107 | @Override |
97 | public void onClick(View v) { | 108 | public void onClick(View v) { |
98 | - if (v.getId() == R.id.banner_icon) { | 109 | + // No longer needed as banner clicks are handled by the adapter |
99 | - WarplyManagerHelper.openContest(this); | ||
100 | - } | ||
101 | } | 110 | } |
102 | 111 | ||
103 | @Override | 112 | @Override |
... | @@ -117,9 +126,8 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | ... | @@ -117,9 +126,8 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe |
117 | // =========================================================== | 126 | // =========================================================== |
118 | 127 | ||
119 | private void initViews() { | 128 | private void initViews() { |
120 | - // Initialize banner | 129 | + // Initialize banner carousel |
121 | - mIvBanner = findViewById(R.id.banner_icon); | 130 | + setupBannerCarousel(); |
122 | - mIvBanner.setOnClickListener(this); | ||
123 | 131 | ||
124 | // Initialize Top Offers section | 132 | // Initialize Top Offers section |
125 | mTvCategoryTopOffers = findViewById(R.id.tv_recycler_category1); | 133 | mTvCategoryTopOffers = findViewById(R.id.tv_recycler_category1); |
... | @@ -378,6 +386,89 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe | ... | @@ -378,6 +386,89 @@ public class HomeActivity extends Activity implements View.OnClickListener, Offe |
378 | } | 386 | } |
379 | 387 | ||
380 | // =========================================================== | 388 | // =========================================================== |
381 | - // Inner and Anonymous Classes | 389 | + // Methods |
382 | // =========================================================== | 390 | // =========================================================== |
391 | + | ||
392 | + /** | ||
393 | + * Sets up the banner carousel with ViewPager2 and pagination dots | ||
394 | + */ | ||
395 | + private void setupBannerCarousel() { | ||
396 | + mBannerViewPager = findViewById(R.id.banner_viewpager); | ||
397 | + mDotsContainer = findViewById(R.id.dots_container); | ||
398 | + | ||
399 | + // Setup adapter with 5 banner images | ||
400 | + List<Integer> bannerImages = getBannerImages(); | ||
401 | + mBannerAdapter = new BannerAdapter(this, bannerImages); | ||
402 | + mBannerAdapter.setOnBannerClickListener(position -> { | ||
403 | + // Handle banner click (same as the original banner click) | ||
404 | + WarplyManagerHelper.openContest(this); | ||
405 | + }); | ||
406 | + | ||
407 | + mBannerViewPager.setAdapter(mBannerAdapter); | ||
408 | + | ||
409 | + // Setup pagination dots | ||
410 | + setupPaginationDots(bannerImages.size()); | ||
411 | + | ||
412 | + // Handle page changes | ||
413 | + mBannerViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { | ||
414 | + @Override | ||
415 | + public void onPageSelected(int position) { | ||
416 | + updateDots(position); | ||
417 | + } | ||
418 | + }); | ||
419 | + } | ||
420 | + | ||
421 | + /** | ||
422 | + * Returns a list of banner image resource IDs | ||
423 | + */ | ||
424 | + private List<Integer> getBannerImages() { | ||
425 | + return Arrays.asList( | ||
426 | + R.drawable.demo_home_banner1, | ||
427 | + R.drawable.demo_home_banner2, | ||
428 | + R.drawable.demo_home_banner3, | ||
429 | + R.drawable.demo_home_banner4, | ||
430 | + R.drawable.demo_home_banner5 | ||
431 | + ); | ||
432 | + } | ||
433 | + | ||
434 | + /** | ||
435 | + * Sets up the pagination dots | ||
436 | + * @param count Number of dots to display | ||
437 | + */ | ||
438 | + private void setupPaginationDots(int count) { | ||
439 | + mDots = new ArrayList<>(); | ||
440 | + mDotsContainer.removeAllViews(); | ||
441 | + | ||
442 | + // Create dots | ||
443 | + for (int i = 0; i < count; i++) { | ||
444 | + ImageView dot = new ImageView(this); | ||
445 | + | ||
446 | + // Set dot appearance | ||
447 | + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( | ||
448 | + LinearLayout.LayoutParams.WRAP_CONTENT, | ||
449 | + LinearLayout.LayoutParams.WRAP_CONTENT | ||
450 | + ); | ||
451 | + | ||
452 | + // Add margin between dots | ||
453 | + params.setMargins(8, 0, 8, 0); | ||
454 | + dot.setLayoutParams(params); | ||
455 | + | ||
456 | + // Set initial state (first dot active, others inactive) | ||
457 | + dot.setImageResource(i == 0 ? R.drawable.dot_active : R.drawable.dot_inactive); | ||
458 | + | ||
459 | + // Add to container and list | ||
460 | + mDotsContainer.addView(dot); | ||
461 | + mDots.add(dot); | ||
462 | + } | ||
463 | + } | ||
464 | + | ||
465 | + /** | ||
466 | + * Updates the dots to reflect the current page | ||
467 | + * @param position Current page position | ||
468 | + */ | ||
469 | + private void updateDots(int position) { | ||
470 | + for (int i = 0; i < mDots.size(); i++) { | ||
471 | + mDots.get(i).setImageResource(i == position ? R.drawable.dot_active : R.drawable.dot_inactive); | ||
472 | + } | ||
473 | + } | ||
383 | } | 474 | } | ... | ... |
... | @@ -179,7 +179,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen | ... | @@ -179,7 +179,7 @@ public class SingleCouponActivity extends Activity implements View.OnClickListen |
179 | // Populate views with offer data | 179 | // Populate views with offer data |
180 | if (mOfferItem != null) { | 180 | if (mOfferItem != null) { |
181 | mTvValue.setText(mOfferItem.getValue()); | 181 | mTvValue.setText(mOfferItem.getValue()); |
182 | - mTvSmallDescription.setText(mOfferItem.getDescription()); | 182 | +// mTvSmallDescription.setText(mOfferItem.getDescription()); |
183 | 183 | ||
184 | // Store the full description text | 184 | // Store the full description text |
185 | mFullDescriptionText = mOfferItem.getFullDescription(); | 185 | mFullDescriptionText = mOfferItem.getFullDescription(); | ... | ... |
1 | +package ly.warp.sdk.io.adapters; | ||
2 | + | ||
3 | +import android.content.Context; | ||
4 | +import android.view.LayoutInflater; | ||
5 | +import android.view.View; | ||
6 | +import android.view.ViewGroup; | ||
7 | +import android.widget.ImageView; | ||
8 | + | ||
9 | +import androidx.annotation.NonNull; | ||
10 | +import androidx.recyclerview.widget.RecyclerView; | ||
11 | + | ||
12 | +import java.util.List; | ||
13 | + | ||
14 | +import ly.warp.sdk.R; | ||
15 | + | ||
16 | +public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerViewHolder> { | ||
17 | + | ||
18 | + private final Context mContext; | ||
19 | + private final List<Integer> mBannerImages; | ||
20 | + private OnBannerClickListener mListener; | ||
21 | + | ||
22 | + public interface OnBannerClickListener { | ||
23 | + void onBannerClick(int position); | ||
24 | + } | ||
25 | + | ||
26 | + public BannerAdapter(Context context, List<Integer> bannerImages) { | ||
27 | + this.mContext = context; | ||
28 | + this.mBannerImages = bannerImages; | ||
29 | + } | ||
30 | + | ||
31 | + public void setOnBannerClickListener(OnBannerClickListener listener) { | ||
32 | + this.mListener = listener; | ||
33 | + } | ||
34 | + | ||
35 | + @NonNull | ||
36 | + @Override | ||
37 | + public BannerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | ||
38 | + View view = LayoutInflater.from(mContext).inflate(R.layout.item_banner, parent, false); | ||
39 | + return new BannerViewHolder(view); | ||
40 | + } | ||
41 | + | ||
42 | + @Override | ||
43 | + public void onBindViewHolder(@NonNull BannerViewHolder holder, int position) { | ||
44 | + holder.imageView.setImageResource(mBannerImages.get(position)); | ||
45 | + | ||
46 | + holder.itemView.setOnClickListener(v -> { | ||
47 | + if (mListener != null) { | ||
48 | + mListener.onBannerClick(position); | ||
49 | + } | ||
50 | + }); | ||
51 | + } | ||
52 | + | ||
53 | + @Override | ||
54 | + public int getItemCount() { | ||
55 | + return mBannerImages.size(); | ||
56 | + } | ||
57 | + | ||
58 | + static class BannerViewHolder extends RecyclerView.ViewHolder { | ||
59 | + ImageView imageView; | ||
60 | + | ||
61 | + BannerViewHolder(@NonNull View itemView) { | ||
62 | + super(itemView); | ||
63 | + imageView = itemView.findViewById(R.id.iv_banner); | ||
64 | + } | ||
65 | + } | ||
66 | +} |

250 KB

229 KB

205 KB

208 KB

214 KB
1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | 1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
2 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
2 | xmlns:tools="http://schemas.android.com/tools" | 3 | xmlns:tools="http://schemas.android.com/tools" |
3 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
4 | android:layout_height="match_parent" | 5 | android:layout_height="match_parent" |
... | @@ -53,12 +54,31 @@ | ... | @@ -53,12 +54,31 @@ |
53 | android:src="@drawable/demo_profile" /> | 54 | android:src="@drawable/demo_profile" /> |
54 | </LinearLayout> | 55 | </LinearLayout> |
55 | 56 | ||
56 | - <ImageView | 57 | + <androidx.constraintlayout.widget.ConstraintLayout |
57 | - android:id="@+id/banner_icon" | ||
58 | android:layout_width="match_parent" | 58 | android:layout_width="match_parent" |
59 | - android:layout_height="320dp" | 59 | + android:layout_height="wrap_content"> |
60 | - android:scaleType="fitXY" | 60 | + |
61 | - android:src="@drawable/demo_home_banner" /> | 61 | + <androidx.viewpager2.widget.ViewPager2 |
62 | + android:id="@+id/banner_viewpager" | ||
63 | + android:layout_width="match_parent" | ||
64 | + android:layout_height="320dp" | ||
65 | + app:layout_constraintBottom_toBottomOf="parent" | ||
66 | + app:layout_constraintEnd_toEndOf="parent" | ||
67 | + app:layout_constraintStart_toStartOf="parent" | ||
68 | + app:layout_constraintTop_toTopOf="parent" /> | ||
69 | + | ||
70 | + <LinearLayout | ||
71 | + android:id="@+id/dots_container" | ||
72 | + android:layout_width="match_parent" | ||
73 | + android:layout_height="50dp" | ||
74 | + android:background="@color/cos_grey_light" | ||
75 | + android:gravity="center" | ||
76 | + android:orientation="horizontal" | ||
77 | + android:padding="4dp" | ||
78 | + app:layout_constraintBottom_toBottomOf="parent" | ||
79 | + app:layout_constraintEnd_toEndOf="parent" | ||
80 | + app:layout_constraintStart_toStartOf="parent" /> | ||
81 | + </androidx.constraintlayout.widget.ConstraintLayout> | ||
62 | 82 | ||
63 | <!-- Top Offers Section --> | 83 | <!-- Top Offers Section --> |
64 | <RelativeLayout | 84 | <RelativeLayout |
... | @@ -71,8 +91,8 @@ | ... | @@ -71,8 +91,8 @@ |
71 | android:layout_width="match_parent" | 91 | android:layout_width="match_parent" |
72 | android:layout_height="wrap_content" | 92 | android:layout_height="wrap_content" |
73 | android:layout_gravity="center" | 93 | android:layout_gravity="center" |
74 | - android:paddingHorizontal="16dp" | 94 | + android:orientation="horizontal" |
75 | - android:orientation="horizontal"> | 95 | + android:paddingHorizontal="16dp"> |
76 | 96 | ||
77 | <TextView | 97 | <TextView |
78 | android:id="@+id/tv_recycler_category1" | 98 | android:id="@+id/tv_recycler_category1" |
... | @@ -101,9 +121,9 @@ | ... | @@ -101,9 +121,9 @@ |
101 | android:layout_height="wrap_content" | 121 | android:layout_height="wrap_content" |
102 | android:layout_below="@+id/ll_recycler1" | 122 | android:layout_below="@+id/ll_recycler1" |
103 | android:layout_marginTop="16dp" | 123 | android:layout_marginTop="16dp" |
124 | + android:clipToPadding="false" | ||
104 | android:orientation="horizontal" | 125 | android:orientation="horizontal" |
105 | - android:paddingHorizontal="16dp" | 126 | + android:paddingHorizontal="16dp" /> |
106 | - android:clipToPadding="false" /> | ||
107 | </RelativeLayout> | 127 | </RelativeLayout> |
108 | 128 | ||
109 | <!-- Favorites Section --> | 129 | <!-- Favorites Section --> |
... | @@ -117,8 +137,8 @@ | ... | @@ -117,8 +137,8 @@ |
117 | android:layout_width="match_parent" | 137 | android:layout_width="match_parent" |
118 | android:layout_height="wrap_content" | 138 | android:layout_height="wrap_content" |
119 | android:layout_gravity="center" | 139 | android:layout_gravity="center" |
120 | - android:paddingHorizontal="16dp" | 140 | + android:orientation="horizontal" |
121 | - android:orientation="horizontal"> | 141 | + android:paddingHorizontal="16dp"> |
122 | 142 | ||
123 | <TextView | 143 | <TextView |
124 | android:id="@+id/tv_recycler_category2" | 144 | android:id="@+id/tv_recycler_category2" |
... | @@ -147,9 +167,9 @@ | ... | @@ -147,9 +167,9 @@ |
147 | android:layout_height="wrap_content" | 167 | android:layout_height="wrap_content" |
148 | android:layout_below="@+id/ll_recycler2" | 168 | android:layout_below="@+id/ll_recycler2" |
149 | android:layout_marginTop="16dp" | 169 | android:layout_marginTop="16dp" |
170 | + android:clipToPadding="false" | ||
150 | android:orientation="horizontal" | 171 | android:orientation="horizontal" |
151 | - android:paddingHorizontal="16dp" | 172 | + android:paddingHorizontal="16dp" /> |
152 | - android:clipToPadding="false" /> | ||
153 | </RelativeLayout> | 173 | </RelativeLayout> |
154 | 174 | ||
155 | <!-- Viability Section --> | 175 | <!-- Viability Section --> |
... | @@ -163,8 +183,8 @@ | ... | @@ -163,8 +183,8 @@ |
163 | android:layout_width="match_parent" | 183 | android:layout_width="match_parent" |
164 | android:layout_height="wrap_content" | 184 | android:layout_height="wrap_content" |
165 | android:layout_gravity="center" | 185 | android:layout_gravity="center" |
166 | - android:paddingHorizontal="16dp" | 186 | + android:orientation="horizontal" |
167 | - android:orientation="horizontal"> | 187 | + android:paddingHorizontal="16dp"> |
168 | 188 | ||
169 | <TextView | 189 | <TextView |
170 | android:id="@+id/tv_recycler_category3" | 190 | android:id="@+id/tv_recycler_category3" |
... | @@ -193,9 +213,9 @@ | ... | @@ -193,9 +213,9 @@ |
193 | android:layout_height="wrap_content" | 213 | android:layout_height="wrap_content" |
194 | android:layout_below="@+id/ll_recycler3" | 214 | android:layout_below="@+id/ll_recycler3" |
195 | android:layout_marginTop="16dp" | 215 | android:layout_marginTop="16dp" |
216 | + android:clipToPadding="false" | ||
196 | android:orientation="horizontal" | 217 | android:orientation="horizontal" |
197 | - android:paddingHorizontal="16dp" | 218 | + android:paddingHorizontal="16dp" /> |
198 | - android:clipToPadding="false" /> | ||
199 | </RelativeLayout> | 219 | </RelativeLayout> |
200 | 220 | ||
201 | <!-- Family Section --> | 221 | <!-- Family Section --> |
... | @@ -209,8 +229,8 @@ | ... | @@ -209,8 +229,8 @@ |
209 | android:layout_width="match_parent" | 229 | android:layout_width="match_parent" |
210 | android:layout_height="wrap_content" | 230 | android:layout_height="wrap_content" |
211 | android:layout_gravity="center" | 231 | android:layout_gravity="center" |
212 | - android:paddingHorizontal="16dp" | 232 | + android:orientation="horizontal" |
213 | - android:orientation="horizontal"> | 233 | + android:paddingHorizontal="16dp"> |
214 | 234 | ||
215 | <TextView | 235 | <TextView |
216 | android:id="@+id/tv_recycler_category4" | 236 | android:id="@+id/tv_recycler_category4" |
... | @@ -239,9 +259,9 @@ | ... | @@ -239,9 +259,9 @@ |
239 | android:layout_height="wrap_content" | 259 | android:layout_height="wrap_content" |
240 | android:layout_below="@+id/ll_recycler4" | 260 | android:layout_below="@+id/ll_recycler4" |
241 | android:layout_marginTop="16dp" | 261 | android:layout_marginTop="16dp" |
262 | + android:clipToPadding="false" | ||
242 | android:orientation="horizontal" | 263 | android:orientation="horizontal" |
243 | - android:paddingHorizontal="16dp" | 264 | + android:paddingHorizontal="16dp" /> |
244 | - android:clipToPadding="false" /> | ||
245 | </RelativeLayout> | 265 | </RelativeLayout> |
246 | 266 | ||
247 | <!-- Food and Coffee Section --> | 267 | <!-- Food and Coffee Section --> |
... | @@ -255,8 +275,8 @@ | ... | @@ -255,8 +275,8 @@ |
255 | android:layout_width="match_parent" | 275 | android:layout_width="match_parent" |
256 | android:layout_height="wrap_content" | 276 | android:layout_height="wrap_content" |
257 | android:layout_gravity="center" | 277 | android:layout_gravity="center" |
258 | - android:paddingHorizontal="16dp" | 278 | + android:orientation="horizontal" |
259 | - android:orientation="horizontal"> | 279 | + android:paddingHorizontal="16dp"> |
260 | 280 | ||
261 | <TextView | 281 | <TextView |
262 | android:id="@+id/tv_recycler_category5" | 282 | android:id="@+id/tv_recycler_category5" |
... | @@ -285,9 +305,9 @@ | ... | @@ -285,9 +305,9 @@ |
285 | android:layout_height="wrap_content" | 305 | android:layout_height="wrap_content" |
286 | android:layout_below="@+id/ll_recycler5" | 306 | android:layout_below="@+id/ll_recycler5" |
287 | android:layout_marginTop="16dp" | 307 | android:layout_marginTop="16dp" |
308 | + android:clipToPadding="false" | ||
288 | android:orientation="horizontal" | 309 | android:orientation="horizontal" |
289 | - android:paddingHorizontal="16dp" | 310 | + android:paddingHorizontal="16dp" /> |
290 | - android:clipToPadding="false" /> | ||
291 | </RelativeLayout> | 311 | </RelativeLayout> |
292 | 312 | ||
293 | <!-- Travelling Section --> | 313 | <!-- Travelling Section --> |
... | @@ -301,8 +321,8 @@ | ... | @@ -301,8 +321,8 @@ |
301 | android:layout_width="match_parent" | 321 | android:layout_width="match_parent" |
302 | android:layout_height="wrap_content" | 322 | android:layout_height="wrap_content" |
303 | android:layout_gravity="center" | 323 | android:layout_gravity="center" |
304 | - android:paddingHorizontal="16dp" | 324 | + android:orientation="horizontal" |
305 | - android:orientation="horizontal"> | 325 | + android:paddingHorizontal="16dp"> |
306 | 326 | ||
307 | <TextView | 327 | <TextView |
308 | android:id="@+id/tv_recycler_category6" | 328 | android:id="@+id/tv_recycler_category6" |
... | @@ -331,9 +351,9 @@ | ... | @@ -331,9 +351,9 @@ |
331 | android:layout_height="wrap_content" | 351 | android:layout_height="wrap_content" |
332 | android:layout_below="@+id/ll_recycler6" | 352 | android:layout_below="@+id/ll_recycler6" |
333 | android:layout_marginTop="16dp" | 353 | android:layout_marginTop="16dp" |
354 | + android:clipToPadding="false" | ||
334 | android:orientation="horizontal" | 355 | android:orientation="horizontal" |
335 | - android:paddingHorizontal="16dp" | 356 | + android:paddingHorizontal="16dp" /> |
336 | - android:clipToPadding="false" /> | ||
337 | </RelativeLayout> | 357 | </RelativeLayout> |
338 | 358 | ||
339 | <!-- Kids Section --> | 359 | <!-- Kids Section --> |
... | @@ -347,8 +367,8 @@ | ... | @@ -347,8 +367,8 @@ |
347 | android:layout_width="match_parent" | 367 | android:layout_width="match_parent" |
348 | android:layout_height="wrap_content" | 368 | android:layout_height="wrap_content" |
349 | android:layout_gravity="center" | 369 | android:layout_gravity="center" |
350 | - android:paddingHorizontal="16dp" | 370 | + android:orientation="horizontal" |
351 | - android:orientation="horizontal"> | 371 | + android:paddingHorizontal="16dp"> |
352 | 372 | ||
353 | <TextView | 373 | <TextView |
354 | android:id="@+id/tv_recycler_category7" | 374 | android:id="@+id/tv_recycler_category7" |
... | @@ -377,9 +397,9 @@ | ... | @@ -377,9 +397,9 @@ |
377 | android:layout_height="wrap_content" | 397 | android:layout_height="wrap_content" |
378 | android:layout_below="@+id/ll_recycler7" | 398 | android:layout_below="@+id/ll_recycler7" |
379 | android:layout_marginTop="16dp" | 399 | android:layout_marginTop="16dp" |
400 | + android:clipToPadding="false" | ||
380 | android:orientation="horizontal" | 401 | android:orientation="horizontal" |
381 | - android:paddingHorizontal="16dp" | 402 | + android:paddingHorizontal="16dp" /> |
382 | - android:clipToPadding="false" /> | ||
383 | </RelativeLayout> | 403 | </RelativeLayout> |
384 | 404 | ||
385 | <!-- Purchases Section --> | 405 | <!-- Purchases Section --> |
... | @@ -394,8 +414,8 @@ | ... | @@ -394,8 +414,8 @@ |
394 | android:layout_width="match_parent" | 414 | android:layout_width="match_parent" |
395 | android:layout_height="wrap_content" | 415 | android:layout_height="wrap_content" |
396 | android:layout_gravity="center" | 416 | android:layout_gravity="center" |
397 | - android:paddingHorizontal="16dp" | 417 | + android:orientation="horizontal" |
398 | - android:orientation="horizontal"> | 418 | + android:paddingHorizontal="16dp"> |
399 | 419 | ||
400 | <TextView | 420 | <TextView |
401 | android:id="@+id/tv_recycler_category8" | 421 | android:id="@+id/tv_recycler_category8" |
... | @@ -424,9 +444,9 @@ | ... | @@ -424,9 +444,9 @@ |
424 | android:layout_height="wrap_content" | 444 | android:layout_height="wrap_content" |
425 | android:layout_below="@+id/ll_recycler8" | 445 | android:layout_below="@+id/ll_recycler8" |
426 | android:layout_marginTop="16dp" | 446 | android:layout_marginTop="16dp" |
447 | + android:clipToPadding="false" | ||
427 | android:orientation="horizontal" | 448 | android:orientation="horizontal" |
428 | - android:paddingHorizontal="16dp" | 449 | + android:paddingHorizontal="16dp" /> |
429 | - android:clipToPadding="false" /> | ||
430 | </RelativeLayout> | 450 | </RelativeLayout> |
431 | </LinearLayout> | 451 | </LinearLayout> |
432 | </androidx.core.widget.NestedScrollView> | 452 | </androidx.core.widget.NestedScrollView> | ... | ... |
... | @@ -60,7 +60,7 @@ | ... | @@ -60,7 +60,7 @@ |
60 | android:layout_width="match_parent" | 60 | android:layout_width="match_parent" |
61 | android:layout_height="match_parent" | 61 | android:layout_height="match_parent" |
62 | android:scaleType="fitXY" | 62 | android:scaleType="fitXY" |
63 | - android:src="@drawable/demo_home_banner" | 63 | + tools:src="@drawable/demo_home_banner1" |
64 | app:layout_constraintBottom_toBottomOf="parent" | 64 | app:layout_constraintBottom_toBottomOf="parent" |
65 | app:layout_constraintEnd_toEndOf="parent" | 65 | app:layout_constraintEnd_toEndOf="parent" |
66 | app:layout_constraintStart_toStartOf="parent" | 66 | app:layout_constraintStart_toStartOf="parent" | ... | ... |
1 | +<?xml version="1.0" encoding="utf-8"?> | ||
2 | +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
4 | + android:layout_width="match_parent" | ||
5 | + android:layout_height="match_parent"> | ||
6 | + | ||
7 | + <ImageView | ||
8 | + android:id="@+id/iv_banner" | ||
9 | + android:layout_width="match_parent" | ||
10 | + android:layout_height="match_parent" | ||
11 | + android:scaleType="fitXY" | ||
12 | + app:layout_constraintBottom_toBottomOf="parent" | ||
13 | + app:layout_constraintEnd_toEndOf="parent" | ||
14 | + app:layout_constraintStart_toStartOf="parent" | ||
15 | + app:layout_constraintTop_toTopOf="parent" /> | ||
16 | + | ||
17 | +</androidx.constraintlayout.widget.ConstraintLayout> |
... | @@ -23,6 +23,8 @@ | ... | @@ -23,6 +23,8 @@ |
23 | <color name="black5">#020E1C</color> | 23 | <color name="black5">#020E1C</color> |
24 | <color name="pink2">#F2709D</color> | 24 | <color name="pink2">#F2709D</color> |
25 | <color name="skyblue">#00A3E0</color> | 25 | <color name="skyblue">#00A3E0</color> |
26 | + <color name="grey2">#D8D8D8</color> | ||
27 | + <color name="pink3">#EE437E</color> | ||
26 | 28 | ||
27 | <!-- Used in styles --> | 29 | <!-- Used in styles --> |
28 | <color name="cos_light_blue">#00A5E3</color> | 30 | <color name="cos_light_blue">#00A5E3</color> | ... | ... |
-
Please register or login to post a comment