From 138773798ae9325ba92021c8779f71e6fc0c23c6 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Mon, 9 Mar 2015 16:56:10 +0100 Subject: fix transition animation --- .../keychain/ui/ViewKeyFragment.java | 31 +++++++++++++++++----- .../keychain/ui/adapter/LinkedIdsAdapter.java | 2 +- .../keychain/ui/linked/LinkedIdViewFragment.java | 17 +++++++++++- 3 files changed, 41 insertions(+), 9 deletions(-) (limited to 'OpenKeychain/src/main/java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java index a7dc63122..b1da6df9d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java @@ -24,9 +24,8 @@ import android.database.Cursor; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.support.v4.app.Fragment; +import android.os.Handler; import android.support.v4.app.LoaderManager; -import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v7.widget.CardView; import android.transition.Fade; @@ -42,10 +41,11 @@ import android.widget.ListView; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround; -import org.sufficientlysecure.keychain.provider.KeychainContract; import org.sufficientlysecure.keychain.ui.adapter.LinkedIdsAdapter; import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter; import org.sufficientlysecure.keychain.ui.dialog.UserIdInfoDialogFragment; +import org.sufficientlysecure.keychain.ui.linked.LinkedIdViewFragment; +import org.sufficientlysecure.keychain.ui.linked.LinkedIdViewFragment.OnIdentityLoadedListener; import org.sufficientlysecure.keychain.util.Log; public class ViewKeyFragment extends LoaderFragment implements @@ -129,7 +129,7 @@ public class ViewKeyFragment extends LoaderFragment implements } private void showLinkedId(final int position) { - Fragment frag; + final LinkedIdViewFragment frag; try { frag = mLinkedIdsAdapter.getLinkedIdFragment(mDataUri, position, mFingerprint); } catch (IOException e) { @@ -146,10 +146,27 @@ public class ViewKeyFragment extends LoaderFragment implements } getFragmentManager().beginTransaction() - .replace(R.id.view_key_fragment, frag) - .addSharedElement(mLinkedIdsCard, "card_linked_ids") - .addToBackStack("linked_id") + .add(R.id.view_key_fragment, frag) + .hide(frag) .commit(); + + frag.setOnIdentityLoadedListener(new OnIdentityLoadedListener() { + @Override + public void onIdentityLoaded() { + new Handler().post(new Runnable() { + @Override + public void run() { + getFragmentManager().beginTransaction() + .show(frag) + .addSharedElement(mLinkedIdsCard, "card_linked_ids") + .remove(ViewKeyFragment.this) + .addToBackStack("linked_id") + .commit(); + } + }); + } + }); + } private void showUserIdInfo(final int position) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java index ce4291101..76cb63223 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/LinkedIdsAdapter.java @@ -126,7 +126,7 @@ public class LinkedIdsAdapter extends UserAttributesAdapter { UserIdsAdapter.USER_PACKETS_PROJECTION, LINKED_IDS_WHERE, null, null); } - public Fragment getLinkedIdFragment(Uri baseUri, + public LinkedIdViewFragment getLinkedIdFragment(Uri baseUri, int position, byte[] fingerprint) throws IOException { Cursor c = getCursor(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java index fcb9d7bb4..284e6e0c1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java @@ -79,8 +79,9 @@ public class LinkedIdViewFragment extends Fragment implements private ViewHolder mViewHolder; private View mCurrentCert; private int mLidRank; + private OnIdentityLoadedListener mIdLoadedListener; - public static Fragment newInstance(Uri dataUri, int rank, + public static LinkedIdViewFragment newInstance(Uri dataUri, int rank, boolean showCertified, byte[] fingerprint) throws IOException { LinkedIdViewFragment frag = new LinkedIdViewFragment(); @@ -149,6 +150,12 @@ public class LinkedIdViewFragment extends Fragment implements RawLinkedIdentity linkedId = LinkedIdentity.fromAttributeData(data); loadIdentity(linkedId, certStatus); + + if (mIdLoadedListener != null) { + mIdLoadedListener.onIdentityLoaded(); + mIdLoadedListener = null; + } + } catch (IOException e) { e.printStackTrace(); throw new AssertionError("reconstruction of user attribute must succeed!"); @@ -162,6 +169,14 @@ public class LinkedIdViewFragment extends Fragment implements } } + public interface OnIdentityLoadedListener { + public void onIdentityLoaded(); + } + + public void setOnIdentityLoadedListener(OnIdentityLoadedListener listener) { + mIdLoadedListener = listener; + } + private void loadIdentity(RawLinkedIdentity linkedId, int certStatus) { mLinkedId = linkedId; -- cgit v1.2.3