diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2016-02-10 17:44:52 +0100 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2016-02-10 17:44:52 +0100 |
commit | a94713103b6c72136fbf4886bf561616b2a01e4e (patch) | |
tree | ce26bb1ef93e25d79276ab6b18167e7e927d4cb7 /OpenKeychain/src/main | |
parent | 751298a4d832f316244fd6345c46ba806dcfc860 (diff) | |
parent | 0191cf92dba72c066c355dc0f67b332c00e659de (diff) | |
download | open-keychain-a94713103b6c72136fbf4886bf561616b2a01e4e.tar.gz open-keychain-a94713103b6c72136fbf4886bf561616b2a01e4e.tar.bz2 open-keychain-a94713103b6c72136fbf4886bf561616b2a01e4e.zip |
Merge pull request #1705 from fidesmo/feature-better-transaction-animation
Better transaction animation
Diffstat (limited to 'OpenKeychain/src/main')
11 files changed, 183 insertions, 203 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java index 130dd6a79..772dfe070 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/SecurityTokenOperationActivity.java @@ -49,6 +49,8 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; +import nordpol.android.NfcGuideView; + /** * This class provides a communication interface to OpenPGP applications on ISO SmartCard compliant * NFC devices. @@ -67,6 +69,7 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity public ViewAnimator vAnimator; public TextView vErrorText; public Button vErrorTryAgainButton; + public NfcGuideView nfcGuideView; private RequiredInputParcel mRequiredInput; private Intent mServiceIntent; @@ -88,6 +91,8 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity super.onCreate(savedInstanceState); Log.d(Constants.TAG, "NfcOperationActivity.onCreate"); + nfcGuideView = (NfcGuideView) findViewById(R.id.nfc_guide_view); + // prevent annoying orientation changes while fumbling with the device OrientationUtils.lockOrientation(this); // prevent close when touching outside of the dialog (happens easily when fumbling with the device) @@ -101,6 +106,9 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity vAnimator = (ViewAnimator) findViewById(R.id.view_animator); vAnimator.setDisplayedChild(0); + + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.STARTING_POSITION); + vErrorText = (TextView) findViewById(R.id.security_token_activity_3_error_text); vErrorTryAgainButton = (Button) findViewById(R.id.security_token_activity_3_error_try_again); vErrorTryAgainButton.setOnClickListener(new View.OnClickListener() { @@ -110,6 +118,9 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity obtainPassphraseIfRequired(); vAnimator.setDisplayedChild(0); + + nfcGuideView.setVisibility(View.VISIBLE); + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.STARTING_POSITION); } }); Button vCancel = (Button) findViewById(R.id.security_token_activity_0_cancel); @@ -147,6 +158,7 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity public void onNfcPreExecute() { // start with indeterminate progress vAnimator.setDisplayedChild(1); + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.TRANSFERRING); } @Override @@ -277,6 +289,8 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity // show finish vAnimator.setDisplayedChild(2); + nfcGuideView.setCurrentStatus(NfcGuideView.NfcGuideViewStatus.DONE); + new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { @@ -307,6 +321,8 @@ public class SecurityTokenOperationActivity extends BaseSecurityTokenNfcActivity vErrorText.setText(error + "\n\n" + getString(R.string.security_token_nfc_try_again_text)); vAnimator.setDisplayedChild(3); + + nfcGuideView.setVisibility(View.GONE); } @Override diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 1c2ddcd5f..000000000 --- a/OpenKeychain/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 86bf38e98..000000000 --- a/OpenKeychain/src/main/res/drawable-mdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 872b578c8..000000000 --- a/OpenKeychain/src/main/res/drawable-xhdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 6d3b6449c..000000000 --- a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png b/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png Binary files differdeleted file mode 100644 index 0e3b23964..000000000 --- a/OpenKeychain/src/main/res/drawable-xxxhdpi/ic_check_circle_black_48dp.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/drawable/yubikey_phone.png b/OpenKeychain/src/main/res/drawable/yubikey_phone.png Binary files differdeleted file mode 100644 index 3cdfbba0f..000000000 --- a/OpenKeychain/src/main/res/drawable/yubikey_phone.png +++ /dev/null diff --git a/OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml b/OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml new file mode 100644 index 000000000..cf0edac8c --- /dev/null +++ b/OpenKeychain/src/main/res/layout-land/security_token_operation_activity.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="24dp"> + + <nordpol.android.NfcGuideView + android:id="@+id/nfc_guide_view" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + custom:nfc_device="card_black"/> + + <include + layout="@layout/security_token_operation_activity_toolable_view_animator" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="match_parent" /> + +</LinearLayout> diff --git a/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml b/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml index 4436cfe01..f4efb7c01 100644 --- a/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml +++ b/OpenKeychain/src/main/res/layout/create_security_token_wait_fragment.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -21,13 +22,15 @@ android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginLeft="8dp" + android:layout_marginBottom="24dp" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/security_token_create" /> - <ImageView - android:layout_width="match_parent" + <nordpol.android.NfcGuideView + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:src="@drawable/yubikey_phone" /> + android:layout_gravity="center_horizontal" + custom:nfc_device="usb_black"/> </LinearLayout> diff --git a/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml b/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml index 1644f6a6f..19f241825 100644 --- a/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml +++ b/OpenKeychain/src/main/res/layout/security_token_operation_activity.xml @@ -3,207 +3,16 @@ xmlns:custom="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="24dp"> - <org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator - android:id="@+id/view_animator" + <nordpol.android.NfcGuideView + android:id="@+id/nfc_guide_view" android:layout_width="match_parent" - android:layout_height="match_parent" - android:animateLayoutChanges="true" - android:inAnimation="@anim/fade_in" - android:measureAllChildren="false" - android:minHeight="?listPreferredItemHeightSmall" - android:outAnimation="@anim/fade_out" - custom:initialView="3"> + android:layout_height="wrap_content" + custom:nfc_device="usb_black"/> - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> + <include layout="@layout/security_token_operation_activity_toolable_view_animator" /> - <TextView - android:id="@+id/security_token_activity_0_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_marginRight="24dp" - android:layout_marginTop="24dp" - android:text="@string/security_token_nfc_text" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <ImageView - android:id="@+id/security_token_activity_0_image" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_0_text" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" /> - - <Button - android:id="@+id/security_token_activity_0_cancel" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_0_image" - android:layout_margin="8dp" - android:text="@string/progress_cancel" /> - </RelativeLayout> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/security_token_activity_1_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_marginRight="24dp" - android:layout_marginTop="24dp" - android:text="@string/security_token_nfc_wait" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <ProgressBar - style="?android:attr/progressBarStyleLarge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:padding="8dp" /> - - <!-- placeholder to retain dialog size --> - <ImageView - android:id="@+id/security_token_activity_1_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_1_text" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" - android:visibility="invisible" /> - - <Button - android:id="@+id/security_token_activity_1_button_placeholder" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_1_placeholder" - android:layout_margin="8dp" - android:text="" - android:visibility="invisible" /> - - </RelativeLayout> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/security_token_activity_2_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="24dp" - android:layout_marginRight="24dp" - android:layout_marginTop="24dp" - android:text="@string/security_token_nfc_finished" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <!-- placeholder to retain dialog size --> - <ImageView - android:id="@+id/security_token_activity_2_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_2_text" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" - android:visibility="invisible" /> - - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/ic_check_circle_black_48dp" /> - - <Button - android:id="@+id/security_token_activity_2_button_placeholder" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_2_placeholder" - android:layout_margin="8dp" - android:text="" - android:visibility="invisible" /> - - </RelativeLayout> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/security_token_activity_3_text_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignEnd="@+id/security_token_activity_3_placeholder" - android:layout_alignRight="@+id/security_token_activity_3_placeholder" - android:layout_marginLeft="24dp" - android:layout_marginTop="24dp" - android:text="" - android:textAppearance="@android:style/TextAppearance.Medium" /> - - <!-- placeholder to retain dialog size --> - <ImageView - android:id="@+id/security_token_activity_3_placeholder" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true" - android:layout_below="@+id/security_token_activity_3_text_placeholder" - android:layout_margin="24dp" - android:adjustViewBounds="true" - android:background="@android:color/transparent" - android:src="@drawable/yubikey_phone" - android:visibility="invisible" /> - - <TextView - android:id="@+id/security_token_activity_3_error_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:layout_margin="24dp" - android:textAppearance="@android:style/TextAppearance.Medium" - android:textColor="@color/android_red_dark" - tools:text="Error text" /> - - <Button - android:id="@+id/security_token_activity_3_error_try_again" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_below="@+id/security_token_activity_3_placeholder" - android:layout_margin="8dp" - android:text="@string/security_token_error_try_again" /> - - </RelativeLayout> - - </org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator> - -</LinearLayout>
\ No newline at end of file +</LinearLayout> diff --git a/OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml b/OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml new file mode 100644 index 000000000..35ddf398b --- /dev/null +++ b/OpenKeychain/src/main/res/layout/security_token_operation_activity_toolable_view_animator.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8"?> +<org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:custom="http://schemas.android.com/apk/res-auto" + android:id="@+id/view_animator" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:animateLayoutChanges="true" + android:inAnimation="@anim/fade_in" + android:measureAllChildren="false" + android:minHeight="?listPreferredItemHeightSmall" + android:outAnimation="@anim/fade_out" + custom:initialView="3" + tools:showIn="@layout/security_token_operation_activity"> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_0_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginTop="24dp" + android:text="@string/security_token_nfc_text" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <Button + android:id="@+id/security_token_activity_0_cancel" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="@string/progress_cancel" /> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_1_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginTop="24dp" + android:text="@string/security_token_nfc_wait" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <Button + android:id="@+id/security_token_activity_1_button_placeholder" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="" + android:visibility="invisible" /> + + </LinearLayout> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_2_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginRight="24dp" + android:layout_marginTop="24dp" + android:text="@string/security_token_nfc_finished" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <Button + android:id="@+id/security_token_activity_2_button_placeholder" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="" + android:visibility="invisible" /> + + </LinearLayout> + + <ScrollView + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/security_token_activity_3_text_placeholder" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="24dp" + android:layout_marginTop="24dp" + android:text="" + android:textAppearance="@android:style/TextAppearance.Medium" /> + + <TextView + android:id="@+id/security_token_activity_3_error_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="24dp" + android:textAppearance="@android:style/TextAppearance.Medium" + android:textColor="@color/android_red_dark" + tools:text="Error text" /> + + <Button + android:id="@+id/security_token_activity_3_error_try_again" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_margin="8dp" + android:text="@string/security_token_error_try_again" /> + + </LinearLayout> + + </ScrollView> + +</org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator> |