mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-03-28 06:22:16 +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);
|
||
|
}
|
||
|
}
|