diff --git a/app/src/main/java/com/afollestad/nocknock/ui/AddSiteActivity.java b/app/src/main/java/com/afollestad/nocknock/ui/AddSiteActivity.java index 9b844b6..8bce90b 100644 --- a/app/src/main/java/com/afollestad/nocknock/ui/AddSiteActivity.java +++ b/app/src/main/java/com/afollestad/nocknock/ui/AddSiteActivity.java @@ -26,12 +26,12 @@ import com.afollestad.nocknock.api.ServerStatus; public class AddSiteActivity extends AppCompatActivity implements View.OnClickListener { private View rootLayout; - private Toolbar toolbar; private EditText inputName; private EditText inputUrl; private EditText inputInterval; private Spinner spinnerInterval; + private boolean isClosing; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -44,7 +44,7 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi inputInterval = (EditText) findViewById(R.id.checkIntervalInput); spinnerInterval = (Spinner) findViewById(R.id.checkIntervalSpinner); - toolbar = (Toolbar) findViewById(R.id.toolbar); + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setNavigationOnClickListener(view -> { closeFromNavWithReveal(); }); @@ -70,7 +70,14 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi findViewById(R.id.doneBtn).setOnClickListener(this); } + @Override + public void onBackPressed() { + closeFromCenterWithReveal(); + } + private void closeFromNavWithReveal() { + if (isClosing) return; + isClosing = true; final int offset = (int) getResources().getDimension(R.dimen.content_inset); final int cx = rootLayout.getMeasuredWidth(); final int cy = rootLayout.getMeasuredHeight(); @@ -83,6 +90,30 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); + rootLayout.setVisibility(View.INVISIBLE); + finish(); + overridePendingTransition(0, 0); + } + }); + + circularReveal.start(); + } + + private void closeFromCenterWithReveal() { + if (isClosing) return; + isClosing = true; + final int cx = rootLayout.getMeasuredWidth() / 2; + final int cy = rootLayout.getMeasuredHeight() / 2; + float initialRadius = Math.max(cx, cy); + + final Animator circularReveal = ViewAnimationUtils.createCircularReveal(rootLayout, cx, cy, initialRadius, 0); + circularReveal.setDuration(300); + circularReveal.setInterpolator(new AccelerateInterpolator()); + circularReveal.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + rootLayout.setVisibility(View.INVISIBLE); finish(); overridePendingTransition(0, 0); } @@ -94,23 +125,21 @@ public class AddSiteActivity extends AppCompatActivity implements View.OnClickLi private void circularRevealActivity() { final int cx = rootLayout.getMeasuredWidth() / 2; final int cy = rootLayout.getMeasuredHeight() / 2; - final int animDuration = 300; final float finalRadius = Math.max(cx, cy); final Animator circularReveal = ViewAnimationUtils.createCircularReveal(rootLayout, cx, cy, 0, finalRadius); - circularReveal.setDuration(animDuration); + circularReveal.setDuration(300); circularReveal.setInterpolator(new DecelerateInterpolator()); - toolbar.setAlpha(0f); rootLayout.setVisibility(View.VISIBLE); - - toolbar.animate().alpha(1f).setDuration(animDuration).start(); circularReveal.start(); } // Done button @Override public void onClick(View view) { + isClosing = true; + ServerModel model = new ServerModel(); model.name = inputName.getText().toString().trim(); model.url = inputUrl.getText().toString().trim(); diff --git a/app/src/main/res/anim/fade_out.xml b/app/src/main/res/anim/fade_out.xml index 4ef8fd1..900d3cc 100644 --- a/app/src/main/res/anim/fade_out.xml +++ b/app/src/main/res/anim/fade_out.xml @@ -3,7 +3,7 @@ android:fillAfter="true"> diff --git a/app/src/main/res/layout/activity_addsite.xml b/app/src/main/res/layout/activity_addsite.xml index ae5b544..b790726 100644 --- a/app/src/main/res/layout/activity_addsite.xml +++ b/app/src/main/res/layout/activity_addsite.xml @@ -12,8 +12,6 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?colorPrimary" - android:elevation="@dimen/fab_elevation" app:navigationIcon="@drawable/ic_action_close" app:title="@string/add_site" app:titleTextColor="?android:textColorPrimary" />