gpt4 book ai didi

android - float 操作按钮动画

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:55 24 4
gpt4 key购买 nike

当 fab 出现时,它使用动画中的比例动画,当它隐藏时,它使用横向扩展动画。

所以,它是一个缩放动画。

如何制作这个动画?

最佳答案

根据@Zielony 的回答,我把它放在了我想要的地方。

下面是正确应用效果的代码。

scale_fab_in.xml

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXScale="0"
android:fromYScale="0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1"
android:interpolator="@android:interpolator/overshoot"/>

scale_fab_out.xml

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="400"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0"
android:toYScale="0"
android:interpolator="@android:interpolator/overshoot"/>

编辑 2/16/2016 - 另一种方法:

将下面的代码放入您的 FAB 代码或任何其他 View 中。

//global
private static final int FAB_ANIM_DURATION = 200;

public void hide() {
// Only use scale animation if FAB is visible
if (getVisibility() == View.VISIBLE) {
// Pivots indicate where the animation begins from
float pivotX = getPivotX() + getTranslationX();
float pivotY = getPivotY() + getTranslationY();

// Animate FAB shrinking
ScaleAnimation anim = new ScaleAnimation(1, 0, 1, 0, pivotX, pivotY);
anim.setDuration(FAB_ANIM_DURATION);
anim.setInterpolator(getInterpolator());
startAnimation(anim);
}
setVisibility(View.INVISIBLE);
}


public void show() {
show(0, 0);
}

public void show(float translationX, float translationY) {

// Set FAB's translation
setTranslation(translationX, translationY);

// Only use scale animation if FAB is hidden
if (getVisibility() != View.VISIBLE) {
// Pivots indicate where the animation begins from
float pivotX = getPivotX() + translationX;
float pivotY = getPivotY() + translationY;

ScaleAnimation anim;
// If pivots are 0, that means the FAB hasn't been drawn yet so just use the
// center of the FAB
if (pivotX == 0 || pivotY == 0) {
anim = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
} else {
anim = new ScaleAnimation(0, 1, 0, 1, pivotX, pivotY);
}

// Animate FAB expanding
anim.setDuration(FAB_ANIM_DURATION);
anim.setInterpolator(getInterpolator());
startAnimation(anim);
}
setVisibility(View.VISIBLE);
}

private void setTranslation(float translationX, float translationY) {
if (Build.VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1) {
animate().setInterpolator(getInterpolator()).setDuration(FAB_ANIM_DURATION)
.translationX(translationX).translationY(translationY);
}
}

private Interpolator getInterpolator() {
return AnimationUtils.loadInterpolator(getContext(), R.interpolator.fab_interpolator);
}


<item name="fab_interpolator" type="interpolator">@android:interpolator/decelerate_cubic</item>

关于android - float 操作按钮动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com