Merge branch 'transition-v21' into 'master'

Shared element transition for app list item v21 and above

Shared element transitions for API level v21 and above  
![JJhZVJh](/uploads/05ff326b69176e2e793cd17dca63637f/JJhZVJh.gif)

See merge request !251
This commit is contained in:
Hans-Christoph Steiner 2016-04-06 09:00:54 +00:00
commit 907507d27d
5 changed files with 307 additions and 1 deletions

View File

@ -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<View, String> 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);
}
}
}

View File

@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2015 Nico Alt, nicoalt@posteo.org
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/icon_and_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:orientation="horizontal"
android:padding="2dp">
<ImageView
android:id="@+id/icon"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_gravity="center_vertical"
android:contentDescription="@string/app_icon"
android:scaleType="fitCenter"
tools:src="@drawable/ic_launcher"
android:transitionName="@string/transition_app_item_icon" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:baselineAligned="false"
android:orientation="vertical"
android:layout_toRightOf="@id/icon"
android:layout_toEndOf="@id/icon"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:paddingRight="16dp"
android:paddingEnd="16dp"
>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:gravity="start"
android:singleLine="true"
android:textAlignment="viewStart"
android:textSize="17sp"
android:textStyle="bold"
tools:text="F-Droid" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="3dp"
android:layout_weight="1"
android:baselineAligned="false"
android:orientation="vertical">
<TextView
android:id="@+id/author"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:gravity="start"
android:singleLine="true"
android:textAlignment="viewStart"
android:textSize="13sp"
android:visibility="gone"
tools:text="F-Droid Authors" />
<TextView
android:id="@+id/current_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:gravity="start"
android:singleLine="true"
android:textAlignment="viewStart"
android:textSize="13sp"
tools:text="1.24" />
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:gravity="start"
android:singleLine="true"
android:textAlignment="viewStart"
android:textSize="13sp"
tools:text="Version 1.23 installed" />
</LinearLayout>
<Button
android:id="@+id/btn_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_weight="0"
android:baselineAligned="false"
tools:text="Open" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/icon"
android:gravity="center">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal" />
<TextView
android:id="@+id/progress_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_below="@id/progress_bar"
android:visibility="gone"
android:textSize="12sp"/>
<TextView
android:id="@+id/progress_percentage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@id/progress_bar"
android:visibility="gone"
android:textSize="12sp"/>
</RelativeLayout>
<ImageButton
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_weight="0"
android:visibility="gone"
android:src="@drawable/ic_clear"
android:background="@null"/>
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="?attr/listPreferredItemHeight"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingStart="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:paddingEnd="?attr/listPreferredItemPaddingRight"
android:baselineAligned="false"
>
<ImageView
android:id="@+id/icon"
android:contentDescription="@string/app_icon"
android:layout_width="48dip"
android:layout_height="48dip"
android:layout_gravity="center_vertical"
android:scaleType="fitCenter"
tools:src="@drawable/ic_launcher"
android:transitionName="@string/transition_app_item_icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:baselineAligned="false">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false">
<TextView android:id="@+id/name"
android:textSize="16sp"
android:singleLine="true"
android:ellipsize="end"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingStart="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:paddingEnd="?attr/listPreferredItemPaddingRight"
android:layout_gravity="center_vertical"
android:gravity="start"
android:textAlignment="viewStart"
tools:text="F-Droid" />
<TextView android:id="@+id/status"
android:textSize="14sp"
android:singleLine="true"
android:ellipsize="end"
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textAlignment="viewEnd"
tools:text="Installed" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false">
<TextView android:id="@+id/summary"
android:textSize="14sp"
android:textColor="?android:attr/textColorSecondary"
android:singleLine="true"
android:ellipsize="end"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingStart="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:paddingEnd="?attr/listPreferredItemPaddingRight"
android:gravity="start"
android:textAlignment="viewStart"
tools:text="Application manager" />
<TextView android:id="@+id/license"
android:textSize="14sp"
android:textColor="?android:attr/textColorSecondary"
android:singleLine="true"
android:ellipsize="end"
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="end"
android:textAlignment="viewEnd"
tools:text="GPLv3+" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<transitionManager xmlns:android="http://schemas.android.com/apk/res/android">
</transitionManager>

View File

@ -7,6 +7,8 @@
<string name="source_link">https://gitlab.com/fdroid/fdroidclient</string>
<string name="team_email">team@f-droid.org</string>
<string name="license_gplv3_later">GNU General Public License version\u00A03 or later</string>
<string name="transition_app_item_icon">transition_app_item_icon</string>
<string name="https">https://</string>
<string name="upgrade_from_to">%1$s → %2$s</string>