From cdd08489274588b20fd5915b6c9decbef4bd0468 Mon Sep 17 00:00:00 2001 From: Paresh Chouhan Date: Tue, 5 Apr 2016 03:30:44 +0530 Subject: [PATCH] Shared element transition for app list item v21 and above --- .../views/fragments/AppListFragment.java | 16 +- .../res/layout-v21/app_details_header.xml | 179 ++++++++++++++++++ app/src/main/res/layout-v21/applistitem.xml | 107 +++++++++++ .../transition-v21/app_list_item_click.xml | 4 + app/src/main/res/values/donottranslate.xml | 2 + 5 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/layout-v21/app_details_header.xml create mode 100644 app/src/main/res/layout-v21/applistitem.xml create mode 100644 app/src/main/res/transition-v21/app_list_item_click.xml diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/AppListFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/AppListFragment.java index 1a4aac236..09f5ac069 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/AppListFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/AppListFragment.java @@ -5,12 +5,15 @@ import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; +import android.support.v4.util.Pair; import android.text.TextUtils; import android.view.View; import android.widget.AdapterView; @@ -18,6 +21,7 @@ import android.widget.TextView; import org.fdroid.fdroid.AppDetails; import org.fdroid.fdroid.Preferences; +import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.compat.PreferencesCompat; @@ -159,7 +163,17 @@ public abstract class AppListFragment extends ListFragment implements Intent intent = getAppDetailsIntent(); intent.putExtra(AppDetails.EXTRA_APPID, app.packageName); intent.putExtra(AppDetails.EXTRA_FROM, getFromTitle()); - startActivityForResult(intent, REQUEST_APPDETAILS); + if (Build.VERSION.SDK_INT >= 21) { + Pair iconTransitionPair = Pair.create(view.findViewById(R.id.icon), + getString(R.string.transition_app_item_icon)); + Bundle bundle = ActivityOptionsCompat + .makeSceneTransitionAnimation(getActivity(), + iconTransitionPair) + .toBundle(); + startActivityForResult(intent, REQUEST_APPDETAILS, bundle); + } else { + startActivityForResult(intent, REQUEST_APPDETAILS); + } } } diff --git a/app/src/main/res/layout-v21/app_details_header.xml b/app/src/main/res/layout-v21/app_details_header.xml new file mode 100644 index 000000000..447d9dcf1 --- /dev/null +++ b/app/src/main/res/layout-v21/app_details_header.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + +