package com.github.takahirom.materialelement.pattern.transition; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Intent; import android.graphics.ColorMatrixColorFilter; import android.os.Bundle; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v4.app.ActivityCompat; import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.view.ViewCompat; import android.support.v4.view.animation.FastOutSlowInInterpolator; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.transition.Transition; import android.view.View; import android.widget.ImageView; import com.github.takahirom.materialelement.MaterialElementActivity; import com.github.takahirom.materialelement.R; import com.github.takahirom.materialelement.animation.ObservableColorMatrix; import com.github.takahirom.materialelement.animation.OnetimeViewTreeObserver; import com.github.takahirom.materialelement.animation.transition.TransitionUtils; import com.github.takahirom.materialelement.main.ImplementationItem; import com.github.takahirom.materialelement.util.ThemeUtil; public class NavigationalTransitionActivity extends MaterialElementActivity { public final static String RESULT_EXTRA_ITEM_ID = "RESULT_EXTRA_ITEM_ID"; public static final String INTENT_EXTRA_ITEM = "item"; private ImplementationItem item; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_navigational_transition); item = getIntent().getParcelableExtra(INTENT_EXTRA_ITEM); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); setupViews(); } public void setupViews() { final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); TransitionUtils.setSharedElementEnterTransitionEndListenerCompat(getWindow(), new TransitionUtils.OnSharedElementEnterTransitionEndListener() { @Override public void onEnd(Transition transition) { collapsingToolbarLayout.setTitleEnabled(true); collapsingToolbarLayout.setTitle(item.title); // FIXME: recycler view breaks AppbarLayout setupRecyclerView(); } }); final ImageView imageView = (ImageView) findViewById(R.id.detail_image); // collapsingToolbarLayout.setExpandedTitleColor(ContextCompat.getColor(DurationAndEasingActivity.this, android.R.color.white)); imageView.setImageResource(item.imageRes); } private void setupRecyclerView() { RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); recyclerView.setVisibility(View.VISIBLE); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new RecyclerViewAdapter(new RecyclerViewAdapter.OnItemClickListener() { @Override public void onClick(int position, View view) { Intent intent = new Intent(NavigationalTransitionActivity.this, ChildActivity.class); String elementName = getString(R.string.transition_name_navigational_transition); ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(NavigationalTransitionActivity.this, view, elementName); startActivity(intent, activityOptionsCompat.toBundle()); } })); recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); } @Override public void onBackPressed() { setResultAndFinish(); } void setResultAndFinish() { final Intent resultData = new Intent(); resultData.putExtra(RESULT_EXTRA_ITEM_ID, item.itemId); setResult(RESULT_OK, resultData); ActivityCompat.finishAfterTransition(this); } }