Showing
21 changed files
with
323 additions
and
131 deletions
| ... | @@ -12,6 +12,7 @@ import android.widget.LinearLayout; | ... | @@ -12,6 +12,7 @@ import android.widget.LinearLayout; |
| 12 | import android.widget.RelativeLayout; | 12 | import android.widget.RelativeLayout; |
| 13 | import android.widget.TextView; | 13 | import android.widget.TextView; |
| 14 | 14 | ||
| 15 | +import androidx.appcompat.content.res.AppCompatResources; | ||
| 15 | import androidx.constraintlayout.widget.ConstraintLayout; | 16 | import androidx.constraintlayout.widget.ConstraintLayout; |
| 16 | import androidx.recyclerview.widget.LinearLayoutManager; | 17 | import androidx.recyclerview.widget.LinearLayoutManager; |
| 17 | import androidx.recyclerview.widget.RecyclerView; | 18 | import androidx.recyclerview.widget.RecyclerView; |
| ... | @@ -31,10 +32,12 @@ import ly.warp.sdk.io.adapters.CouponsetAdapter; | ... | @@ -31,10 +32,12 @@ import ly.warp.sdk.io.adapters.CouponsetAdapter; |
| 31 | import ly.warp.sdk.io.callbacks.CallbackReceiver; | 32 | import ly.warp.sdk.io.callbacks.CallbackReceiver; |
| 32 | import ly.warp.sdk.io.models.BannerItem; | 33 | import ly.warp.sdk.io.models.BannerItem; |
| 33 | import ly.warp.sdk.io.models.Couponset; | 34 | import ly.warp.sdk.io.models.Couponset; |
| 35 | +import ly.warp.sdk.io.models.User; | ||
| 34 | import ly.warp.sdk.utils.WarpUtils; | 36 | import ly.warp.sdk.utils.WarpUtils; |
| 35 | import ly.warp.sdk.utils.WarplyManagerHelper; | 37 | import ly.warp.sdk.utils.WarplyManagerHelper; |
| 36 | import ly.warp.sdk.utils.managers.WarplyManager; | 38 | import ly.warp.sdk.utils.managers.WarplyManager; |
| 37 | import ly.warp.sdk.views.HorizontalSpaceItemDecoration; | 39 | import ly.warp.sdk.views.HorizontalSpaceItemDecoration; |
| 40 | +import ly.warp.sdk.views.VerticalSpaceItemDecoration; | ||
| 38 | 41 | ||
| 39 | public class HomeActivity extends Activity implements View.OnClickListener, CouponsetAdapter.OnCouponsetClickListener { | 42 | public class HomeActivity extends Activity implements View.OnClickListener, CouponsetAdapter.OnCouponsetClickListener { |
| 40 | // =========================================================== | 43 | // =========================================================== |
| ... | @@ -48,11 +51,15 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup | ... | @@ -48,11 +51,15 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup |
| 48 | // =========================================================== | 51 | // =========================================================== |
| 49 | 52 | ||
| 50 | private RelativeLayout mPbLoading; | 53 | private RelativeLayout mPbLoading; |
| 51 | - | 54 | + private TextView mTvHeaderTitle; |
| 52 | - private ViewPager2 mBannerViewPager; | 55 | + private LinearLayout mLlUserTags; |
| 56 | + /* View Pager */ | ||
| 57 | +// private ViewPager2 mBannerViewPager; | ||
| 58 | + private RecyclerView mRvBannerViewPager; | ||
| 53 | private BannerAdapter mBannerAdapter; | 59 | private BannerAdapter mBannerAdapter; |
| 54 | - private LinearLayout mDotsContainer; | 60 | + /* Pagination */ |
| 55 | - private List<ImageView> mDots; | 61 | +// private LinearLayout mDotsContainer; |
| 62 | +// private List<ImageView> mDots; | ||
| 56 | private ImageView mIvProfile; | 63 | private ImageView mIvProfile; |
| 57 | private ConstraintLayout mViewPager; | 64 | private ConstraintLayout mViewPager; |
| 58 | private LinearLayout mSectionsContainer; | 65 | private LinearLayout mSectionsContainer; |
| ... | @@ -73,6 +80,8 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup | ... | @@ -73,6 +80,8 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup |
| 73 | findViewById(R.id.header_layout), | 80 | findViewById(R.id.header_layout), |
| 74 | null); | 81 | null); |
| 75 | 82 | ||
| 83 | + setUpUser(); | ||
| 84 | + | ||
| 76 | mPbLoading.setVisibility(View.VISIBLE); | 85 | mPbLoading.setVisibility(View.VISIBLE); |
| 77 | mSectionsLoading.setVisibility(View.VISIBLE); | 86 | mSectionsLoading.setVisibility(View.VISIBLE); |
| 78 | WarplyManager.getCampaigns(mCampaignsCallback); | 87 | WarplyManager.getCampaigns(mCampaignsCallback); |
| ... | @@ -113,11 +122,73 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup | ... | @@ -113,11 +122,73 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup |
| 113 | 122 | ||
| 114 | mIvProfile = findViewById(R.id.profile_icon); | 123 | mIvProfile = findViewById(R.id.profile_icon); |
| 115 | mIvProfile.setOnClickListener(this); | 124 | mIvProfile.setOnClickListener(this); |
| 125 | + mTvHeaderTitle = findViewById(R.id.tv_header_title); | ||
| 126 | + mLlUserTags = findViewById(R.id.ll_user_tags); | ||
| 127 | + mRvBannerViewPager = findViewById(R.id.banner_viewpager); | ||
| 128 | + | ||
| 129 | + WarpUtils.renderCustomFont(this, R.font.ping_lcg_bold, mTvHeaderTitle); | ||
| 130 | + } | ||
| 131 | + | ||
| 132 | + private void setUpUser() { | ||
| 133 | + User user = WarplyManagerHelper.getUser(); | ||
| 134 | + if (user == null) { | ||
| 135 | + mLlUserTags.setVisibility(View.GONE); | ||
| 136 | + return; | ||
| 137 | + } | ||
| 138 | + | ||
| 139 | + ArrayList<String> segments = user.getUserSegmentsList(); | ||
| 140 | + if (segments == null || segments.isEmpty()) { | ||
| 141 | + mLlUserTags.setVisibility(View.GONE); | ||
| 142 | + return; | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + mLlUserTags.removeAllViews(); | ||
| 146 | + | ||
| 147 | + int horizontalPaddingPx = (int) TypedValue.applyDimension( | ||
| 148 | + TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()); | ||
| 149 | + int verticalPaddingPx = (int) TypedValue.applyDimension( | ||
| 150 | + TypedValue.COMPLEX_UNIT_DIP, 6, getResources().getDisplayMetrics()); | ||
| 151 | + int spacingPx = (int) TypedValue.applyDimension( | ||
| 152 | + TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()); | ||
| 153 | + | ||
| 154 | + for (int i = 0; i < segments.size(); i++) { | ||
| 155 | + String segment = segments.get(i); | ||
| 156 | + if (segment == null || segment.isEmpty()) { | ||
| 157 | + continue; | ||
| 158 | + } | ||
| 159 | + | ||
| 160 | + TextView tagView = new TextView(this); | ||
| 161 | + tagView.setText(segment); | ||
| 162 | + tagView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12); | ||
| 163 | + tagView.setTextColor(getColor(R.color.custom_black3)); | ||
| 164 | + tagView.setBackground(AppCompatResources.getDrawable(this, R.drawable.shape_rectangle_rounded_grey2)); | ||
| 165 | + tagView.setIncludeFontPadding(false); | ||
| 166 | + tagView.setPadding(horizontalPaddingPx, verticalPaddingPx, horizontalPaddingPx, verticalPaddingPx); | ||
| 167 | + WarpUtils.renderCustomFont(this, R.font.ping_lcg_regular, tagView); | ||
| 168 | + | ||
| 169 | + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( | ||
| 170 | + LinearLayout.LayoutParams.WRAP_CONTENT, | ||
| 171 | + LinearLayout.LayoutParams.WRAP_CONTENT); | ||
| 172 | + if (i > 0) { | ||
| 173 | + params.setMarginStart(spacingPx); | ||
| 174 | + } | ||
| 175 | + tagView.setLayoutParams(params); | ||
| 176 | + | ||
| 177 | + mLlUserTags.addView(tagView); | ||
| 178 | + } | ||
| 179 | + | ||
| 180 | + mLlUserTags.setVisibility(mLlUserTags.getChildCount() > 0 ? View.VISIBLE : View.GONE); | ||
| 116 | } | 181 | } |
| 117 | 182 | ||
| 118 | private void setupBannerCarousel() { | 183 | private void setupBannerCarousel() { |
| 119 | - mBannerViewPager = findViewById(R.id.banner_viewpager); | 184 | + /* View Pager */ |
| 120 | - mDotsContainer = findViewById(R.id.dots_container); | 185 | +// mBannerViewPager = findViewById(R.id.banner_viewpager); |
| 186 | + /* Pagination */ | ||
| 187 | +// mDotsContainer = findViewById(R.id.dots_container); | ||
| 188 | + | ||
| 189 | + LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); | ||
| 190 | + mRvBannerViewPager.setLayoutManager(layoutManager); | ||
| 191 | + mRvBannerViewPager.setHasFixedSize(true); | ||
| 121 | 192 | ||
| 122 | mBannerAdapter = new BannerAdapter(this, WarplyManagerHelper.getBannerList()); | 193 | mBannerAdapter = new BannerAdapter(this, WarplyManagerHelper.getBannerList()); |
| 123 | mBannerAdapter.setOnBannerCampaignClickListener(campaign -> { | 194 | mBannerAdapter.setOnBannerCampaignClickListener(campaign -> { |
| ... | @@ -137,46 +208,56 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup | ... | @@ -137,46 +208,56 @@ public class HomeActivity extends Activity implements View.OnClickListener, Coup |
| 137 | } | 208 | } |
| 138 | }); | 209 | }); |
| 139 | 210 | ||
| 211 | + /* View Pager */ | ||
| 140 | // Set the number of pages to preload for adjacent items | 212 | // Set the number of pages to preload for adjacent items |
| 141 | - mBannerViewPager.setOffscreenPageLimit(5); | 213 | +// mBannerViewPager.setOffscreenPageLimit(5); |
| 142 | - mBannerViewPager.setAdapter(mBannerAdapter); | 214 | +// mBannerViewPager.setAdapter(mBannerAdapter); |
| 143 | - | ||
| 144 | - setupPaginationDots(WarplyManagerHelper.getBannerList().size()); | ||
| 145 | - | ||
| 146 | - mBannerViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { | ||
| 147 | - @Override | ||
| 148 | - public void onPageSelected(int position) { | ||
| 149 | - updateDots(position); | ||
| 150 | - } | ||
| 151 | - }); | ||
| 152 | - } | ||
| 153 | - | ||
| 154 | - private void setupPaginationDots(int count) { | ||
| 155 | - mDots = new ArrayList<>(); | ||
| 156 | - mDotsContainer.removeAllViews(); | ||
| 157 | 215 | ||
| 158 | - for (int i = 0; i < count; i++) { | 216 | + mRvBannerViewPager.setAdapter(mBannerAdapter); |
| 159 | - ImageView dot = new ImageView(this); | 217 | + int spacingInPixels = (int) TypedValue.applyDimension( |
| 160 | - | 218 | + TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()); |
| 161 | - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( | 219 | + mRvBannerViewPager.addItemDecoration(new HorizontalSpaceItemDecoration(spacingInPixels)); |
| 162 | - LinearLayout.LayoutParams.WRAP_CONTENT, | 220 | + |
| 163 | - LinearLayout.LayoutParams.WRAP_CONTENT | 221 | + /* Pagination */ |
| 164 | - ); | 222 | +// setupPaginationDots(WarplyManagerHelper.getBannerList().size()); |
| 165 | - params.setMargins(8, 0, 8, 0); | 223 | + |
| 166 | - dot.setLayoutParams(params); | 224 | + /* Pagination */ |
| 167 | - | 225 | +// mBannerViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { |
| 168 | - dot.setImageResource(i == 0 ? R.drawable.dot_active : R.drawable.dot_inactive); | 226 | +// @Override |
| 169 | - | 227 | +// public void onPageSelected(int position) { |
| 170 | - mDotsContainer.addView(dot); | 228 | +// updateDots(position); |
| 171 | - mDots.add(dot); | 229 | +// } |
| 172 | - } | 230 | +// }); |
| 173 | } | 231 | } |
| 174 | 232 | ||
| 175 | - private void updateDots(int position) { | 233 | + /* Pagination */ |
| 176 | - for (int i = 0; i < mDots.size(); i++) { | 234 | +// private void setupPaginationDots(int count) { |
| 177 | - mDots.get(i).setImageResource(i == position ? R.drawable.dot_active : R.drawable.dot_inactive); | 235 | +// mDots = new ArrayList<>(); |
| 178 | - } | 236 | +// mDotsContainer.removeAllViews(); |
| 179 | - } | 237 | +// |
| 238 | +// for (int i = 0; i < count; i++) { | ||
| 239 | +// ImageView dot = new ImageView(this); | ||
| 240 | +// | ||
| 241 | +// LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( | ||
| 242 | +// LinearLayout.LayoutParams.WRAP_CONTENT, | ||
| 243 | +// LinearLayout.LayoutParams.WRAP_CONTENT | ||
| 244 | +// ); | ||
| 245 | +// params.setMargins(8, 0, 8, 0); | ||
| 246 | +// dot.setLayoutParams(params); | ||
| 247 | +// | ||
| 248 | +// dot.setImageResource(i == 0 ? R.drawable.dot_active : R.drawable.dot_inactive); | ||
| 249 | +// | ||
| 250 | +// mDotsContainer.addView(dot); | ||
| 251 | +// mDots.add(dot); | ||
| 252 | +// } | ||
| 253 | +// } | ||
| 254 | + | ||
| 255 | + /* Pagination */ | ||
| 256 | +// private void updateDots(int position) { | ||
| 257 | +// for (int i = 0; i < mDots.size(); i++) { | ||
| 258 | +// mDots.get(i).setImageResource(i == position ? R.drawable.dot_active : R.drawable.dot_inactive); | ||
| 259 | +// } | ||
| 260 | +// } | ||
| 180 | 261 | ||
| 181 | private void setupCouponsetSections(LinkedHashMap<String, ArrayList<Couponset>> categorizedMap) { | 262 | private void setupCouponsetSections(LinkedHashMap<String, ArrayList<Couponset>> categorizedMap) { |
| 182 | mSectionsContainer.removeAllViews(); | 263 | mSectionsContainer.removeAllViews(); | ... | ... |
| 1 | package ly.warp.sdk.io.adapters; | 1 | package ly.warp.sdk.io.adapters; |
| 2 | 2 | ||
| 3 | import android.content.Context; | 3 | import android.content.Context; |
| 4 | +import android.util.TypedValue; | ||
| 4 | import android.view.LayoutInflater; | 5 | import android.view.LayoutInflater; |
| 5 | import android.view.View; | 6 | import android.view.View; |
| 6 | import android.view.ViewGroup; | 7 | import android.view.ViewGroup; |
| ... | @@ -11,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; | ... | @@ -11,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; |
| 11 | 12 | ||
| 12 | import com.bumptech.glide.Glide; | 13 | import com.bumptech.glide.Glide; |
| 13 | import com.bumptech.glide.load.engine.DiskCacheStrategy; | 14 | import com.bumptech.glide.load.engine.DiskCacheStrategy; |
| 15 | +import com.bumptech.glide.load.resource.bitmap.CenterCrop; | ||
| 14 | 16 | ||
| 15 | import java.util.ArrayList; | 17 | import java.util.ArrayList; |
| 16 | 18 | ||
| ... | @@ -18,6 +20,7 @@ import ly.warp.sdk.R; | ... | @@ -18,6 +20,7 @@ import ly.warp.sdk.R; |
| 18 | import ly.warp.sdk.io.models.BannerItem; | 20 | import ly.warp.sdk.io.models.BannerItem; |
| 19 | import ly.warp.sdk.io.models.Campaign; | 21 | import ly.warp.sdk.io.models.Campaign; |
| 20 | import ly.warp.sdk.io.models.Content; | 22 | import ly.warp.sdk.io.models.Content; |
| 23 | +import ly.warp.sdk.utils.TopRoundedCornersTransformation; | ||
| 21 | 24 | ||
| 22 | public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerViewHolder> { | 25 | public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerViewHolder> { |
| 23 | 26 | ||
| ... | @@ -76,6 +79,10 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView | ... | @@ -76,6 +79,10 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView |
| 76 | public void onBindViewHolder(@NonNull BannerViewHolder holder, int position) { | 79 | public void onBindViewHolder(@NonNull BannerViewHolder holder, int position) { |
| 77 | BannerItem bannerItem = mBannerItems.get(position); | 80 | BannerItem bannerItem = mBannerItems.get(position); |
| 78 | 81 | ||
| 82 | + int radiusInPixels = (int) TypedValue.applyDimension( | ||
| 83 | + TypedValue.COMPLEX_UNIT_DIP, 13, | ||
| 84 | + mContext.getResources().getDisplayMetrics()); | ||
| 85 | + | ||
| 79 | if (bannerItem.isCampaign()) { | 86 | if (bannerItem.isCampaign()) { |
| 80 | Glide.with(mContext) | 87 | Glide.with(mContext) |
| 81 | // .setDefaultRequestOptions( | 88 | // .setDefaultRequestOptions( |
| ... | @@ -84,6 +91,7 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView | ... | @@ -84,6 +91,7 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView |
| 84 | // .error(R.drawable.demo_logo)) | 91 | // .error(R.drawable.demo_logo)) |
| 85 | .load(getCampaignImage(bannerItem)) | 92 | .load(getCampaignImage(bannerItem)) |
| 86 | .diskCacheStrategy(DiskCacheStrategy.DATA) | 93 | .diskCacheStrategy(DiskCacheStrategy.DATA) |
| 94 | + .transform(new CenterCrop(), new TopRoundedCornersTransformation(radiusInPixels, true)) | ||
| 87 | .into(holder.imageView); | 95 | .into(holder.imageView); |
| 88 | 96 | ||
| 89 | holder.itemView.setOnClickListener(v -> { | 97 | holder.itemView.setOnClickListener(v -> { |
| ... | @@ -99,6 +107,7 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView | ... | @@ -99,6 +107,7 @@ public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerView |
| 99 | // .error(R.drawable.demo_logo)) | 107 | // .error(R.drawable.demo_logo)) |
| 100 | .load(getContentImage(bannerItem)) | 108 | .load(getContentImage(bannerItem)) |
| 101 | .diskCacheStrategy(DiskCacheStrategy.DATA) | 109 | .diskCacheStrategy(DiskCacheStrategy.DATA) |
| 110 | + .transform(new CenterCrop(), new TopRoundedCornersTransformation(radiusInPixels, true)) | ||
| 102 | .into(holder.imageView); | 111 | .into(holder.imageView); |
| 103 | 112 | ||
| 104 | holder.itemView.setOnClickListener(v -> { | 113 | holder.itemView.setOnClickListener(v -> { | ... | ... |
| ... | @@ -66,7 +66,6 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup | ... | @@ -66,7 +66,6 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup |
| 66 | 66 | ||
| 67 | public class CouponsetViewHolder extends RecyclerView.ViewHolder { | 67 | public class CouponsetViewHolder extends RecyclerView.ViewHolder { |
| 68 | private final ImageView ivOfferImage; | 68 | private final ImageView ivOfferImage; |
| 69 | - private final ImageView ivFavorite; | ||
| 70 | private final ImageView ivLogo; | 69 | private final ImageView ivLogo; |
| 71 | private final TextView tvPrice; | 70 | private final TextView tvPrice; |
| 72 | private final TextView tvTitle; | 71 | private final TextView tvTitle; |
| ... | @@ -76,7 +75,6 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup | ... | @@ -76,7 +75,6 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup |
| 76 | CouponsetViewHolder(@NonNull View itemView) { | 75 | CouponsetViewHolder(@NonNull View itemView) { |
| 77 | super(itemView); | 76 | super(itemView); |
| 78 | ivOfferImage = itemView.findViewById(R.id.iv_offer_image); | 77 | ivOfferImage = itemView.findViewById(R.id.iv_offer_image); |
| 79 | - ivFavorite = itemView.findViewById(R.id.iv_favorite); | ||
| 80 | ivLogo = itemView.findViewById(R.id.iv_logo); | 78 | ivLogo = itemView.findViewById(R.id.iv_logo); |
| 81 | tvPrice = itemView.findViewById(R.id.tv_price); | 79 | tvPrice = itemView.findViewById(R.id.tv_price); |
| 82 | tvTitle = itemView.findViewById(R.id.tv_title); | 80 | tvTitle = itemView.findViewById(R.id.tv_title); |
| ... | @@ -95,19 +93,17 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup | ... | @@ -95,19 +93,17 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup |
| 95 | } | 93 | } |
| 96 | 94 | ||
| 97 | private void bind(Couponset couponset, int position) { | 95 | private void bind(Couponset couponset, int position) { |
| 98 | - tvTitle.setText(couponset.getName() != null ? couponset.getName() : ""); | 96 | + tvTitle.setText(couponset.getName() != null ? couponset.getName().trim() : ""); |
| 99 | - tvDescription.setText(couponset.getShortDescription() != null ? couponset.getShortDescription() : ""); | 97 | + tvDescription.setText(couponset.getShortDescription() != null ? couponset.getShortDescription().trim() : ""); |
| 100 | - tvPrice.setText(couponset.getDiscount() != null ? couponset.getDiscount() : ""); | 98 | + tvPrice.setText(couponset.getDiscount() != null ? couponset.getDiscount().trim() : ""); |
| 101 | 99 | ||
| 102 | if (couponset.getEndDate() != null && !couponset.getEndDate().isEmpty()) { | 100 | if (couponset.getEndDate() != null && !couponset.getEndDate().isEmpty()) { |
| 103 | - tvValidity.setText(formatValidityDate(couponset.getEndDate())); | 101 | + tvValidity.setText(formatValidityDate(couponset.getEndDate()).trim()); |
| 104 | tvValidity.setVisibility(View.VISIBLE); | 102 | tvValidity.setVisibility(View.VISIBLE); |
| 105 | } else { | 103 | } else { |
| 106 | tvValidity.setVisibility(View.GONE); | 104 | tvValidity.setVisibility(View.GONE); |
| 107 | } | 105 | } |
| 108 | 106 | ||
| 109 | - ivFavorite.setImageResource(R.drawable.demo_heart); | ||
| 110 | - | ||
| 111 | loadCouponsetImage(couponset.getImgPreview()); | 107 | loadCouponsetImage(couponset.getImgPreview()); |
| 112 | 108 | ||
| 113 | if (couponset.getMerchant() != null && couponset.getMerchant().getImgPreview() != null) { | 109 | if (couponset.getMerchant() != null && couponset.getMerchant().getImgPreview() != null) { |
| ... | @@ -122,13 +118,13 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup | ... | @@ -122,13 +118,13 @@ public class CouponsetAdapter extends RecyclerView.Adapter<CouponsetAdapter.Coup |
| 122 | SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); | 118 | SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); |
| 123 | Date date = inputFormat.parse(endDate); | 119 | Date date = inputFormat.parse(endDate); |
| 124 | SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault()); | 120 | SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault()); |
| 125 | - return "έως " + outputFormat.format(date); | 121 | + return "until " + outputFormat.format(date); |
| 126 | } catch (ParseException e) { | 122 | } catch (ParseException e) { |
| 127 | try { | 123 | try { |
| 128 | SimpleDateFormat inputFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); | 124 | SimpleDateFormat inputFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); |
| 129 | Date date = inputFormat2.parse(endDate); | 125 | Date date = inputFormat2.parse(endDate); |
| 130 | SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault()); | 126 | SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM", Locale.getDefault()); |
| 131 | - return "έως " + outputFormat.format(date); | 127 | + return "until " + outputFormat.format(date); |
| 132 | } catch (ParseException e2) { | 128 | } catch (ParseException e2) { |
| 133 | return endDate; | 129 | return endDate; |
| 134 | } | 130 | } | ... | ... |
| ... | @@ -21,6 +21,7 @@ import java.security.MessageDigest; | ... | @@ -21,6 +21,7 @@ import java.security.MessageDigest; |
| 21 | public class TopRoundedCornersTransformation extends BitmapTransformation { | 21 | public class TopRoundedCornersTransformation extends BitmapTransformation { |
| 22 | private static final String ID = "ly.warp.sdk.utils.TopRoundedCornersTransformation"; | 22 | private static final String ID = "ly.warp.sdk.utils.TopRoundedCornersTransformation"; |
| 23 | private final int radius; | 23 | private final int radius; |
| 24 | + private boolean allRounded = false; | ||
| 24 | 25 | ||
| 25 | /** | 26 | /** |
| 26 | * Constructor | 27 | * Constructor |
| ... | @@ -31,6 +32,11 @@ public class TopRoundedCornersTransformation extends BitmapTransformation { | ... | @@ -31,6 +32,11 @@ public class TopRoundedCornersTransformation extends BitmapTransformation { |
| 31 | this.radius = radius; | 32 | this.radius = radius; |
| 32 | } | 33 | } |
| 33 | 34 | ||
| 35 | + public TopRoundedCornersTransformation(int radius, boolean rounded) { | ||
| 36 | + this.radius = radius; | ||
| 37 | + this.allRounded = rounded; | ||
| 38 | + } | ||
| 39 | + | ||
| 34 | @Override | 40 | @Override |
| 35 | protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { | 41 | protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { |
| 36 | return roundTopCorners(pool, toTransform); | 42 | return roundTopCorners(pool, toTransform); |
| ... | @@ -52,13 +58,24 @@ public class TopRoundedCornersTransformation extends BitmapTransformation { | ... | @@ -52,13 +58,24 @@ public class TopRoundedCornersTransformation extends BitmapTransformation { |
| 52 | // Create path with rounded top corners | 58 | // Create path with rounded top corners |
| 53 | Path path = new Path(); | 59 | Path path = new Path(); |
| 54 | RectF rectF = new RectF(0, 0, source.getWidth(), source.getHeight()); | 60 | RectF rectF = new RectF(0, 0, source.getWidth(), source.getHeight()); |
| 55 | - float[] radii = new float[]{ | 61 | + |
| 56 | - radius, radius, // top-left | 62 | + if (allRounded) { |
| 57 | - radius, radius, // top-right | 63 | + float[] radii = new float[]{ |
| 58 | - 0, 0, // bottom-right | 64 | + radius, radius, // top-left |
| 59 | - 0, 0 // bottom-left | 65 | + radius, radius, // top-right |
| 60 | - }; | 66 | + radius, radius, // bottom-right |
| 61 | - path.addRoundRect(rectF, radii, Path.Direction.CW); | 67 | + radius, radius // bottom-left |
| 68 | + }; | ||
| 69 | + path.addRoundRect(rectF, radii, Path.Direction.CW); | ||
| 70 | + } else { | ||
| 71 | + float[] radii = new float[]{ | ||
| 72 | + radius, radius, // top-left | ||
| 73 | + radius, radius, // top-right | ||
| 74 | + 0, 0, // bottom-right | ||
| 75 | + 0, 0 // bottom-left | ||
| 76 | + }; | ||
| 77 | + path.addRoundRect(rectF, radii, Path.Direction.CW); | ||
| 78 | + } | ||
| 62 | 79 | ||
| 63 | // Draw rounded rectangle | 80 | // Draw rounded rectangle |
| 64 | canvas.drawPath(path, paint); | 81 | canvas.drawPath(path, paint); | ... | ... |
| ... | @@ -38,6 +38,7 @@ import ly.warp.sdk.io.models.Campaign; | ... | @@ -38,6 +38,7 @@ import ly.warp.sdk.io.models.Campaign; |
| 38 | import ly.warp.sdk.io.models.Coupon; | 38 | import ly.warp.sdk.io.models.Coupon; |
| 39 | import ly.warp.sdk.io.models.CouponList; | 39 | import ly.warp.sdk.io.models.CouponList; |
| 40 | import ly.warp.sdk.io.models.Couponset; | 40 | import ly.warp.sdk.io.models.Couponset; |
| 41 | +import ly.warp.sdk.io.models.User; | ||
| 41 | import ly.warp.sdk.utils.managers.WarplyManager; | 42 | import ly.warp.sdk.utils.managers.WarplyManager; |
| 42 | 43 | ||
| 43 | /** | 44 | /** |
| ... | @@ -59,6 +60,7 @@ public class WarplyManagerHelper { | ... | @@ -59,6 +60,7 @@ public class WarplyManagerHelper { |
| 59 | private static ArrayList<Campaign> mCampaignListAll = new ArrayList<Campaign>(); | 60 | private static ArrayList<Campaign> mCampaignListAll = new ArrayList<Campaign>(); |
| 60 | private static ArrayList<BannerItem> mBannerListAll = new ArrayList<BannerItem>(); | 61 | private static ArrayList<BannerItem> mBannerListAll = new ArrayList<BannerItem>(); |
| 61 | private static LinkedHashMap<String, ArrayList<Couponset>> mCouponsetCategorizedMap = new LinkedHashMap<>(); | 62 | private static LinkedHashMap<String, ArrayList<Couponset>> mCouponsetCategorizedMap = new LinkedHashMap<>(); |
| 63 | + private static User mUser = null; | ||
| 62 | 64 | ||
| 63 | // =========================================================== | 65 | // =========================================================== |
| 64 | // Methods for/from SuperClass/Interfaces | 66 | // Methods for/from SuperClass/Interfaces |
| ... | @@ -68,6 +70,14 @@ public class WarplyManagerHelper { | ... | @@ -68,6 +70,14 @@ public class WarplyManagerHelper { |
| 68 | // Methods | 70 | // Methods |
| 69 | // =========================================================== | 71 | // =========================================================== |
| 70 | 72 | ||
| 73 | + public static void setUser(User user) { | ||
| 74 | + mUser = user; | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + public static User getUser() { | ||
| 78 | + return mUser; | ||
| 79 | + } | ||
| 80 | + | ||
| 71 | public static void setCampaignList(ArrayList<Campaign> campaignList) { | 81 | public static void setCampaignList(ArrayList<Campaign> campaignList) { |
| 72 | mCampaignListAll.clear(); | 82 | mCampaignListAll.clear(); |
| 73 | mCampaignListAll.addAll(campaignList); | 83 | mCampaignListAll.addAll(campaignList); | ... | ... |
| ... | @@ -323,6 +323,7 @@ public class WarplyManager { | ... | @@ -323,6 +323,7 @@ public class WarplyManager { |
| 323 | 323 | ||
| 324 | if (jUserBody != null) { | 324 | if (jUserBody != null) { |
| 325 | User user = new User(jUserBody); | 325 | User user = new User(jUserBody); |
| 326 | + WarplyManagerHelper.setUser(user); | ||
| 326 | 327 | ||
| 327 | receiver.onSuccess(user); | 328 | receiver.onSuccess(user); |
| 328 | } else { | 329 | } else { | ... | ... |
2.54 KB
2.12 KB
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<shape xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:shape="oval"> | ||
| 4 | + <corners android:radius="1000dp" /> | ||
| 5 | + | ||
| 6 | + <solid android:color="@color/custom_grey6" /> | ||
| 7 | +</shape> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <shape xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <shape xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | android:shape="rectangle"> | 3 | android:shape="rectangle"> |
| 4 | - <corners android:radius="9dp" /> | 4 | + <corners android:radius="12dp" /> |
| 5 | 5 | ||
| 6 | <solid android:color="@color/white" /> | 6 | <solid android:color="@color/white" /> |
| 7 | <stroke | 7 | <stroke |
| 8 | android:width="1dp" | 8 | android:width="1dp" |
| 9 | - android:color="@color/custom_grey" /> | 9 | + android:color="@color/custom_grey7" /> |
| 10 | </shape> | 10 | </shape> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<shape xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:shape="rectangle"> | ||
| 4 | + <corners android:radius="1000dp" /> | ||
| 5 | + | ||
| 6 | + <solid | ||
| 7 | + android:width="2dp" | ||
| 8 | + android:color="@color/custom_grey5" /> | ||
| 9 | +</shape> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<shape xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + android:shape="rectangle"> | ||
| 4 | + <corners android:radius="13dp" /> | ||
| 5 | + | ||
| 6 | + <solid | ||
| 7 | + android:color="@color/custom_grey5" /> | ||
| 8 | +</shape> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
| 3 | xmlns:tools="http://schemas.android.com/tools" | 3 | xmlns:tools="http://schemas.android.com/tools" |
| 4 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
| 5 | android:layout_height="match_parent" | 5 | android:layout_height="match_parent" |
| 6 | - android:background="@color/custom_grey_light"> | 6 | + android:background="@color/white"> |
| 7 | 7 | ||
| 8 | <androidx.core.widget.NestedScrollView | 8 | <androidx.core.widget.NestedScrollView |
| 9 | android:id="@+id/home_scrollview" | 9 | android:id="@+id/home_scrollview" |
| ... | @@ -22,38 +22,45 @@ | ... | @@ -22,38 +22,45 @@ |
| 22 | android:layout_width="match_parent" | 22 | android:layout_width="match_parent" |
| 23 | android:layout_height="wrap_content" | 23 | android:layout_height="wrap_content" |
| 24 | android:layout_gravity="center" | 24 | android:layout_gravity="center" |
| 25 | - android:background="@color/custom_grey_light" | 25 | + android:background="@color/white" |
| 26 | android:orientation="horizontal" | 26 | android:orientation="horizontal" |
| 27 | android:paddingHorizontal="16dp" | 27 | android:paddingHorizontal="16dp" |
| 28 | - android:paddingBottom="16dp" | 28 | + android:paddingTop="16dp" |
| 29 | - android:paddingTop="16dp"> | 29 | + android:paddingBottom="16dp"> |
| 30 | 30 | ||
| 31 | <LinearLayout | 31 | <LinearLayout |
| 32 | android:layout_width="0dp" | 32 | android:layout_width="0dp" |
| 33 | android:layout_height="wrap_content" | 33 | android:layout_height="wrap_content" |
| 34 | - android:layout_gravity="center" | ||
| 35 | android:layout_weight="1" | 34 | android:layout_weight="1" |
| 36 | - android:orientation="horizontal"> | 35 | + android:gravity="center_vertical" |
| 37 | - | 36 | + android:orientation="vertical"> |
| 38 | - <ImageView | 37 | + |
| 39 | - android:id="@+id/green_icon" | 38 | + <TextView |
| 40 | - android:layout_width="58dp" | 39 | + android:id="@+id/tv_header_title" |
| 41 | - android:layout_height="22dp" | 40 | + android:layout_width="wrap_content" |
| 42 | - android:layout_marginEnd="8dp" | 41 | + android:layout_height="wrap_content" |
| 43 | - android:src="@drawable/demo_green" /> | 42 | + android:includeFontPadding="false" |
| 44 | - | 43 | + android:text="@string/demo_rewards_title" |
| 45 | - <ImageView | 44 | + android:textColor="@color/custom_black6" |
| 46 | - android:id="@+id/family_icon" | 45 | + android:textSize="28sp" /> |
| 47 | - android:layout_width="58dp" | 46 | + |
| 48 | - android:layout_height="22dp" | 47 | + <LinearLayout |
| 49 | - android:src="@drawable/demo_family" /> | 48 | + android:id="@+id/ll_user_tags" |
| 49 | + android:layout_width="match_parent" | ||
| 50 | + android:layout_height="wrap_content" | ||
| 51 | + android:layout_marginTop="4dp" | ||
| 52 | + android:orientation="horizontal" | ||
| 53 | + android:visibility="gone" /> | ||
| 54 | + | ||
| 50 | </LinearLayout> | 55 | </LinearLayout> |
| 51 | 56 | ||
| 52 | <ImageView | 57 | <ImageView |
| 53 | android:id="@+id/profile_icon" | 58 | android:id="@+id/profile_icon" |
| 54 | - android:layout_width="40dp" | 59 | + android:layout_width="46dp" |
| 55 | - android:layout_height="40dp" | 60 | + android:layout_height="46dp" |
| 56 | - android:src="@drawable/demo_profile" /> | 61 | + android:background="@drawable/shape_rectangle_rounded_grey" |
| 62 | + android:padding="14dp" | ||
| 63 | + android:src="@drawable/demo_gear" /> | ||
| 57 | </LinearLayout> | 64 | </LinearLayout> |
| 58 | 65 | ||
| 59 | <androidx.constraintlayout.widget.ConstraintLayout | 66 | <androidx.constraintlayout.widget.ConstraintLayout |
| ... | @@ -61,26 +68,38 @@ | ... | @@ -61,26 +68,38 @@ |
| 61 | android:layout_width="match_parent" | 68 | android:layout_width="match_parent" |
| 62 | android:layout_height="wrap_content"> | 69 | android:layout_height="wrap_content"> |
| 63 | 70 | ||
| 64 | - <androidx.viewpager2.widget.ViewPager2 | 71 | + <androidx.recyclerview.widget.RecyclerView |
| 65 | android:id="@+id/banner_viewpager" | 72 | android:id="@+id/banner_viewpager" |
| 66 | android:layout_width="match_parent" | 73 | android:layout_width="match_parent" |
| 67 | - android:layout_height="320dp" | 74 | + android:layout_height="wrap_content" |
| 75 | + android:clipToPadding="false" | ||
| 76 | + android:orientation="horizontal" | ||
| 77 | + android:paddingHorizontal="16dp" | ||
| 68 | app:layout_constraintBottom_toBottomOf="parent" | 78 | app:layout_constraintBottom_toBottomOf="parent" |
| 69 | app:layout_constraintEnd_toEndOf="parent" | 79 | app:layout_constraintEnd_toEndOf="parent" |
| 70 | app:layout_constraintStart_toStartOf="parent" | 80 | app:layout_constraintStart_toStartOf="parent" |
| 71 | app:layout_constraintTop_toTopOf="parent" /> | 81 | app:layout_constraintTop_toTopOf="parent" /> |
| 72 | 82 | ||
| 73 | - <LinearLayout | 83 | + <!-- <androidx.viewpager2.widget.ViewPager2--> |
| 74 | - android:id="@+id/dots_container" | 84 | + <!-- android:id="@+id/banner_viewpager"--> |
| 75 | - android:layout_width="match_parent" | 85 | + <!-- android:layout_width="match_parent"--> |
| 76 | - android:layout_height="50dp" | 86 | + <!-- android:layout_height="320dp"--> |
| 77 | - android:background="@color/custom_grey_light" | 87 | + <!-- app:layout_constraintBottom_toBottomOf="parent"--> |
| 78 | - android:gravity="center" | 88 | + <!-- app:layout_constraintEnd_toEndOf="parent"--> |
| 79 | - android:orientation="horizontal" | 89 | + <!-- app:layout_constraintStart_toStartOf="parent"--> |
| 80 | - android:padding="4dp" | 90 | + <!-- app:layout_constraintTop_toTopOf="parent" />--> |
| 81 | - app:layout_constraintBottom_toBottomOf="parent" | 91 | + |
| 82 | - app:layout_constraintEnd_toEndOf="parent" | 92 | + <!-- <LinearLayout--> |
| 83 | - app:layout_constraintStart_toStartOf="parent" /> | 93 | + <!-- android:id="@+id/dots_container"--> |
| 94 | + <!-- android:layout_width="match_parent"--> | ||
| 95 | + <!-- android:layout_height="50dp"--> | ||
| 96 | + <!-- android:background="@color/white"--> | ||
| 97 | + <!-- android:gravity="center"--> | ||
| 98 | + <!-- android:orientation="horizontal"--> | ||
| 99 | + <!-- android:padding="4dp"--> | ||
| 100 | + <!-- app:layout_constraintBottom_toBottomOf="parent"--> | ||
| 101 | + <!-- app:layout_constraintEnd_toEndOf="parent"--> | ||
| 102 | + <!-- app:layout_constraintStart_toStartOf="parent" />--> | ||
| 84 | 103 | ||
| 85 | <RelativeLayout | 104 | <RelativeLayout |
| 86 | android:id="@+id/pb_loading" | 105 | android:id="@+id/pb_loading" |
| ... | @@ -110,8 +129,8 @@ | ... | @@ -110,8 +129,8 @@ |
| 110 | android:layout_width="match_parent" | 129 | android:layout_width="match_parent" |
| 111 | android:layout_height="wrap_content" | 130 | android:layout_height="wrap_content" |
| 112 | android:layout_marginBottom="48dp" | 131 | android:layout_marginBottom="48dp" |
| 113 | - android:paddingBottom="16dp" | 132 | + android:orientation="vertical" |
| 114 | - android:orientation="vertical" /> | 133 | + android:paddingBottom="16dp" /> |
| 115 | 134 | ||
| 116 | <RelativeLayout | 135 | <RelativeLayout |
| 117 | android:id="@+id/rl_sections_loading" | 136 | android:id="@+id/rl_sections_loading" | ... | ... |
| ... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
| 3 | xmlns:tools="http://schemas.android.com/tools" | 3 | xmlns:tools="http://schemas.android.com/tools" |
| 4 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
| 5 | android:layout_height="match_parent" | 5 | android:layout_height="match_parent" |
| 6 | - android:background="@color/custom_grey_light"> | 6 | + android:background="@color/white"> |
| 7 | 7 | ||
| 8 | <ScrollView | 8 | <ScrollView |
| 9 | android:id="@+id/coupon_scrollview" | 9 | android:id="@+id/coupon_scrollview" |
| ... | @@ -114,6 +114,16 @@ | ... | @@ -114,6 +114,16 @@ |
| 114 | android:textColor="@color/custom_black2" | 114 | android:textColor="@color/custom_black2" |
| 115 | android:textSize="17sp" /> | 115 | android:textSize="17sp" /> |
| 116 | </LinearLayout> | 116 | </LinearLayout> |
| 117 | + | ||
| 118 | + <ImageView | ||
| 119 | + android:id="@+id/iv_share_coupon" | ||
| 120 | + android:layout_width="48dp" | ||
| 121 | + android:layout_height="48dp" | ||
| 122 | + android:background="@drawable/shape_rectangle_rounded_grey" | ||
| 123 | + android:padding="14dp" | ||
| 124 | + android:src="@drawable/demo_share" | ||
| 125 | + app:layout_constraintEnd_toEndOf="parent" | ||
| 126 | + app:layout_constraintTop_toTopOf="parent"/> | ||
| 117 | </androidx.constraintlayout.widget.ConstraintLayout> | 127 | </androidx.constraintlayout.widget.ConstraintLayout> |
| 118 | 128 | ||
| 119 | <LinearLayout | 129 | <LinearLayout |
| ... | @@ -225,10 +235,16 @@ | ... | @@ -225,10 +235,16 @@ |
| 225 | android:textSize="17sp" | 235 | android:textSize="17sp" |
| 226 | tools:text="BDTK0Y8UD8" /> | 236 | tools:text="BDTK0Y8UD8" /> |
| 227 | 237 | ||
| 238 | + <View | ||
| 239 | + android:layout_width="4dp" | ||
| 240 | + android:layout_height="match_parent" /> | ||
| 241 | + | ||
| 228 | <ImageView | 242 | <ImageView |
| 229 | android:id="@+id/iv_copy_code" | 243 | android:id="@+id/iv_copy_code" |
| 230 | - android:layout_width="32dp" | 244 | + android:layout_width="24dp" |
| 231 | - android:layout_height="32dp" | 245 | + android:layout_height="24dp" |
| 246 | + android:background="@drawable/shape_rectangle_rounded_grey" | ||
| 247 | + android:padding="6dp" | ||
| 232 | android:src="@drawable/demo_copy" /> | 248 | android:src="@drawable/demo_copy" /> |
| 233 | </LinearLayout> | 249 | </LinearLayout> |
| 234 | </LinearLayout> | 250 | </LinearLayout> | ... | ... |
| ... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
| 3 | xmlns:tools="http://schemas.android.com/tools" | 3 | xmlns:tools="http://schemas.android.com/tools" |
| 4 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
| 5 | android:layout_height="match_parent" | 5 | android:layout_height="match_parent" |
| 6 | - android:background="@color/custom_grey_light"> | 6 | + android:background="@color/white"> |
| 7 | 7 | ||
| 8 | <ScrollView | 8 | <ScrollView |
| 9 | android:id="@+id/coupon_scrollview" | 9 | android:id="@+id/coupon_scrollview" | ... | ... |
| ... | @@ -2,31 +2,25 @@ | ... | @@ -2,31 +2,25 @@ |
| 2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | xmlns:app="http://schemas.android.com/apk/res-auto" | 3 | xmlns:app="http://schemas.android.com/apk/res-auto" |
| 4 | xmlns:tools="http://schemas.android.com/tools" | 4 | xmlns:tools="http://schemas.android.com/tools" |
| 5 | - android:layout_width="270dp" | 5 | + android:layout_width="260dp" |
| 6 | - android:layout_height="260dp" | 6 | + android:layout_height="230dp" |
| 7 | android:background="@drawable/demo_shape_white_border_grey"> | 7 | android:background="@drawable/demo_shape_white_border_grey"> |
| 8 | 8 | ||
| 9 | <ImageView | 9 | <ImageView |
| 10 | android:id="@+id/iv_offer_image" | 10 | android:id="@+id/iv_offer_image" |
| 11 | android:layout_width="match_parent" | 11 | android:layout_width="match_parent" |
| 12 | - android:layout_height="140dp" | 12 | + android:layout_height="130dp" |
| 13 | android:scaleType="centerCrop" /> | 13 | android:scaleType="centerCrop" /> |
| 14 | 14 | ||
| 15 | - <ImageView | ||
| 16 | - android:id="@+id/iv_favorite" | ||
| 17 | - android:layout_width="32dp" | ||
| 18 | - android:layout_height="32dp" | ||
| 19 | - android:layout_margin="8dp" | ||
| 20 | - android:src="@drawable/demo_heart" /> | ||
| 21 | - | ||
| 22 | <TextView | 15 | <TextView |
| 23 | android:id="@+id/tv_price" | 16 | android:id="@+id/tv_price" |
| 24 | - android:layout_width="68dp" | 17 | + android:layout_width="54dp" |
| 25 | - android:layout_height="68dp" | 18 | + android:layout_height="54dp" |
| 26 | android:layout_alignParentEnd="true" | 19 | android:layout_alignParentEnd="true" |
| 27 | android:layout_margin="8dp" | 20 | android:layout_margin="8dp" |
| 28 | - android:background="@drawable/demo_shape_pink" | 21 | + android:background="@drawable/demo_shape_grey" |
| 29 | android:gravity="center" | 22 | android:gravity="center" |
| 23 | + android:includeFontPadding="false" | ||
| 30 | android:textColor="@android:color/white" | 24 | android:textColor="@android:color/white" |
| 31 | android:textSize="16sp" | 25 | android:textSize="16sp" |
| 32 | tools:text="17,95€" /> | 26 | tools:text="17,95€" /> |
| ... | @@ -51,7 +45,8 @@ | ... | @@ -51,7 +45,8 @@ |
| 51 | android:layout_height="wrap_content" | 45 | android:layout_height="wrap_content" |
| 52 | android:maxLines="1" | 46 | android:maxLines="1" |
| 53 | android:textColor="@color/custom_black2" | 47 | android:textColor="@color/custom_black2" |
| 54 | - android:textSize="16sp" | 48 | + android:textSize="15sp" |
| 49 | + android:includeFontPadding="false" | ||
| 55 | app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" | 50 | app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" |
| 56 | app:layout_constraintStart_toStartOf="parent" | 51 | app:layout_constraintStart_toStartOf="parent" |
| 57 | app:layout_constraintTop_toTopOf="parent" | 52 | app:layout_constraintTop_toTopOf="parent" |
| ... | @@ -63,6 +58,7 @@ | ... | @@ -63,6 +58,7 @@ |
| 63 | android:layout_height="wrap_content" | 58 | android:layout_height="wrap_content" |
| 64 | android:layout_marginTop="2dp" | 59 | android:layout_marginTop="2dp" |
| 65 | android:maxLines="2" | 60 | android:maxLines="2" |
| 61 | + android:includeFontPadding="false" | ||
| 66 | android:textColor="@color/custom_black3" | 62 | android:textColor="@color/custom_black3" |
| 67 | android:textSize="13sp" | 63 | android:textSize="13sp" |
| 68 | app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" | 64 | app:layout_constraintEnd_toStartOf="@+id/gl_vertical_70" |
| ... | @@ -78,7 +74,8 @@ | ... | @@ -78,7 +74,8 @@ |
| 78 | android:layout_centerVertical="true" | 74 | android:layout_centerVertical="true" |
| 79 | android:layout_marginTop="12dp" | 75 | android:layout_marginTop="12dp" |
| 80 | android:maxLines="1" | 76 | android:maxLines="1" |
| 81 | - android:textColor="@color/custom_black3" | 77 | + android:includeFontPadding="false" |
| 78 | + android:textColor="@color/custom_grey4" | ||
| 82 | android:textSize="12sp" | 79 | android:textSize="12sp" |
| 83 | app:layout_constraintStart_toStartOf="parent" | 80 | app:layout_constraintStart_toStartOf="parent" |
| 84 | app:layout_constraintBottom_toBottomOf="parent" | 81 | app:layout_constraintBottom_toBottomOf="parent" | ... | ... |
| 1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | xmlns:app="http://schemas.android.com/apk/res-auto" | 3 | xmlns:app="http://schemas.android.com/apk/res-auto" |
| 4 | - android:layout_width="match_parent" | 4 | + android:layout_width="350dp" |
| 5 | - android:layout_height="match_parent"> | 5 | + android:layout_height="130dp" |
| 6 | + android:background="@drawable/shape_rectangle_rounded_grey2"> | ||
| 6 | 7 | ||
| 7 | <ImageView | 8 | <ImageView |
| 8 | android:id="@+id/iv_banner" | 9 | android:id="@+id/iv_banner" | ... | ... |
| ... | @@ -2,8 +2,7 @@ | ... | @@ -2,8 +2,7 @@ |
| 2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| 3 | xmlns:tools="http://schemas.android.com/tools" | 3 | xmlns:tools="http://schemas.android.com/tools" |
| 4 | android:layout_width="match_parent" | 4 | android:layout_width="match_parent" |
| 5 | - android:layout_height="wrap_content" | 5 | + android:layout_height="wrap_content"> |
| 6 | - android:layout_marginTop="48dp"> | ||
| 7 | 6 | ||
| 8 | <LinearLayout | 7 | <LinearLayout |
| 9 | android:id="@+id/ll_section_header" | 8 | android:id="@+id/ll_section_header" |
| ... | @@ -19,19 +18,35 @@ | ... | @@ -19,19 +18,35 @@ |
| 19 | android:layout_height="wrap_content" | 18 | android:layout_height="wrap_content" |
| 20 | android:layout_weight="1" | 19 | android:layout_weight="1" |
| 21 | android:textColor="@color/custom_black2" | 20 | android:textColor="@color/custom_black2" |
| 22 | - android:textSize="16sp" | 21 | + android:textSize="15sp" |
| 23 | tools:text="Top Offers (10)" /> | 22 | tools:text="Top Offers (10)" /> |
| 24 | 23 | ||
| 25 | - <TextView | 24 | + <LinearLayout |
| 26 | - android:id="@+id/tv_section_all" | 25 | + android:id="@+id/ll_all" |
| 27 | android:layout_width="wrap_content" | 26 | android:layout_width="wrap_content" |
| 28 | android:layout_height="wrap_content" | 27 | android:layout_height="wrap_content" |
| 29 | - android:background="@drawable/demo_shape_transparent_border_black" | 28 | + android:orientation="horizontal" |
| 30 | - android:paddingHorizontal="16dp" | 29 | + android:gravity="center" |
| 31 | - android:paddingVertical="5dp" | 30 | + android:paddingHorizontal="16dp"> |
| 32 | - android:text="@string/demo_all" | 31 | + |
| 33 | - android:textColor="@color/custom_black3" | 32 | + <TextView |
| 34 | - android:textSize="14sp" /> | 33 | + android:id="@+id/tv_section_all" |
| 34 | + android:layout_width="wrap_content" | ||
| 35 | + android:layout_height="wrap_content" | ||
| 36 | + android:text="@string/demo_all" | ||
| 37 | + android:textColor="@color/custom_black3" | ||
| 38 | + android:textSize="15sp" /> | ||
| 39 | + | ||
| 40 | + <View | ||
| 41 | + android:layout_width="4dp" | ||
| 42 | + android:layout_height="match_parent" /> | ||
| 43 | + | ||
| 44 | + <ImageView | ||
| 45 | + android:layout_width="8dp" | ||
| 46 | + android:layout_height="4dp" | ||
| 47 | + android:rotation="270" | ||
| 48 | + android:src="@drawable/ic_arrow_down"/> | ||
| 49 | + </LinearLayout> | ||
| 35 | </LinearLayout> | 50 | </LinearLayout> |
| 36 | 51 | ||
| 37 | <androidx.recyclerview.widget.RecyclerView | 52 | <androidx.recyclerview.widget.RecyclerView | ... | ... |
| ... | @@ -32,4 +32,7 @@ | ... | @@ -32,4 +32,7 @@ |
| 32 | <color name="custom_skyblue5">#CCE9FB</color> | 32 | <color name="custom_skyblue5">#CCE9FB</color> |
| 33 | <color name="custom_green">#0D9E5B</color> | 33 | <color name="custom_green">#0D9E5B</color> |
| 34 | <color name="custom_light_green">#DBF6E6</color> | 34 | <color name="custom_light_green">#DBF6E6</color> |
| 35 | + <color name="custom_grey5">#F1F2F4</color> | ||
| 36 | + <color name="custom_grey6">#CBCBCB</color> | ||
| 37 | + <color name="custom_grey7">#D2D6D9</color> | ||
| 35 | </resources> | 38 | </resources> | ... | ... |
| ... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
| 7 | <string name="menu_home">Αρχική</string> | 7 | <string name="menu_home">Αρχική</string> |
| 8 | <string name="demo_home">Αρχική οθόνη</string> | 8 | <string name="demo_home">Αρχική οθόνη</string> |
| 9 | <string name="demo_login">Σύνδεση</string> | 9 | <string name="demo_login">Σύνδεση</string> |
| 10 | - <string name="demo_all">Όλα</string> | 10 | + <string name="demo_all">All</string> |
| 11 | <string name="demo_offer">Προσφορά</string> | 11 | <string name="demo_offer">Προσφορά</string> |
| 12 | <string name="demo_more">View more</string> | 12 | <string name="demo_more">View more</string> |
| 13 | <string name="demo_less">View less</string> | 13 | <string name="demo_less">View less</string> |
| ... | @@ -28,4 +28,7 @@ | ... | @@ -28,4 +28,7 @@ |
| 28 | <string name="demo_active">Ενεργά</string> | 28 | <string name="demo_active">Ενεργά</string> |
| 29 | <string name="demo_redeemed">Εξαργυρωμένα</string> | 29 | <string name="demo_redeemed">Εξαργυρωμένα</string> |
| 30 | <string name="demo_favorites">Αγαπημένα</string> | 30 | <string name="demo_favorites">Αγαπημένα</string> |
| 31 | + <string name="demo_rewards_title">Rewards</string> | ||
| 32 | + <string name="demo_green_title">green</string> | ||
| 33 | + <string name="demo_family_title">family</string> | ||
| 31 | </resources> | 34 | </resources> | ... | ... |
-
Please register or login to post a comment