[android] Added removal button in PP banner

This commit is contained in:
Alexander Zatsepin 2018-08-24 19:06:12 +03:00 committed by yoksnod
parent f48d58f856
commit 799cf4e476
13 changed files with 138 additions and 48 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_banner_button"/>
<solid android:color="@color/black_12"/>
<corners android:radius="@dimen/cardview_default_radius"/>
<padding
android:left="@dimen/margin_eighth"

View file

@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/placepage_banner_small_action_corner"/>
<solid android:color="@color/bg_banner_button"/>
<solid android:color="@color/black_12"/>
<padding
android:left="@dimen/margin_half"
android:right="@dimen/margin_half"

View file

@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/placepage_banner_small_action_corner"/>
<solid android:color="@color/bg_banner_button_night"/>
<solid android:color="@color/white_12"/>
<padding
android:left="@dimen/margin_half"
android:right="@dimen/margin_half"

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_banner_button_night"/>
<solid android:color="@color/white_12"/>
<corners android:radius="@dimen/cardview_default_radius"/>
<padding
android:left="@dimen/margin_eighth"

View file

@ -1,7 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_banner_button"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape
android:shape="rectangle">
<solid android:color="@color/black_24"/>
<corners android:radius="@dimen/button_small_corner_radius"/>
</shape>
</item>
<item>
<shape
android:shape="rectangle">
<solid android:color="@color/black_12"/>
<corners android:radius="@dimen/button_small_corner_radius"/>
</shape>
</item>
</selector>

View file

@ -1,7 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/bg_banner_button_night"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape
android:shape="rectangle">
<solid android:color="@color/white_24"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
</item>
<item>
<shape
android:shape="rectangle">
<solid android:color="@color/white_12"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
</item>
</selector>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape
android:shape="rectangle">
<solid android:color="@color/black_20"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
</item>
<item>
<shape
android:shape="rectangle">
<solid android:color="@color/black_8"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
</item>
</selector>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape
android:shape="rectangle">
<solid android:color="@color/white_20"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
</item>
<item>
<shape
android:shape="rectangle">
<solid android:color="@color/white_8"/>
<corners android:radius="@dimen/cardview_default_radius"/>
</shape>
</item>
</selector>

View file

@ -97,25 +97,52 @@
android:layout_toRightOf="@+id/iv__banner_icon"
android:layout_toEndOf="@+id/iv__banner_icon"/>
</RelativeLayout>
<TextView
android:id="@+id/tv__action_large"
<LinearLayout
android:id="@+id/action_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/placepage_banner_button_height"
android:orientation="horizontal"
android:layout_marginLeft="@dimen/margin_half_plus"
android:layout_marginRight="@dimen/margin_half_plus"
android:layout_below="@id/data_frame"
android:textAppearance="@style/MwmTextAppearance.Body3"
android:textAllCaps="true"
android:background="?bannerButtonBackground"
android:foreground="?clickableBackground"
android:gravity="center"
android:visibility="gone"
tools:text="Заказать"
tools:visibility="visible"
android:layout_marginBottom="@dimen/margin_half"
android:fontFamily="@string/robotoMedium"
tools:targetApi="jelly_bean"/>
android:layout_below="@id/data_frame">
<TextView
android:id="@+id/tv__action_remove"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginRight="@dimen/margin_half"
android:layout_marginEnd="@dimen/margin_half"
android:minHeight="@dimen/placepage_banner_button_height"
android:textAppearance="@style/MwmTextAppearance.Body3"
android:textAllCaps="true"
android:background="?bannerRemoveButtonBackground"
android:gravity="center"
android:visibility="visible"
android:text="String is needed"
android:ellipsize="end"
android:singleLine="true"
tools:visibility="visible"
android:fontFamily="@string/robotoMedium"
tools:targetApi="jelly_bean"/>
<TextView
android:id="@+id/tv__action_large"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minHeight="@dimen/placepage_banner_button_height"
android:textAppearance="@style/MwmTextAppearance.Body3"
android:textAllCaps="true"
android:background="?bannerButtonBackground"
android:gravity="center"
android:visibility="visible"
android:ellipsize="end"
android:singleLine="true"
tools:text="Заказать"
tools:visibility="visible"
android:fontFamily="@string/robotoMedium"
tools:targetApi="jelly_bean"/>
</LinearLayout>
<ImageButton
android:id="@+id/remove_btn"
android:layout_width="@dimen/placepage_banner_remove_button_size"

