package com.kaichunlin.transition.app;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewTreeObserver;
import com.kaichunlin.transition.Cascade;
import com.kaichunlin.transition.TransitionConfig;
import com.kaichunlin.transition.ViewTransitionBuilder;
import com.kaichunlin.transition.animation.AnimationManager;
import com.kaichunlin.transition.util.TransitionUtil;
import kaichunlin.transition.app.R;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
findViewById(R.id.slideup_actionbar).setOnClickListener(this);
findViewById(R.id.slideup_rotate_image).setOnClickListener(this);
findViewById(R.id.gradient_actionbar).setOnClickListener(this);
findViewById(R.id.menuitem).setOnClickListener(this);
findViewById(R.id.drawer).setOnClickListener(this);
findViewById(R.id.view_pager).setOnClickListener(this);
//TODO not yet implemented
findViewById(R.id.observable).setOnClickListener(this);
findViewById(R.id.observable).setVisibility(View.GONE);
ViewTransitionBuilder.transit(findViewById(R.id.toolbar)).animator(this, R.anim.animator_set).buildAnimation().startAnimation(1000);
TransitionUtil.executeOnGlobalLayout(this, new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final AnimationManager am = new AnimationManager();
ViewTransitionBuilder builder = ViewTransitionBuilder.transit(findViewById(R.id.main_btns));
Cascade cascade = new Cascade(Cascade.STAGGERED, 0.6f);
builder.transitViewGroup(new ViewTransitionBuilder.ViewGroupTransition() {
@Override
public void transit(ViewTransitionBuilder builder, ViewTransitionBuilder.ViewGroupTransitionConfig config) {
float start = builder.getStartRange();
float end = builder.getEndRange();
float middleRange = start + builder.getRange() / 2;
builder.scale(1f, 1.15f).range(start, middleRange).buildAnimationFor(am);
builder.scale(1.15f, 1f).range(middleRange, end).buildAnimationFor(am);
}
}, cascade);
am.startAnimation(1000);
}
});
TransitionConfig.setDebug(false);
}
@Override
public void onClick(View v) {
Intent i = null;
boolean overridePendingTransition = false;
switch (v.getId()) {
case R.id.slideup_actionbar:
i = new Intent(this, SlidingUpPanelActivity.class);
break;
case R.id.slideup_rotate_image:
i = new Intent(this, SlidingUpPanelRotateActivity.class);
break;
case R.id.gradient_actionbar:
i = new Intent(this, DrawerGradientActivity.class);
break;
case R.id.menuitem:
i = new Intent(this, DrawerMenuItemActivity.class);
break;
case R.id.drawer:
i = new Intent(this, DrawerViewActivity.class);
overridePendingTransition = true;
break;
case R.id.view_pager:
i = new Intent(this, ViewPagerActivity.class);
break;
case R.id.observable:
//incomplete
break;
}
AnimationManager am = new AnimationManager();
ViewTransitionBuilder.transit(v).scale(1f, 1.2f).range(0f, 0.5f).buildAnimationFor(am);
ViewTransitionBuilder.transit(v).scale(1.2f, 1f).range(0.5f, 1f).buildAnimationFor(am);
am.startAnimation(300);
final Intent i2 = i;
final boolean overridePendingTransition2 = overridePendingTransition;
v.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(i2);
if (overridePendingTransition2) {
overridePendingTransition(0, 0);
}
}
}, 300);
}
}