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);
}
}