mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-03-25 18:20:56 +00:00
58 lines
2.0 KiB
Java
58 lines
2.0 KiB
Java
package com.topjohnwu.magisk.utils;
|
|
|
|
import android.view.View;
|
|
import android.view.animation.Animation;
|
|
import android.view.animation.Transformation;
|
|
import android.widget.LinearLayout;
|
|
|
|
public class AnimationHelper {
|
|
public static void expand(final View v) {
|
|
v.measure(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
|
final int targetHeight = v.getMeasuredHeight();
|
|
|
|
v.getLayoutParams().height = 0;
|
|
v.setVisibility(View.VISIBLE);
|
|
Animation a = new Animation() {
|
|
@Override
|
|
protected void applyTransformation(float interpolatedTime, Transformation t) {
|
|
v.getLayoutParams().height = interpolatedTime == 1
|
|
? LinearLayout.LayoutParams.WRAP_CONTENT
|
|
: (int) (targetHeight * interpolatedTime);
|
|
v.requestLayout();
|
|
}
|
|
|
|
@Override
|
|
public boolean willChangeBounds() {
|
|
return true;
|
|
}
|
|
};
|
|
|
|
// 1dp/ms
|
|
a.setDuration((int) (targetHeight / v.getContext().getResources().getDisplayMetrics().density));
|
|
v.startAnimation(a);
|
|
}
|
|
|
|
public static void collapse(final View v) {
|
|
final int initialHeight = v.getMeasuredHeight();
|
|
|
|
Animation a = new Animation() {
|
|
@Override
|
|
protected void applyTransformation(float interpolatedTime, Transformation t) {
|
|
if (interpolatedTime == 1) {
|
|
v.setVisibility(View.GONE);
|
|
} else {
|
|
v.getLayoutParams().height = initialHeight - (int) (initialHeight * interpolatedTime);
|
|
v.requestLayout();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean willChangeBounds() {
|
|
return true;
|
|
}
|
|
};
|
|
// 1dp/ms
|
|
a.setDuration((int) (initialHeight / v.getContext().getResources().getDisplayMetrics().density));
|
|
v.startAnimation(a);
|
|
}
|
|
} |