Panagiotis Triantafyllou

redesign part4

......@@ -12,6 +12,7 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
......@@ -31,10 +32,12 @@ import ly.warp.sdk.io.adapters.CouponsetAdapter;
import ly.warp.sdk.io.callbacks.CallbackReceiver;
import ly.warp.sdk.io.models.BannerItem;
import ly.warp.sdk.io.models.Couponset;
import ly.warp.sdk.io.models.User;
import ly.warp.sdk.utils.WarpUtils;
import ly.warp.sdk.utils.WarplyManagerHelper;
import ly.warp.sdk.utils.managers.WarplyManager;
import ly.warp.sdk.views.HorizontalSpaceItemDecoration;
import ly.warp.sdk.views.VerticalSpaceItemDecoration;
public class HomeActivity extends Activity implements View.OnClickListener, CouponsetAdapter.OnCouponsetClickListener {
// ===========================================================
......@@ -48,11 +51,15 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup
// ===========================================================
private RelativeLayout mPbLoading;
private ViewPager2 mBannerViewPager;
private TextView mTvHeaderTitle;
private LinearLayout mLlUserTags;
/* View Pager */
// private ViewPager2 mBannerViewPager;
private RecyclerView mRvBannerViewPager;
private BannerAdapter mBannerAdapter;
private LinearLayout mDotsContainer;
private List<ImageView> mDots;
/* Pagination */
// private LinearLayout mDotsContainer;
// private List<ImageView> mDots;
private ImageView mIvProfile;
private ConstraintLayout mViewPager;
private LinearLayout mSectionsContainer;
......@@ -73,6 +80,8 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup
findViewById(R.id.header_layout),
null);
setUpUser();
mPbLoading.setVisibility(View.VISIBLE);
mSectionsLoading.setVisibility(View.VISIBLE);
WarplyManager.getCampaigns(mCampaignsCallback);
......@@ -113,11 +122,73 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup
mIvProfile = findViewById(R.id.profile_icon);
mIvProfile.setOnClickListener(this);
mTvHeaderTitle = findViewById(R.id.tv_header_title);
mLlUserTags = findViewById(R.id.ll_user_tags);
mRvBannerViewPager = findViewById(R.id.banner_viewpager);
WarpUtils.renderCustomFont(this, R.font.ping_lcg_bold, mTvHeaderTitle);
}
private void setUpUser() {
User user = WarplyManagerHelper.getUser();
if (user == null) {
mLlUserTags.setVisibility(View.GONE);
return;
}
ArrayList<String> segments = user.getUserSegmentsList();
if (segments == null || segments.isEmpty()) {
mLlUserTags.setVisibility(View.GONE);
return;
}
mLlUserTags.removeAllViews();
int horizontalPaddingPx = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
int verticalPaddingPx = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 6, getResources().getDisplayMetrics());
int spacingPx = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
for (int i = 0; i < segments.size(); i++) {
String segment = segments.get(i);
if (segment == null || segment.isEmpty()) {
continue;
}
TextView tagView = new TextView(this);
tagView.setText(segment);
tagView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
tagView.setTextColor(getColor(R.color.custom_black3));
tagView.setBackground(AppCompatResources.getDrawable(this, R.drawable.shape_rectangle_rounded_grey2));
tagView.setIncludeFontPadding(false);
tagView.setPadding(horizontalPaddingPx, verticalPaddingPx, horizontalPaddingPx, verticalPaddingPx);
WarpUtils.renderCustomFont(this, R.font.ping_lcg_regular, tagView);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
if (i > 0) {
params.setMarginStart(spacingPx);
}
tagView.setLayoutParams(params);
mLlUserTags.addView(tagView);
}
mLlUserTags.setVisibility(mLlUserTags.getChildCount() > 0 ? View.VISIBLE : View.GONE);
}
private void setupBannerCarousel() {
mBannerViewPager = findViewById(R.id.banner_viewpager);
mDotsContainer = findViewById(R.id.dots_container);
/* View Pager */
// mBannerViewPager = findViewById(R.id.banner_viewpager);
/* Pagination */
// mDotsContainer = findViewById(R.id.dots_container);
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
mRvBannerViewPager.setLayoutManager(layoutManager);
mRvBannerViewPager.setHasFixedSize(true);
mBannerAdapter = new BannerAdapter(this, WarplyManagerHelper.getBannerList());
mBannerAdapter.setOnBannerCampaignClickListener(campaign -> {
......@@ -137,46 +208,56 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup
}
});
/* View Pager */
// Set the number of pages to preload for adjacent items
mBannerViewPager.setOffscreenPageLimit(5);
mBannerViewPager.setAdapter(mBannerAdapter);
setupPaginationDots(WarplyManagerHelper.getBannerList().size());
mBannerViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
updateDots(position);
}
});
}
// mBannerViewPager.setOffscreenPageLimit(5);
// mBannerViewPager.setAdapter(mBannerAdapter);
private void setupPaginationDots(int count) {
mDots = new ArrayList<>();
mDotsContainer.removeAllViews();
for (int i = 0; i < count; i++) {
ImageView dot = new ImageView(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params.setMargins(8, 0, 8, 0);
dot.setLayoutParams(params);
dot.setImageResource(i == 0 ? R.drawable.dot_active : R.drawable.dot_inactive);
mDotsContainer.addView(dot);
mDots.add(dot);
}
mRvBannerViewPager.setAdapter(mBannerAdapter);
int spacingInPixels = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
mRvBannerViewPager.addItemDecoration(new HorizontalSpaceItemDecoration(spacingInPixels));
/* Pagination */
// setupPaginationDots(WarplyManagerHelper.getBannerList().size());
/* Pagination */
// mBannerViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
// @Override
// public void onPageSelected(int position) {
// updateDots(position);
// }
// });
}
private void updateDots(int position) {
for (int i = 0; i < mDots.size(); i++) {
mDots.get(i).setImageResource(i == position ? R.drawable.dot_active : R.drawable.dot_inactive);
}
}
/* Pagination */
// private void setupPaginationDots(int count) {
// mDots = new ArrayList<>();
// mDotsContainer.removeAllViews();
//
// for (int i = 0; i < count; i++) {
// ImageView dot = new ImageView(this);
//
// LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
// LinearLayout.LayoutParams.WRAP_CONTENT,
// LinearLayout.LayoutParams.WRAP_CONTENT
// );
// params.setMargins(8, 0, 8, 0);
// dot.setLayoutParams(params);
//
// dot.setImageResource(i == 0 ? R.drawable.dot_active : R.drawable.dot_inactive);
//
// mDotsContainer.addView(dot);
// mDots.add(dot);
// }
// }
/* Pagination */
// private void updateDots(int position) {
// for (int i = 0; i < mDots.size(); i++) {
// mDots.get(i).setImageResource(i == position ? R.drawable.dot_active : R.drawable.dot_inactive);
// }
// }
private void setupCouponsetSections(LinkedHashMap<String, ArrayList<Couponset>> categorizedMap) {
mSectionsContainer.removeAllViews();
......
package ly.warp.sdk.io.adapters;
import android.content.Context;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -11,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import java.util.ArrayList;
......@@ -18,6 +20,7 @@ import ly.warp.sdk.R;
import ly.warp.sdk.io.models.BannerItem;
import ly.warp.sdk.io.models.Campaign;
import ly.warp.sdk.io.models.Content;
import ly.warp.sdk.utils.TopRoundedCornersTransformation;
public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerViewHolder> {
......@@ -76,6 +79,10 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView
public void onBindViewHolder(@NonNull BannerViewHolder holder, int position) {
BannerItem bannerItem = mBannerItems.get(position);
int radiusInPixels = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 13,
mContext.getResources().getDisplayMetrics());
if (bannerItem.isCampaign()) {
Glide.with(mContext)
// .setDefaultRequestOptions(
......@@ -84,6 +91,7 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView
// .error(R.drawable.demo_logo))
.load(getCampaignImage(bannerItem))
.diskCacheStrategy(DiskCacheStrategy.DATA)
.transform(new CenterCrop(), new TopRoundedCornersTransformation(radiusInPixels, true))
.into(holder.imageView);
holder.itemView.setOnClickListener(v -> {
......@@ -99,6 +107,7 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView
// .error(R.drawable.demo_logo))
.load(getContentImage(bannerItem))
.diskCacheStrategy(DiskCacheStrategy.DATA)
.transform(new CenterCrop(), new TopRoundedCornersTransformation(radiusInPixels, true))
.into(holder.imageView);
holder.itemView.setOnClickListener(v -> {
......
......@@ -66,7 +66,6 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup
public class CouponsetViewHolder extends RecyclerView.ViewHolder {
private final ImageView ivOfferImage;
private final ImageView ivFavorite;
private final ImageView ivLogo;
private final TextView tvPrice;
private final TextView tvTitle;
......@@ -76,7 +75,6 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup
CouponsetViewHolder(@NonNull View itemView) {
super(itemView);
ivOfferImage = itemView.findViewById(R.id.iv_offer_image);
ivFavorite = itemView.findViewById(R.id.iv_favorite);
ivLogo = itemView.findViewById(R.id.iv_logo);
tvPrice = itemView.findViewById(R.id.tv_price);
tvTitle = itemView.findViewById(R.id.tv_title);
......@@ -95,19 +93,17 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup
}
private void bind(Couponset couponset, int position) {
tvTitle.setText(couponset.getName() != null ? couponset.getName() : "");
tvDescription.setText(couponset.getShortDescription() != null ? couponset.getShortDescription() : "");
tvPrice.setText(couponset.getDiscount() != null ? couponset.getDiscount() : "");
tvTitle.setText(couponset.getName() != null ? couponset.getName().trim() : "");
tvDescription.setText(couponset.getShortDescription() != null ? couponset.getShortDescription().trim() : "");
tvPrice.setText(couponset.getDiscount() != null ? couponset.getDiscount().trim() : "");
if (couponset.getEndDate() != null && !couponset.getEndDate().isEmpty()) {
tvValidity.setText(formatValidityDate(couponset.getEndDate()));
tvValidity.setText(formatValidityDate(couponset.getEndDate()).trim());
tvValidity.setVisibility(View.VISIBLE);
} else {
tvValidity.setVisibility(View.GONE);
}
ivFavorite.setImageResource(R.drawable.demo_heart);
loadCouponsetImage(couponset.getImgPreview());
if (couponset.getMerchant() != null && couponset.getMerchant().getImgPreview() != null) {
......@@ -122,13 +118,13 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date = inputFormat.parse(endDate);
SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault());
return "έως " + outputFormat.format(date);
return "until " + outputFormat.format(date);
} catch (ParseException e) {
try {
SimpleDateFormat inputFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault());
Date date = inputFormat2.parse(endDate);
SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault());
return "έως " + outputFormat.format(date);
return "until " + outputFormat.format(date);
} catch (ParseException e2) {
return endDate;
}
......
......@@ -21,6 +21,7 @@ import java.security.MessageDigest;
public class TopRoundedCornersTransformation extends BitmapTransformation {
private static final String ID = "ly.warp.sdk.utils.TopRoundedCornersTransformation";
private final int radius;
private boolean allRounded = false;
/**
* Constructor
......@@ -31,6 +32,11 @@ public class TopRoundedCornersTransformation extends BitmapTransformation {
this.radius = radius;
}
public TopRoundedCornersTransformation(int radius, boolean rounded) {
this.radius = radius;
this.allRounded = rounded;
}
@Override
protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
return roundTopCorners(pool, toTransform);
......@@ -52,6 +58,16 @@ public class TopRoundedCornersTransformation extends BitmapTransformation {
// Create path with rounded top corners
Path path = new Path();
RectF rectF = new RectF(0, 0, source.getWidth(), source.getHeight());
if (allRounded) {
float[] radii = new float[]{
radius, radius, // top-left
radius, radius, // top-right
radius, radius, // bottom-right
radius, radius // bottom-left
};
path.addRoundRect(rectF, radii, Path.Direction.CW);
} else {
float[] radii = new float[]{
radius, radius, // top-left
radius, radius, // top-right
......@@ -59,6 +75,7 @@ public class TopRoundedCornersTransformation extends BitmapTransformation {
0, 0 // bottom-left
};
path.addRoundRect(rectF, radii, Path.Direction.CW);
}
// Draw rounded rectangle
canvas.drawPath(path, paint);
......
......@@ -38,6 +38,7 @@ import ly.warp.sdk.io.models.Campaign;
import ly.warp.sdk.io.models.Coupon;
import ly.warp.sdk.io.models.CouponList;
import ly.warp.sdk.io.models.Couponset;
import ly.warp.sdk.io.models.User;
import ly.warp.sdk.utils.managers.WarplyManager;
/**
......@@ -59,6 +60,7 @@ public class WarplyManagerHelper {
private static ArrayList<Campaign> mCampaignListAll = new ArrayList<Campaign>();
private static ArrayList<BannerItem> mBannerListAll = new ArrayList<BannerItem>();
private static LinkedHashMap<String, ArrayList<Couponset>> mCouponsetCategorizedMap = new LinkedHashMap<>();
private static User mUser = null;
// ===========================================================
// Methods for/from SuperClass/Interfaces
......@@ -68,6 +70,14 @@ public class WarplyManagerHelper {
// Methods
// ===========================================================
public static void setUser(User user) {
mUser = user;
}
public static User getUser() {
return mUser;
}
public static void setCampaignList(ArrayList<Campaign> campaignList) {
mCampaignListAll.clear();
mCampaignListAll.addAll(campaignList);
......
......@@ -323,6 +323,7 @@ public class WarplyManager {
if (jUserBody != null) {
User user = new User(jUserBody);
WarplyManagerHelper.setUser(user);
receiver.onSuccess(user);
} else {
......

2.02 KB | W: | H:

1.92 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="1000dp" />
<solid android:color="@color/custom_grey6" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="9dp" />
<corners android:radius="12dp" />
<solid android:color="@color/white" />
<stroke
android:width="1dp"
android:color="@color/custom_grey" />
android:color="@color/custom_grey7" />
</shape>
\ No newline at end of file
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="1000dp" />
<solid
android:width="2dp"
android:color="@color/custom_grey5" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="13dp" />
<solid
android:color="@color/custom_grey5" />
</shape>
\ No newline at end of file
......@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/custom_grey_light">
android:background="@color/white">
<androidx.core.widget.NestedScrollView
android:id="@+id/home_scrollview"
......@@ -22,38 +22,45 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/custom_grey_light"
android:background="@color/white"
android:orientation="horizontal"
android:paddingHorizontal="16dp"
android:paddingBottom="16dp"
android:paddingTop="16dp">
android:paddingTop="16dp"
android:paddingBottom="16dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:orientation="horizontal">
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/green_icon"
android:layout_width="58dp"
android:layout_height="22dp"
android:layout_marginEnd="8dp"
android:src="@drawable/demo_green" />
<TextView
android:id="@+id/tv_header_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="@string/demo_rewards_title"
android:textColor="@color/custom_black6"
android:textSize="28sp" />
<LinearLayout
android:id="@+id/ll_user_tags"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal"
android:visibility="gone" />
<ImageView
android:id="@+id/family_icon"
android:layout_width="58dp"
android:layout_height="22dp"
android:src="@drawable/demo_family" />
</LinearLayout>
<ImageView
android:id="@+id/profile_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/demo_profile" />
android:layout_width="46dp"
android:layout_height="46dp"
android:background="@drawable/shape_rectangle_rounded_grey"
android:padding="14dp"
android:src="@drawable/demo_gear" />
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
......@@ -61,26 +68,38 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.viewpager2.widget.ViewPager2
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/banner_viewpager"
android:layout_width="match_parent"
android:layout_height="320dp"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingHorizontal="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/dots_container"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/custom_grey_light"
android:gravity="center"
android:orientation="horizontal"
android:padding="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<!-- <androidx.viewpager2.widget.ViewPager2-->
<!-- android:id="@+id/banner_viewpager"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="320dp"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent" />-->
<!-- <LinearLayout-->
<!-- android:id="@+id/dots_container"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="50dp"-->
<!-- android:background="@color/white"-->
<!-- android:gravity="center"-->
<!-- android:orientation="horizontal"-->
<!-- android:padding="4dp"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent" />-->
<RelativeLayout
android:id="@+id/pb_loading"
......@@ -110,8 +129,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="48dp"
android:paddingBottom="16dp"
android:orientation="vertical" />
android:orientation="vertical"
android:paddingBottom="16dp" />
<RelativeLayout
android:id="@+id/rl_sections_loading"
......
......@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/custom_grey_light">
android:background="@color/white">
<ScrollView
android:id="@+id/coupon_scrollview"
......@@ -114,6 +114,16 @@
android:textColor="@color/custom_black2"
android:textSize="17sp" />
</LinearLayout>
<ImageView
android:id="@+id/iv_share_coupon"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/shape_rectangle_rounded_grey"
android:padding="14dp"
android:src="@drawable/demo_share"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
......@@ -225,10 +235,16 @@
android:textSize="17sp"
tools:text="BDTK0Y8UD8" />
<View
android:layout_width="4dp"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/iv_copy_code"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/shape_rectangle_rounded_grey"
android:padding="6dp"
android:src="@drawable/demo_copy" />
</LinearLayout>
</LinearLayout>
......
......@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/custom_grey_light">
android:background="@color/white">
<ScrollView
android:id="@+id/coupon_scrollview"
......
......@@ -2,31 +2,25 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="270dp"
android:layout_height="260dp"
android:layout_width="260dp"
android:layout_height="230dp"
android:background="@drawable/demo_shape_white_border_grey">
<ImageView
android:id="@+id/iv_offer_image"
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_height="130dp"
android:scaleType="centerCrop" />
<ImageView
android:id="@+id/iv_favorite"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="8dp"
android:src="@drawable/demo_heart" />
<TextView
android:id="@+id/tv_price"
android:layout_width="68dp"
android:layout_height="68dp"
android:layout_width="54dp"
android:layout_height="54dp"
android:layout_alignParentEnd="true"
android:layout_margin="8dp"
android:background="@drawable/demo_shape_pink"
android:background="@drawable/demo_shape_grey"
android:gravity="center"
android:includeFontPadding="false"
android:textColor="@android:color/white"
android:textSize="16sp"
tools:text="17,95€" />
......@@ -51,7 +45,8 @@
android:layout_height="wrap_content"
android:maxLines="1"
android:textColor="@color/custom_black2"
android:textSize="16sp"
android:textSize="15sp"
android:includeFontPadding="false"
app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
......@@ -63,6 +58,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:maxLines="2"
android:includeFontPadding="false"
android:textColor="@color/custom_black3"
android:textSize="13sp"
app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70"
......@@ -78,7 +74,8 @@
android:layout_centerVertical="true"
android:layout_marginTop="12dp"
android:maxLines="1"
android:textColor="@color/custom_black3"
android:includeFontPadding="false"
android:textColor="@color/custom_grey4"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="350dp"
android:layout_height="130dp"
android:background="@drawable/shape_rectangle_rounded_grey2">
<ImageView
android:id="@+id/iv_banner"
......
......@@ -2,8 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp">
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/ll_section_header"
......@@ -19,19 +18,35 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/custom_black2"
android:textSize="16sp"
android:textSize="15sp"
tools:text="Top Offers (10)" />
<LinearLayout
android:id="@+id/ll_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:paddingHorizontal="16dp">
<TextView
android:id="@+id/tv_section_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/demo_shape_transparent_border_black"
android:paddingHorizontal="16dp"
android:paddingVertical="5dp"
android:text="@string/demo_all"
android:textColor="@color/custom_black3"
android:textSize="14sp" />
android:textSize="15sp" />
<View
android:layout_width="4dp"
android:layout_height="match_parent" />
<ImageView
android:layout_width="8dp"
android:layout_height="4dp"
android:rotation="270"
android:src="@drawable/ic_arrow_down"/>
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
......
......@@ -32,4 +32,7 @@
<color name="custom_skyblue5">#CCE9FB</color>
<color name="custom_green">#0D9E5B</color>
<color name="custom_light_green">#DBF6E6</color>
<color name="custom_grey5">#F1F2F4</color>
<color name="custom_grey6">#CBCBCB</color>
<color name="custom_grey7">#D2D6D9</color>
</resources>
......
......@@ -7,7 +7,7 @@
<string name="menu_home">Αρχική</string>
<string name="demo_home">Αρχική οθόνη</string>
<string name="demo_login">Σύνδεση</string>
<string name="demo_all">Όλα</string>
<string name="demo_all">All</string>
<string name="demo_offer">Προσφορά</string>
<string name="demo_more">View more</string>
<string name="demo_less">View less</string>
......@@ -28,4 +28,7 @@
<string name="demo_active">Ενεργά</string>
<string name="demo_redeemed">Εξαργυρωμένα</string>
<string name="demo_favorites">Αγαπημένα</string>
<string name="demo_rewards_title">Rewards</string>
<string name="demo_green_title">green</string>
<string name="demo_family_title">family</string>
</resources>
......