diff options
author | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-07-27 20:58:25 +0200 |
---|---|---|
committer | Dominik Schürmann <dominik@dominikschuermann.de> | 2014-07-27 20:58:25 +0200 |
commit | 0f87b81158d0de0bd4e1af54a0bbc2cd6c10527e (patch) | |
tree | 5bffb70abe4ba78a164574f744cdad5fd898696c /OpenKeychain/src/main/java | |
parent | 57d9c7a013cefa6641bff7167486f7fe12247265 (diff) | |
download | open-keychain-0f87b81158d0de0bd4e1af54a0bbc2cd6c10527e.tar.gz open-keychain-0f87b81158d0de0bd4e1af54a0bbc2cd6c10527e.tar.bz2 open-keychain-0f87b81158d0de0bd4e1af54a0bbc2cd6c10527e.zip |
Load QR Code asynchronously and with a fade in animation
Diffstat (limited to 'OpenKeychain/src/main/java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java index 52b573f47..46cd7e25b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyShareFragment.java @@ -19,8 +19,16 @@ package org.sufficientlysecure.keychain.ui; import android.annotation.TargetApi; import android.content.Intent; +import android.content.res.Resources; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.TransitionDrawable; import android.net.Uri; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.provider.Settings; @@ -152,7 +160,7 @@ public class ViewKeyShareFragment extends LoaderFragment implements KeyRings.buildUnifiedKeyRingUri(dataUri), Keys.FINGERPRINT, ProviderHelper.FIELD_TYPE_BLOB); String fingerprint = PgpKeyHelper.convertFingerprintToHex(data); - if(!toClipboard){ + if (!toClipboard) { content = Constants.FINGERPRINT_SCHEME + ":" + fingerprint; } else { content = fingerprint; @@ -292,10 +300,7 @@ public class ViewKeyShareFragment extends LoaderFragment implements String fingerprint = PgpKeyHelper.convertFingerprintToHex(fingerprintBlob); mFingerprint.setText(PgpKeyHelper.colorizeFingerprint(fingerprint)); - String qrCodeContent = Constants.FINGERPRINT_SCHEME + ":" + fingerprint; - mFingerprintQrCode.setImageBitmap( - QrCodeUtils.getQRCodeBitmap(qrCodeContent, QR_CODE_SIZE) - ); + loadQrCode(fingerprint); break; } @@ -311,4 +316,35 @@ public class ViewKeyShareFragment extends LoaderFragment implements */ public void onLoaderReset(Loader<Cursor> loader) { } + + /** + * Load QR Code asynchronously and with a fade in animation + * + * @param fingerprint + */ + private void loadQrCode(final String fingerprint) { + AsyncTask<Void, Void, Bitmap> loadTask = + new AsyncTask<Void, Void, Bitmap>() { + protected Bitmap doInBackground(Void... unused) { + String qrCodeContent = Constants.FINGERPRINT_SCHEME + ":" + fingerprint; + return QrCodeUtils.getQRCodeBitmap(qrCodeContent, QR_CODE_SIZE); + } + + protected void onPostExecute(Bitmap qrCode) { + mFingerprintQrCode.setImageBitmap(qrCode); + + // Transition drawable with a transparent drawable and the final bitmap + final TransitionDrawable td = + new TransitionDrawable(new Drawable[]{ + new ColorDrawable(Color.TRANSPARENT), + new BitmapDrawable(getResources(), qrCode) + }); + + mFingerprintQrCode.setImageDrawable(td); + td.startTransition(200); + } + }; + + loadTask.execute(); + } } |