View file

@ -23,6 +23,7 @@
<color name="black_8">#14000000</color> <!-- 8% black -->
<color name="black_11">#1C000000</color> <!-- 11% black -->
<color name="black_12">#1E000000</color> <!-- 12% black -->
<color name="black_20">#33000000</color> <!-- 20% black -->
<color name="black_24">#3D000000</color> <!-- 24% black -->
<color name="black_38">#61000000</color> <!-- 38% black -->
<color name="black_60">#99000000</color> <!-- 60% black -->
@ -33,6 +34,7 @@
<color name="white_8">#14FFFFFF</color> <!-- 8% white -->
<color name="white_11">#1CFFFFFF</color> <!-- 11% white -->
<color name="white_12">#1EFFFFFF</color> <!-- 12% white -->
<color name="white_20">#33FFFFFF</color> <!-- 20% white -->
<color name="white_24">#3DFFFFFF</color> <!-- 24% white -->
<color name="white_38">#61FFFFFF</color> <!-- 38% white -->
<color name="white_60">#99FFFFFF</color> <!-- 60% white -->
@ -169,13 +171,8 @@
<color name="bg_banner_color_night">#FF484C50</color>
<color name="text_banner_color">#28000000</color>
<color name="text_banner_color_night">#28FFFFFF</color>
<color name="bg_banner_button">@color/black_12</color>
<color name="bg_banner_button_night">@color/white_12</color>
<color name="text_ads_color">#FFFFFBF2</color>
<color name="text_ads_color_night">#FFFFFBF2</color>
<color name="banner_action_btn_start_anim_night">#FF888A82</color>
<color name="banner_action_btn_end_anim">#FFD9D2C3</color>
<color name="banner_action_btn_end_anim_night">#FF71736C</color>
<color name="megafon_button">@color/bg_brand_partner19</color>
<color name="megafon_button_pressed">@color/bg_brand_partner19_pressed</color>

View file

@ -74,6 +74,7 @@
<attr name="bannerBackground" format="reference"/>
<attr name="bannerButtonBackground" format="reference"/>
<attr name="bannerButtonBackgroundColor" format="color"/>
<attr name="bannerRemoveButtonBackground" format="reference"/>
<attr name="adsBackground" format="reference"/>
<attr name="adsText" format="color"/>
<attr name="adsActionBackground" format="reference"/>

View file

@ -92,7 +92,8 @@
<item name="bannerText">@color/text_banner_color</item>
<item name="bannerBackground">@drawable/bg_pp_banner</item>
<item name="bannerButtonBackground">@drawable/bg_pp_banner_large_button</item>
<item name="bannerButtonBackgroundColor">@color/bg_banner_button</item>
<item name="bannerButtonBackgroundColor">@color/black_12</item>
<item name="bannerRemoveButtonBackground">@drawable/bg_pp_banner_remove_button</item>
<item name="adsBackground">@drawable/bg_ads</item>
<item name="adsText">@color/text_ads_color</item>
<item name="adsActionBackground">@drawable/bg_ads_action</item>
@ -228,7 +229,8 @@
<item name="bannerText">@color/text_banner_color_night</item>
<item name="bannerBackground">@drawable/bg_pp_banner_night</item>
<item name="bannerButtonBackground">@drawable/bg_pp_banner_large_button_night</item>
<item name="bannerButtonBackgroundColor">@color/bg_banner_button_night</item>
<item name="bannerButtonBackgroundColor">@color/white_12</item>
<item name="bannerRemoveButtonBackground">@drawable/bg_pp_banner_remove_button_night</item>
<item name="adsBackground">@drawable/bg_ads_night</item>
<item name="adsText">@color/text_ads_color_night</item>
<item name="adsActionBackground">@drawable/bg_ads_action_night</item>

