package com.kaichunlin.transition.app;
import android.os.Bundle;
import android.support.v4.view.animation.FastOutLinearInInterpolator;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;
import com.kaichunlin.transition.ViewTransitionBuilder;
import com.kaichunlin.transition.adapter.DrawerListenerAdapter;
import com.kaichunlin.transition.internal.debug.TraceTransitionManagerListener;
import com.kaichunlin.transition.util.TransitionUtil;
import kaichunlin.transition.app.R;
public class DrawerGradientActivity extends AppCompatActivity implements View.OnClickListener {
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private DrawerListenerAdapter mDrawerListenerAdapter;
private View mGradient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer_gradient);
findViewById(R.id.interpolator_default).setOnClickListener(this);
findViewById(R.id.interpolator_linear).setOnClickListener(this);
findViewById(R.id.interpolator_accelerate).setOnClickListener(this);
findViewById(R.id.interpolator_decelerate).setOnClickListener(this);
findViewById(R.id.interpolator_fastout).setOnClickListener(this);
findViewById(R.id.interpolator_anticipate).setOnClickListener(this);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
toolbar,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close
);
//code to transit view
mDrawerListenerAdapter = new DrawerListenerAdapter(mDrawerToggle, R.id.drawerList);
mDrawerListenerAdapter.setDrawerLayout(mDrawerLayout);
mDrawerListenerAdapter.setDrawerListener(new DialogDrawerListener(this));
//debug
mDrawerListenerAdapter.addTransitionListener(new TraceTransitionManagerListener());
mGradient = findViewById(R.id.gradient);
TransitionUtil.executeOnGlobalLayout(mGradient, new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (!mDrawerListenerAdapter.isOpened(DrawerGradientActivity.this)) {
mGradient.setTranslationX(-mGradient.getWidth());
}
updateTransition(findViewById(R.id.interpolator_default));
}
});
}
@Override
public void onClick(View v) {
updateTransition(v);
}
public void updateTransition(View v) {
mDrawerListenerAdapter.removeAllTransitions();
ViewTransitionBuilder builder = ViewTransitionBuilder.transit(mGradient).translationX(-mGradient.getWidth(), 0);
switch (v.getId()) {
case R.id.interpolator_default:
break;
case R.id.interpolator_linear:
builder.interpolator(new LinearInterpolator());
break;
case R.id.interpolator_accelerate:
builder.interpolator(new AccelerateInterpolator());
break;
case R.id.interpolator_decelerate:
builder.interpolator(new DecelerateInterpolator());
break;
case R.id.interpolator_fastout:
builder.interpolator(new FastOutLinearInInterpolator());
break;
case R.id.interpolator_anticipate:
builder.interpolator(new AnticipateInterpolator());
break;
}
mDrawerListenerAdapter.addTransition(builder);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
}