Skip to content

Instantly share code, notes, and snippets.

View andremion's full-sized avatar
:octocat:
Set your status

André Mion andremion

:octocat:
Set your status
View GitHub Profile
@andremion
andremion / Collection.ofType.kt
Last active August 20, 2018 15:02
Extension function to filter and map items of a Collection
inline fun <reified T> Collection<*>.ofType(): Collection<T> = filter { it is T }.map { it as T }
getActivity().getWindow().getSharedElementExitTransition().addListener(new TransitionCallback() {
@Override
public void onTransitionEnd(Transition transition) {
removeCallback();
}
private void removeCallback() {
if (getActivity() != null) {
getActivity().getWindow().getSharedElementExitTransition().removeListener(this);
getActivity().setExitSharedElementCallback((SharedElementCallback) null);
}
final MediaSharedElementCallback sharedElementCallback = new MediaSharedElementCallback();
getActivity().setExitSharedElementCallback(sharedElementCallback);
getActivity().supportPostponeEnterTransition();
mRecyclerView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
mRecyclerView.getViewTreeObserver().removeOnPreDrawListener(this);
RecyclerView.ViewHolder holder = mRecyclerView.findViewHolderForAdapterPosition(position);
if (holder instanceof GalleryAdapter.MediaViewHolder) {
GalleryAdapter.MediaViewHolder mediaViewHolder = (GalleryAdapter.MediaViewHolder) holder;
MediaSharedElementCallback sharedElementCallback = new MediaSharedElementCallback();
setEnterSharedElementCallback(sharedElementCallback);
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
if (!mSharedElementViews.isEmpty()) {
removeObsoleteElements(names, sharedElements, mapObsoleteElements(names));
for (View sharedElementView : mSharedElementViews) {
String transitionName = ViewCompat.getTransitionName(sharedElementView);
names.add(transitionName);
sharedElements.put(transitionName, sharedElementView);
}
}
public void setSharedElementViews(@NonNull View… sharedElementViews) {
mSharedElementViews.clear();
mSharedElementViews.addAll(Arrays.asList(sharedElementViews));
}
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements)
@Override
public void finishAfterTransition() {
setResult();
super.finishAfterTransition();
}
private void setResult() {
int position = mViewPager.getCurrentItem();
Intent data = new Intent();
data.putExtra(EXTRA_POSITION, position);
public void onActivityReenter(int resultCode, Intent data) {
final int position = PreviewActivity.getPosition(resultCode, data);
if (position != RecyclerView.NO_POSITION) {
mRecyclerView.scrollToPosition(position);
}
}
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, sharedElements);
ActivityCompat.startActivityForResult(activity, intent, requestCode, options.toBundle());