package com.halzhang.android.example.meterialdesignexample;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.transition.Transition;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class TransitionActivity extends AppCompatActivity {
private static final String TAG = "TransitionActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transition);
setupWindowAnimation();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setupWindowAnimation() {
getWindow().getEnterTransition().setDuration(500);
Transition transition = getWindow().getSharedElementEnterTransition();
transition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
}
@Override
public void onTransitionEnd(Transition transition) {
Log.i(TAG, "onTransitionEnd: " + transition.toString());
transition.removeListener(this);
showReveal();
}
@Override
public void onTransitionCancel(Transition transition) {
}
@Override
public void onTransitionPause(Transition transition) {
}
@Override
public void onTransitionResume(Transition transition) {
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
hideReveal();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void showReveal() {
View view = findViewById(R.id.content);
View imageView = findViewById(R.id.robot);
RevealUtils.revealShow(getApplicationContext(), imageView.getWidth() / 2, view, android.R.color.holo_blue_light, new RevealUtils.OnRevealAnimationListener() {
@Override
public void onAnimationEnd() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.show();
}
}
@Override
public void onAnimationStart() {
}
});
}
private void hideReveal() {
View view = findViewById(R.id.content);
View imageView = findViewById(R.id.robot);
RevealUtils.revealHide(getApplicationContext(), imageView.getWidth() / 2, view, android.R.color.holo_blue_light, new RevealUtils.OnRevealAnimationListener() {
@Override
public void onAnimationEnd() {
onBackPressed();
}
@Override
public void onAnimationStart() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_transition, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}