mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-14 03:39:05 +01:00
78 lines
2.1 KiB
Java
78 lines
2.1 KiB
Java
package org.briarproject.android.util;
|
|
|
|
import android.animation.Animator;
|
|
import android.animation.ValueAnimator;
|
|
import android.annotation.SuppressLint;
|
|
import android.os.Build;
|
|
import android.view.ViewGroup;
|
|
|
|
import static android.view.View.GONE;
|
|
import static android.view.View.MeasureSpec.UNSPECIFIED;
|
|
import static android.view.View.VISIBLE;
|
|
|
|
public class CustomAnimations {
|
|
|
|
public static void animateHeight(ViewGroup viewGroup, boolean isExtending,
|
|
int duration) {
|
|
if (Build.VERSION.SDK_INT >= 11) {
|
|
animateHeightPostGingerbread(viewGroup, isExtending, duration);
|
|
} else {
|
|
animateHeightGingerbread(viewGroup, isExtending);
|
|
}
|
|
}
|
|
|
|
private static void animateHeightGingerbread(ViewGroup viewGroup,
|
|
boolean isExtending) {
|
|
// No animations for Gingerbread
|
|
if (isExtending) viewGroup.setVisibility(VISIBLE);
|
|
else viewGroup.setVisibility(GONE);
|
|
}
|
|
|
|
|
|
@SuppressLint("NewApi")
|
|
private static void animateHeightPostGingerbread(final ViewGroup viewGroup,
|
|
final boolean isExtending, int duration) {
|
|
ValueAnimator anim;
|
|
if (isExtending) {
|
|
viewGroup.setVisibility(VISIBLE);
|
|
viewGroup.measure(UNSPECIFIED, UNSPECIFIED);
|
|
anim = ValueAnimator.ofInt(0, viewGroup.getMeasuredHeight());
|
|
} else {
|
|
anim = ValueAnimator.ofInt(viewGroup.getHeight(), 0);
|
|
}
|
|
anim.addListener(new Animator.AnimatorListener() {
|
|
|
|
@Override
|
|
public void onAnimationStart(Animator animation) {
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationEnd(Animator animation) {
|
|
if (!isExtending) {
|
|
viewGroup.setVisibility(GONE);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationCancel(Animator animation) {
|
|
}
|
|
|
|
@Override
|
|
public void onAnimationRepeat(Animator animation) {
|
|
}
|
|
});
|
|
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
|
|
@Override
|
|
public void onAnimationUpdate(ValueAnimator valueAnimator) {
|
|
int val = (Integer) valueAnimator.getAnimatedValue();
|
|
ViewGroup.LayoutParams layoutParams =
|
|
viewGroup.getLayoutParams();
|
|
layoutParams.height = val;
|
|
viewGroup.setLayoutParams(layoutParams);
|
|
}
|
|
});
|
|
anim.setDuration(duration);
|
|
anim.start();
|
|
}
|
|
}
|