package com.github.rubensousa.transitions;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.SharedElementCallback;
import android.support.v4.content.res.TypedArrayUtils;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.transition.Transition;
import android.util.TypedValue;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import com.github.rubensousa.transitions.utils.TransitionUtils;
import java.util.List;
import java.util.Map;
public class TransitionActivity extends AppCompatActivity {
FloatingActionButton fab;
NestedScrollView nestedScrollView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transition);
fab = (FloatingActionButton) findViewById(R.id.fab);
nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
View circleView = findViewById(R.id.circleView);
Intent intent = getIntent();
circleView.setTransitionName(intent.getStringExtra("transition"));
Transition transition = getWindow().getSharedElementEnterTransition();
transition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
fab.setScaleX(0);
fab.setScaleY(0);
fab.setVisibility(View.INVISIBLE);
nestedScrollView.setAlpha(0f);
}
@Override
public void onTransitionEnd(Transition transition) {
fab.show();
nestedScrollView.setTranslationY(
TransitionUtils.dpToPixels(TransitionActivity.this, 72));
nestedScrollView.animate().alpha(1f).translationY(0)
.setInterpolator(new DecelerateInterpolator());
transition.removeListener(this);
}
@Override
public void onTransitionCancel(Transition transition) {
}
@Override
public void onTransitionPause(Transition transition) {
}
@Override
public void onTransitionResume(Transition transition) {
}
});
} else {
if (savedInstanceState == null) {
fab.setScaleX(0);
fab.setScaleY(0);
fab.setVisibility(View.INVISIBLE);
fab.postDelayed(new Runnable() {
@Override
public void run() {
fab.show();
}
}, 300);
}
}
}
@Override
public void onActivityReenter(int resultCode, Intent data) {
super.onActivityReenter(resultCode, data);
supportPostponeEnterTransition();
}
@Override
public void onBackPressed() {
fab.setVisibility(View.INVISIBLE);
nestedScrollView.animate().alpha(0)
.setInterpolator(new AccelerateInterpolator())
.translationY(TransitionUtils.dpToPixels(TransitionActivity.this, 72))
.start();
supportFinishAfterTransition();
}
}