Wallet screen UI Polish:
1. update the fading effect for action button. 2. the action button will depend on whether the card above it has the second line label. 3. update the options menu item background to 1 shade lighter grey. Test: manual, see demo: https: //drive.google.com/file/d/1TLc6t1Ola6G_QiU0yadWdh1nLbQnEJ7g/view?usp=sharing&resourcekey=0-f1qKR8nLjvo0VrtLqKBE9w Bug: 190760488 Bug: 190531125 Change-Id: I012694e9ff0a252f6ce918043f6bf7dcd01ba97e
This commit is contained in:
@@ -883,5 +883,6 @@
|
||||
|
||||
<style name="Wallet.Theme" parent="@android:style/Theme.DeviceDefault">
|
||||
<item name="android:colorBackground">@android:color/system_neutral1_900</item>
|
||||
<item name="android:itemBackground">@android:color/system_neutral1_800</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -104,15 +104,14 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard
|
||||
float percentDistanceFromCenter) {
|
||||
CharSequence centerCardText = getLabelText(centerCard);
|
||||
Drawable centerCardIcon = getHeaderIcon(mContext, centerCard);
|
||||
if (!TextUtils.equals(mCenterCardText, centerCardText)) {
|
||||
mCenterCardText = centerCardText;
|
||||
renderActionButton(centerCard, mIsDeviceLocked, mIsUdfpsEnabled);
|
||||
if (centerCard.isUiEquivalent(nextCard)) {
|
||||
mCardLabel.setAlpha(1f);
|
||||
mIcon.setAlpha(1f);
|
||||
mActionButton.setAlpha(1f);
|
||||
} else {
|
||||
mCardLabel.setText(centerCardText);
|
||||
mIcon.setImageDrawable(centerCardIcon);
|
||||
}
|
||||
renderActionButton(centerCard, mIsDeviceLocked, mIsUdfpsEnabled);
|
||||
if (TextUtils.equals(centerCardText, getLabelText(nextCard))) {
|
||||
mCardLabel.setAlpha(1f);
|
||||
} else {
|
||||
mCardLabel.setAlpha(percentDistanceFromCenter);
|
||||
mIcon.setAlpha(percentDistanceFromCenter);
|
||||
mActionButton.setAlpha(percentDistanceFromCenter);
|
||||
@@ -141,6 +140,7 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard
|
||||
mErrorView.setVisibility(GONE);
|
||||
mEmptyStateView.setVisibility(GONE);
|
||||
mIcon.setImageDrawable(getHeaderIcon(mContext, data.get(selectedIndex)));
|
||||
mCardLabel.setText(getLabelText(data.get(selectedIndex)));
|
||||
renderActionButton(data.get(selectedIndex), isDeviceLocked, mIsUdfpsEnabled);
|
||||
if (shouldAnimate) {
|
||||
animateViewsShown(mIcon, mCardLabel, mActionButton);
|
||||
@@ -248,20 +248,20 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard
|
||||
private void renderActionButton(
|
||||
WalletCardViewInfo walletCard, boolean isDeviceLocked, boolean isUdfpsEnabled) {
|
||||
CharSequence actionButtonText = getActionButtonText(walletCard);
|
||||
if (!isUdfpsEnabled && isDeviceLocked) {
|
||||
if (!isUdfpsEnabled && actionButtonText != null) {
|
||||
mActionButton.setVisibility(VISIBLE);
|
||||
mActionButton.setText(R.string.wallet_action_button_label_unlock);
|
||||
mActionButton.setOnClickListener(mDeviceLockedActionOnClickListener);
|
||||
} else if (!isDeviceLocked && actionButtonText != null) {
|
||||
mActionButton.setText(actionButtonText);
|
||||
mActionButton.setVisibility(VISIBLE);
|
||||
mActionButton.setOnClickListener(v -> {
|
||||
try {
|
||||
walletCard.getPendingIntent().send();
|
||||
} catch (PendingIntent.CanceledException e) {
|
||||
Log.w(TAG, "Error sending pending intent for wallet card");
|
||||
}
|
||||
});
|
||||
mActionButton.setOnClickListener(
|
||||
isDeviceLocked
|
||||
? mDeviceLockedActionOnClickListener
|
||||
: v -> {
|
||||
try {
|
||||
walletCard.getPendingIntent().send();
|
||||
} catch (PendingIntent.CanceledException e) {
|
||||
Log.w(TAG, "Error sending pending intent for wallet card.");
|
||||
}
|
||||
}
|
||||
);
|
||||
} else {
|
||||
mActionButton.setVisibility(GONE);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,6 @@ import java.util.Collections;
|
||||
@SmallTest
|
||||
public class WalletScreenControllerTest extends SysuiTestCase {
|
||||
|
||||
private static final int MAX_CARDS = 10;
|
||||
private static final int CARD_CAROUSEL_WIDTH = 10;
|
||||
private static final String CARD_ID_1 = "card_id_1";
|
||||
private static final String CARD_ID_2 = "card_id_2";
|
||||
@@ -158,7 +157,7 @@ public class WalletScreenControllerTest extends SysuiTestCase {
|
||||
when(mKeyguardStateController.isUnlocked()).thenReturn(false);
|
||||
GetWalletCardsResponse response =
|
||||
new GetWalletCardsResponse(
|
||||
Collections.singletonList(createWalletCard(mContext)), 0);
|
||||
Collections.singletonList(createLockedWalletCard(mContext)), 0);
|
||||
|
||||
mController.queryWalletCards();
|
||||
mTestableLooper.processAllMessages();
|
||||
@@ -406,6 +405,15 @@ public class WalletScreenControllerTest extends SysuiTestCase {
|
||||
.build();
|
||||
}
|
||||
|
||||
private WalletCard createLockedWalletCard(Context context) {
|
||||
PendingIntent pendingIntent =
|
||||
PendingIntent.getActivity(context, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE);
|
||||
return new WalletCard.Builder(CARD_ID_2, createIcon(), "•••• 5679", pendingIntent)
|
||||
.setCardIcon(createIcon())
|
||||
.setCardLabel("Locked\nUnlock to pay")
|
||||
.build();
|
||||
}
|
||||
|
||||
private WalletCard createWalletCard(Context context) {
|
||||
PendingIntent pendingIntent =
|
||||
PendingIntent.getActivity(context, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE);
|
||||
|
||||
Reference in New Issue
Block a user