Merge branch '686-crash-when-transitioning-out-of-reblogactivity' into 'master'

Limit scene transition animations to API 23 and above

to work-around [android bug #224270](https://code.google.com/p/android/issues/detail?id=224270).
This is only necessary if the transitioning view might not be available anymore when the exit transition is made.

Closes #686

See merge request !361
This commit is contained in:
akwizgran
2016-10-26 10:11:32 +00:00
2 changed files with 35 additions and 21 deletions

View File

@@ -3,6 +3,7 @@ package org.briarproject.android.blogs;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
@@ -134,11 +135,17 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
i.putExtra(GROUP_ID, item.getGroupId().getBytes()); i.putExtra(GROUP_ID, item.getGroupId().getBytes());
i.putExtra(POST_ID, item.getId().getBytes()); i.putExtra(POST_ID, item.getId().getBytes());
ActivityOptionsCompat options = // work-around for android bug #224270
makeSceneTransitionAnimation((Activity) ctx, layout, if (Build.VERSION.SDK_INT >= 23) {
getTransitionName(item.getId())); ActivityOptionsCompat options =
ActivityCompat makeSceneTransitionAnimation((Activity) ctx, layout,
.startActivity((Activity) ctx, i, options.toBundle()); getTransitionName(item.getId()));
ActivityCompat
.startActivity((Activity) ctx, i,
options.toBundle());
} else {
ctx.startActivity(i);
}
} }
}); });

View File

@@ -1,6 +1,7 @@
package org.briarproject.android.contact; package org.briarproject.android.contact;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityCompat;
@@ -119,22 +120,28 @@ public class ContactListFragment extends BaseFragment implements EventListener {
ConversationActivity.class); ConversationActivity.class);
i.putExtra(GROUP_ID, groupId.getBytes()); i.putExtra(GROUP_ID, groupId.getBytes());
ContactListAdapter.ContactHolder holder = // work-around for android bug #224270
(ContactListAdapter.ContactHolder) list if (Build.VERSION.SDK_INT >= 23) {
.getRecyclerView() ContactListAdapter.ContactHolder holder =
.findViewHolderForAdapterPosition( (ContactListAdapter.ContactHolder) list
adapter.findItemPosition(item)); .getRecyclerView()
Pair<View, String> avatar = .findViewHolderForAdapterPosition(
Pair.create((View) holder.avatar, ViewCompat adapter.findItemPosition(
.getTransitionName(holder.avatar)); item));
Pair<View, String> bulb = Pair<View, String> avatar =
Pair.create((View) holder.bulb, ViewCompat Pair.create((View) holder.avatar, ViewCompat
.getTransitionName(holder.bulb)); .getTransitionName(holder.avatar));
ActivityOptionsCompat options = Pair<View, String> bulb =
makeSceneTransitionAnimation(getActivity(), Pair.create((View) holder.bulb, ViewCompat.
avatar, bulb); getTransitionName(holder.bulb));
ActivityCompat.startActivity(getActivity(), i, ActivityOptionsCompat options =
options.toBundle()); makeSceneTransitionAnimation(getActivity(),
avatar, bulb);
ActivityCompat.startActivity(getActivity(), i,
options.toBundle());
} else {
getActivity().startActivity(i);
}
} }
}; };