diff --git a/briar-android/res/layout/contact_avatar_status.xml b/briar-android/res/layout/contact_avatar_status.xml index 2ceb5954726ca3654f09ba326b9ac8b1978fc0f9..5c3415c9119ca02556e97285d748f9d3293975ad 100644 --- a/briar-android/res/layout/contact_avatar_status.xml +++ b/briar-android/res/layout/contact_avatar_status.xml @@ -11,7 +11,6 @@ android:id="@+id/contactAvatar" android:layout_width="30dp" android:layout_height="30dp" - android:transitionName="avatar" app:civ_border_color="@color/action_bar_text" app:civ_border_width="@dimen/avatar_border_width" tools:src="@drawable/ic_launcher"/> @@ -22,7 +21,7 @@ android:layout_height="15dp" android:layout_gravity="bottom|right" android:scaleType="fitCenter" - tools:src="@drawable/contact_online" - tools:ignore="ContentDescription"/> + tools:ignore="ContentDescription" + tools:src="@drawable/contact_online"/> </FrameLayout> \ No newline at end of file diff --git a/briar-android/res/layout/list_item_contact.xml b/briar-android/res/layout/list_item_contact.xml index 3a937d7848f834950a77b0a3aecca1f11c131df6..e50fc03a8d82564e61511be8d3b7707fa60e072d 100644 --- a/briar-android/res/layout/list_item_contact.xml +++ b/briar-android/res/layout/list_item_contact.xml @@ -10,9 +10,9 @@ <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingTop="@dimen/listitem_horizontal_margin" - android:paddingBottom="@dimen/listitem_horizontal_margin" android:background="?attr/selectableItemBackground" + android:paddingBottom="@dimen/listitem_horizontal_margin" + android:paddingTop="@dimen/listitem_horizontal_margin" > <de.hdodenhof.circleimageview.CircleImageView @@ -24,7 +24,6 @@ android:layout_centerVertical="true" android:layout_marginLeft="@dimen/listitem_horizontal_margin" android:layout_marginStart="@dimen/listitem_horizontal_margin" - android:transitionName="avatar" app:civ_border_color="@color/briar_primary" app:civ_border_width="@dimen/avatar_border_width" tools:src="@drawable/ic_launcher"/> @@ -33,13 +32,13 @@ android:id="@+id/textViews" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="vertical" android:layout_centerVertical="true" android:layout_marginLeft="@dimen/listitem_horizontal_margin" android:layout_marginStart="@dimen/listitem_horizontal_margin" + android:layout_toEndOf="@+id/avatarView" android:layout_toLeftOf="@+id/bulbView" android:layout_toRightOf="@+id/avatarView" - android:layout_toEndOf="@+id/avatarView"> + android:orientation="vertical"> <TextView android:id="@+id/nameView" diff --git a/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java index f4481726a253a1ebb4e3969a39da5bc1b71a729a..dc1628088dee0ae382ed089fa9b8c09b9671be11 100644 --- a/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java @@ -1,6 +1,7 @@ package org.briarproject.android.contact; import android.content.Context; +import android.support.v4.view.ViewCompat; import android.support.v7.util.SortedList; import android.support.v7.widget.RecyclerView; import android.view.View; @@ -11,6 +12,7 @@ import android.widget.TextView; import org.briarproject.R; import org.briarproject.api.contact.ContactId; import org.briarproject.api.identity.Author; +import org.briarproject.util.StringUtils; import java.util.List; @@ -48,6 +50,9 @@ public abstract class BaseContactListAdapter<VH extends BaseContactListAdapter.B if (listener != null) listener.onItemClick(ui.avatar, item); } }); + + ViewCompat.setTransitionName(ui.avatar, "avatar" + + StringUtils.toHexString(item.getGroupId().getBytes())); } @Override diff --git a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java index b47d5b7a0a13f7e22c0b85fa168dcb57e60cf93f..374d85d2189017429b6412a9c9b1fe338c38fca3 100644 --- a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java +++ b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java @@ -2,6 +2,7 @@ package org.briarproject.android.contact; import android.content.Context; import android.support.v4.content.ContextCompat; +import android.support.v4.view.ViewCompat; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; @@ -10,6 +11,7 @@ import android.widget.ImageView; import android.widget.TextView; import org.briarproject.R; +import org.briarproject.util.StringUtils; public class ContactListAdapter extends BaseContactListAdapter<ContactListAdapter.ContactHolder> { @@ -62,6 +64,9 @@ public class ContactListAdapter } else { ui.bulb.setImageResource(R.drawable.contact_disconnected); } + + ViewCompat.setTransitionName(ui.bulb, + "bulb" + StringUtils.toHexString(item.getGroupId().getBytes())); } protected static class ContactHolder diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java index d01e6571dfb74052cea5ebb8e797bc10515ea8a3..d70f7d439cc2dd2facbcd91f45daeb8d71605c3d 100644 --- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java +++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java @@ -1,11 +1,13 @@ package org.briarproject.android.contact; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; +import android.support.v4.util.Pair; +import android.support.v4.view.ViewCompat; import android.support.v7.widget.LinearLayoutManager; import android.view.LayoutInflater; import android.view.View; @@ -48,6 +50,7 @@ import java.util.logging.Logger; import javax.inject.Inject; +import static android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static org.briarproject.android.BriarActivity.GROUP_ID; @@ -107,16 +110,22 @@ public class ContactListFragment extends BaseFragment implements EventListener { ConversationActivity.class); i.putExtra(GROUP_ID, groupId.getBytes()); - if (Build.VERSION.SDK_INT >= 16) { - ActivityOptionsCompat options = - ActivityOptionsCompat. - makeSceneTransitionAnimation( - getActivity(), - view, "avatar"); - getActivity().startActivity(i, options.toBundle()); - } else { - startActivity(i); - } + ContactListAdapter.ContactHolder holder = + (ContactListAdapter.ContactHolder) list + .getRecyclerView() + .findViewHolderForAdapterPosition( + adapter.findItemPosition(item)); + Pair<View, String> avatar = + Pair.create((View) holder.avatar, ViewCompat + .getTransitionName(holder.avatar)); + Pair<View, String> bulb = + Pair.create((View) holder.bulb, ViewCompat + .getTransitionName(holder.bulb)); + ActivityOptionsCompat options = + makeSceneTransitionAnimation(getActivity(), + avatar, bulb); + ActivityCompat.startActivity(getActivity(), i, + options.toBundle()); } }; diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java index 676273700d43043aba098a8ecb0d8075281075c3..2c8e3b5df4eda5a4c2d4d453f7da53b8904ae3be 100644 --- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java +++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.content.ContextCompat; +import android.support.v4.view.ViewCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; @@ -156,6 +157,10 @@ public class ConversationActivity extends BriarActivity ab.setDisplayShowTitleEnabled(false); } + String hexGroupId = StringUtils.toHexString(b); + ViewCompat.setTransitionName(toolbarAvatar, "avatar" + hexGroupId); + ViewCompat.setTransitionName(toolbarStatus, "bulb" + hexGroupId); + adapter = new ConversationAdapter(this, this); list = (BriarRecyclerView) findViewById(R.id.conversationView); list.setLayoutManager(new LinearLayoutManager(this)); @@ -207,7 +212,7 @@ public class ConversationActivity extends BriarActivity // Handle presses on the action bar items switch (item.getItemId()) { case android.R.id.home: - supportFinishAfterTransition(); + onBackPressed(); return true; case R.id.action_introduction: if (contactId == null) return false; @@ -227,6 +232,13 @@ public class ConversationActivity extends BriarActivity } } + @Override + public void onBackPressed() { + // FIXME disabled exit transition, because it doesn't work for some reason + //supportFinishAfterTransition(); + finish(); + } + private void loadData() { runOnDbThread(new Runnable() { @Override diff --git a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java index 2c61d475d0316e11bb8791ea5cb59b3c8d7e524d..dfc3c4c4f1d8f809abb2d835afb63868447a589e 100644 --- a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java +++ b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java @@ -131,4 +131,9 @@ public class BriarRecyclerView extends FrameLayout { if (recyclerView == null) initViews(); recyclerView.scrollToPosition(position); } + + public RecyclerView getRecyclerView() { + return this.recyclerView; + } + }