package de.geeksfactory.opacclient.frontend; import android.os.Build; import android.os.Bundle; import android.transition.Fade; import android.transition.TransitionSet; import de.geeksfactory.opacclient.R; import de.geeksfactory.opacclient.ui.CircularRevealTransition; import de.geeksfactory.opacclient.ui.VerticalExplodeTransition; /** * An activity representing a single SearchResult detail screen. This activity is only used on * handset devices. On tablet-size devices, item details are presented side-by-side with a list of * items in a {@link SearchResultListActivity}. * <p/> * This activity is mostly just a 'shell' activity containing nothing more than a {@link * SearchResultDetailFragment}. */ public class SearchResultDetailActivity extends OpacActivity implements SearchResultDetailFragment.Callbacks { public static final String ARG_TOUCH_POSITION_X = "touchX"; public static final String ARG_TOUCH_POSITION_Y = "touchY"; SearchResultDetailFragment detailFragment; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // savedInstanceState is non-null when there is fragment state // saved from previous configurations of this activity // (e.g. when rotating the screen from portrait to landscape). // In this case, the fragment will automatically be re-added // to its container so we don't need to manually add it. // For more information, see the Fragments API guide at: // // http://developer.android.com/guide/components/fragments.html // if (savedInstanceState == null) { // Create the detail fragment and add it to the activity // using a fragment transaction. Bundle arguments = new Bundle(); arguments.putInt( SearchResultDetailFragment.ARG_ITEM_NR, getIntent().getIntExtra( SearchResultDetailFragment.ARG_ITEM_NR, 0)); if (getIntent().hasExtra( SearchResultDetailFragment.ARG_ITEM_ID)) { arguments.putString( SearchResultDetailFragment.ARG_ITEM_ID, getIntent().getStringExtra( SearchResultDetailFragment.ARG_ITEM_ID)); } if (getIntent().hasExtra(SearchResultDetailFragment.ARG_ITEM_COVER_BITMAP)) { arguments.putParcelable(SearchResultDetailFragment.ARG_ITEM_COVER_BITMAP, getIntent().getParcelableExtra( SearchResultDetailFragment.ARG_ITEM_COVER_BITMAP)); } if (getIntent().hasExtra(SearchResultDetailFragment.ARG_ITEM_MEDIATYPE)) { arguments.putString(SearchResultDetailFragment.ARG_ITEM_MEDIATYPE, getIntent().getStringExtra( SearchResultDetailFragment.ARG_ITEM_MEDIATYPE)); } detailFragment = new SearchResultDetailFragment(); detailFragment.setArguments(arguments); getSupportFragmentManager().beginTransaction() .add(R.id.searchresult_detail_container, detailFragment) .commit(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int touchX = getIntent().getIntExtra(ARG_TOUCH_POSITION_X, 0); int touchY = getIntent().getIntExtra(ARG_TOUCH_POSITION_Y, 0); TransitionSet enterTransition = new TransitionSet(); enterTransition.addTransition(new CircularRevealTransition() .setStartPosition(this, touchX, touchY) .addTarget(R.id.gradient_top) .addTarget(R.id.gradient_bottom)); enterTransition.addTransition( new VerticalExplodeTransition() .excludeTarget(R.id.gradient_bottom, true) .excludeTarget(R.id.gradient_top, true)); enterTransition.excludeTarget(android.R.id.statusBarBackground, true); getWindow().setEnterTransition(enterTransition); TransitionSet exitTransition = new TransitionSet(); exitTransition.addTransition( new Fade().addTarget(R.id.gradient_bottom).addTarget(R.id.gradient_top)); exitTransition.addTransition(new VerticalExplodeTransition() .excludeTarget(R.id.gradient_bottom, true) .excludeTarget(R.id.gradient_top, true)); exitTransition.excludeTarget(android.R.id.statusBarBackground, true); getWindow().setReturnTransition(exitTransition); getWindow().setSharedElementsUseOverlay(false); } } } @Override public void removeFragment() { supportFinishAfterTransition(); } @Override protected int getContentView() { return R.layout.activity_searchresult_detail; } }