View file

@ -88,6 +88,9 @@ final class BannerController
private TextView mActionSmall;
@SuppressWarnings("NullableProblems")
@NonNull
private View mActionContainer;
@SuppressWarnings("NullableProblems")
@NonNull
private TextView mActionLarge;
@SuppressWarnings("NullableProblems")
@NonNull
@ -136,7 +139,10 @@ final class BannerController
mTitle = mBannerView.findViewById(R.id.tv__banner_title);
mMessage = mBannerView.findViewById(R.id.tv__banner_message);
mActionSmall = mBannerView.findViewById(R.id.tv__action_small);
mActionLarge = mBannerView.findViewById(R.id.tv__action_large);
mActionContainer = mBannerView.findViewById(R.id.action_container);
mActionLarge = mActionContainer.findViewById(R.id.tv__action_large);
View actionRemove = mActionContainer.findViewById(R.id.tv__action_remove);
actionRemove.setOnClickListener(v -> handleAdsRemoval());
mAdChoices = mBannerView.findViewById(R.id.ad_choices_icon);
mAdChoices.setOnClickListener(v -> handlePrivacyInfoUrl());
mAdChoicesLabel = mBannerView.findViewById(R.id.ad_choices_label);
@ -182,18 +188,18 @@ final class BannerController
if ((mAdsLoader.isAdLoading() || hasErrorOccurred())
&& mCurrentAd == null)
{
UiUtils.hide(mIcon, mTitle, mMessage, mActionSmall, mActionLarge, mAdChoices, mAdChoicesLabel,
mAdRemovalButton);
UiUtils.hide(mIcon, mTitle, mMessage, mActionSmall, mActionContainer, mAdChoices,
mAdChoicesLabel, mAdRemovalButton);
}
else if (mCurrentAd != null)
{
UiUtils.showIf(mCurrentAd.getType().showAdChoiceIcon(), mAdChoices);
UiUtils.show(mIcon, mTitle, mMessage, mActionSmall, mActionLarge, mAdChoicesLabel,
UiUtils.show(mIcon, mTitle, mMessage, mActionSmall, mActionContainer, mAdChoicesLabel,
mAdRemovalButton);
if (mOpened)
UiUtils.hide(mActionSmall);
else
UiUtils.hide(mActionLarge, mIcon);
UiUtils.hide(mActionContainer, mIcon);
}
}
@ -351,17 +357,16 @@ final class BannerController
private void animateActionButton()
{
View view = mOpened ? mBannerView.findViewById(R.id.tv__action_large)
: mBannerView.findViewById(R.id.tv__action_small);
View view = mOpened ? mActionLarge : mActionSmall;
ObjectAnimator animator;
if (mOpened)
{
Context context = mBannerView.getContext();
Resources res = context.getResources();
int colorFrom = ThemeUtils.isNightTheme() ? res.getColor(R.color.banner_action_btn_start_anim_night)
: res.getColor(R.color.bg_banner_button);
int colorTo = ThemeUtils.isNightTheme() ? res.getColor(R.color.banner_action_btn_end_anim_night)
: res.getColor(R.color.banner_action_btn_end_anim);
int colorFrom = ThemeUtils.isNightTheme() ? res.getColor(R.color.white_12)
: res.getColor(R.color.black_12);
int colorTo = ThemeUtils.isNightTheme() ? res.getColor(R.color.white_24)
: res.getColor(R.color.black_24);
animator = ObjectAnimator.ofObject(view, "backgroundColor", new ArgbEvaluator(),
colorFrom, colorTo, colorFrom);
}