aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-09-25 03:59:13 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-09-25 03:59:13 +0200
commit7e175ac6730b958bc561cde511b0a29495d40889 (patch)
tree87aa76ccb59dc63643787add55ecc97c800875ba /OpenKeychain/src
parent35ef8372866877d92971228b6c56270112238ce9 (diff)
downloadopen-keychain-7e175ac6730b958bc561cde511b0a29495d40889.tar.gz
open-keychain-7e175ac6730b958bc561cde511b0a29495d40889.tar.bz2
open-keychain-7e175ac6730b958bc561cde511b0a29495d40889.zip
enc-backup: use ValueAnimator rather than ObjectAnimator for compatibility
Diffstat (limited to 'OpenKeychain/src')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BackupCodeEntryFragment.java64
1 files changed, 30 insertions, 34 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BackupCodeEntryFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BackupCodeEntryFragment.java
index 7872fd80e..b39acd338 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BackupCodeEntryFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/BackupCodeEntryFragment.java
@@ -25,12 +25,11 @@ import java.util.Date;
import java.util.Locale;
import java.util.Random;
-import android.animation.ObjectAnimator;
+import android.animation.ArgbEvaluator;
+import android.animation.ValueAnimator;
+import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.app.Activity;
import android.content.Context;
-import android.graphics.Color;
-import android.graphics.PorterDuff.Mode;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
@@ -45,7 +44,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
-import android.view.animation.LinearInterpolator;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.TextView;
@@ -63,7 +61,6 @@ public class BackupCodeEntryFragment extends Fragment implements OnBackStackChan
private ExportHelper mExportHelper;
private EditText[] mCodeEditText;
- private TextView[] mCodeDisplayText;
private ViewAnimator mStatusAnimator, mTitleAnimator, mCodeFieldsAnimator;
private int mBackStackLevel;
@@ -127,9 +124,7 @@ public class BackupCodeEntryFragment extends Fragment implements OnBackStackChan
// we know all fields are filled, so if it's not the *right* one it's a *wrong* one!
@ColorInt int black = mCodeEditText[0].getCurrentTextColor();
@ColorInt int red = getResources().getColor(R.color.android_red_dark);
- for (EditText editText : mCodeEditText) {
- animateFlashText(editText, black, red, false);
- }
+ animateFlashText(mCodeEditText, black, red, false);
break;
}
@@ -144,8 +139,8 @@ public class BackupCodeEntryFragment extends Fragment implements OnBackStackChan
@ColorInt int green = getResources().getColor(R.color.android_green_dark);
for (EditText editText : mCodeEditText) {
editText.setEnabled(false);
- animateFlashText(editText, black, green, true);
}
+ animateFlashText(mCodeEditText, black, green, true);
popFromBackStackNoAction();
@@ -170,21 +165,21 @@ public class BackupCodeEntryFragment extends Fragment implements OnBackStackChan
mCodeEditText[2] = (EditText) view.findViewById(R.id.backup_code_3);
mCodeEditText[3] = (EditText) view.findViewById(R.id.backup_code_4);
- mCodeDisplayText = new TextView[4];
- mCodeDisplayText[0] = (TextView) view.findViewById(R.id.backup_code_display_1);
- mCodeDisplayText[1] = (TextView) view.findViewById(R.id.backup_code_display_2);
- mCodeDisplayText[2] = (TextView) view.findViewById(R.id.backup_code_display_3);
- mCodeDisplayText[3] = (TextView) view.findViewById(R.id.backup_code_display_4);
+ {
+ TextView[] codeDisplayText = new TextView[4];
+ codeDisplayText[0] = (TextView) view.findViewById(R.id.backup_code_display_1);
+ codeDisplayText[1] = (TextView) view.findViewById(R.id.backup_code_display_2);
+ codeDisplayText[2] = (TextView) view.findViewById(R.id.backup_code_display_3);
+ codeDisplayText[3] = (TextView) view.findViewById(R.id.backup_code_display_4);
- { // set backup code in code TextViews
+ // set backup code in code TextViews
char[] backupCode = mBackupCode.toCharArray();
- for (int i = 0; i < mCodeDisplayText.length; i++) {
- mCodeDisplayText[i].setText(backupCode, i * 7, 6);
+ for (int i = 0; i < codeDisplayText.length; i++) {
+ codeDisplayText[i].setText(backupCode, i * 7, 6);
}
- }
- { // set background to null in TextViews - this will retain padding from EditText style!
- for (TextView textView : mCodeDisplayText) {
+ // set background to null in TextViews - this will retain padding from EditText style!
+ for (TextView textView : codeDisplayText) {
// noinspection deprecation, setBackground(Drawable) is API level >=16
textView.setBackgroundDrawable(null);
}
@@ -287,21 +282,22 @@ public class BackupCodeEntryFragment extends Fragment implements OnBackStackChan
}
- private void animateFlashText(EditText editText, int color1, int color2, boolean staySecondColor) {
-
- ObjectAnimator anim;
- if (staySecondColor) {
- anim = ObjectAnimator.ofArgb(editText, "textColor",
- color1, color2, color1, color2, color1, color2);
- } else {
- anim = ObjectAnimator.ofArgb(editText, "textColor",
- color1, color2, color1, color2, color1);
- }
+ private void animateFlashText(final TextView[] textViews, int color1, int color2, boolean staySecondColor) {
- anim.setDuration(1000);
- anim.setStartDelay(200);
- anim.setInterpolator(new LinearInterpolator());
+ ValueAnimator anim = ValueAnimator.ofObject(new ArgbEvaluator(), color1, color2);
+ anim.addUpdateListener(new AnimatorUpdateListener() {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animator) {
+ for (TextView textView : textViews) {
+ textView.setTextColor((Integer) animator.getAnimatedValue());
+ }
+ }
+ });
+ anim.setRepeatMode(ValueAnimator.REVERSE);
+ anim.setRepeatCount(staySecondColor ? 4 : 5);
+ anim.setDuration(180);
anim.start();
+
}
private void setupEditTextFocusNext(final EditText[] backupCodes) {