session-android/src/org/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton.java
2017-11-14 10:50:17 -08:00

56 lines
1.5 KiB
Java

package org.thoughtcrime.securesms.components.registration;
import android.animation.Animator;
import android.content.Context;
import android.support.design.widget.FloatingActionButton;
import android.util.AttributeSet;
import org.thoughtcrime.securesms.animation.AnimationCompleteListener;
public class PulsingFloatingActionButton extends FloatingActionButton {
private boolean pulsing;
public PulsingFloatingActionButton(Context context) {
super(context);
}
public PulsingFloatingActionButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PulsingFloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void startPulse(long periodMillis) {
if (!pulsing) {
pulsing = true;
pulse(periodMillis);
}
}
public void stopPulse() {
pulsing = false;
}
private void pulse(long periodMillis) {
if (!pulsing) return;
this.animate().scaleX(1.2f).scaleY(1.2f).setDuration(150).setListener(new AnimationCompleteListener() {
@Override
public void onAnimationEnd(Animator animation) {
clearAnimation();
animate().scaleX(1.0f).scaleY(1.0f).setDuration(150).setListener(new AnimationCompleteListener() {
@Override
public void onAnimationEnd(Animator animation) {
PulsingFloatingActionButton.this.postDelayed(() -> pulse(periodMillis), periodMillis);
}
}).start();
}
}).start();
}
}