package com.yokmama.learn10.chapter07.lesson34.ui;
import com.yokmama.learn10.chapter07.lesson34.R;
import com.yokmama.learn10.chapter07.lesson34.utils.ViewUtils;
import android.animation.Animator;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.TextView;
/**
* Created by kayo on 15/04/15.
*/
public class TransitionsAfterActivity extends Activity {
public static final String EXTRA_COLOR_PRIMARY_ID = "extra.COLOR_ACCENT_ID";
public static final String EXTRA_COLOR_PRIMARY_DARK_ID = "extra.COLOR_PRIMARY_DARK_ID";
public static final String EXTRA_BACKGROUND_ID = "extra.BACKGROUND_ID";
private Toolbar mToolbar;
private Button mFab;
private TextView mToolbarTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transitions_after);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mFab = (Button) findViewById(R.id.action);
mToolbarTitle = (TextView) findViewById(R.id.toolbar_title);
// Toolbar の設定
mToolbarTitle.setText(getTitle());
mToolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
setupColors();
doRevealEffect();
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setupColors() {
// 色設定
mToolbar.setBackgroundColor(getResources().getColor(getIntent().getIntExtra(EXTRA_COLOR_PRIMARY_ID, 0)));
getWindow().setStatusBarColor(getResources().getColor(getIntent().getIntExtra(EXTRA_COLOR_PRIMARY_DARK_ID, 0)));
mFab.setBackgroundResource(getIntent().getIntExtra(EXTRA_BACKGROUND_ID, 0));
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void doRevealEffect() {
// RevealEffectは、ビューのサイズが計算されたタイミング以降でしか呼び出せない
// そのため、ビューが計算されるまで待つ
ViewUtils.callOnLayout(mToolbar, new ViewUtils.OnLayoutCallback<Toolbar>() {
@Override
public void onLayout(Toolbar view) {
// Reveal Effect を実施
int centerX = view.getWidth() / 2;
int centerY = view.getHeight() / 2;
float startRadius = 0;
float endRadius = (float) Math.hypot(centerX, centerY);
Animator animator = ViewAnimationUtils.createCircularReveal(
view,
centerX, centerY,
startRadius,
endRadius);
// 緩急の指定
Interpolator interpolator = AnimationUtils.loadInterpolator(getApplicationContext(),
android.R.interpolator.accelerate_cubic);
animator.setInterpolator(interpolator);
// アニメーション開始
animator.start();
}
});
}
}