要为FAB(Floating Action Button)和BottomAppBar创建垂直动画,可以使用Android的动画框架来实现。下面是一个示例解决方法,其中包含了相关的代码示例。
首先,在XML布局文件中定义FAB和BottomAppBar:
接下来,在Java代码中创建垂直动画:
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import androidx.appcompat.app.AppCompatActivity;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
public class MainActivity extends AppCompatActivity {
private FloatingActionButton fab;
private BottomAppBar bottomAppBar;
private boolean isFabVisible = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fab = findViewById(R.id.fab);
bottomAppBar = findViewById(R.id.bottom_app_bar);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleFabVisibility();
}
});
}
private void toggleFabVisibility() {
// 获取动画的起始和终止Y坐标
float startY = isFabVisible ? 0 : fab.getHeight();
float endY = isFabVisible ? fab.getHeight() : 0;
// 创建垂直动画
ObjectAnimator animator = ObjectAnimator.ofFloat(fab, "translationY", startY, endY);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(300);
// 添加动画监听器
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
// 在动画开始时隐藏FAB和BottomAppBar
if (isFabVisible) {
fab.hide();
bottomAppBar.setVisibility(View.GONE);
}
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
// 在动画结束时显示FAB和BottomAppBar
if (!isFabVisible) {
fab.show();
bottomAppBar.setVisibility(View.VISIBLE);
}
isFabVisible = !isFabVisible;
}
});
// 启动动画
animator.start();
}
}
在上面的示例中,我们定义了一个toggleFabVisibility()方法,用于切换FAB的可见性。在该方法中,我们使用ObjectAnimator创建一个垂直动画,并使用translationY属性来控制FAB的垂直位移。我们还添加了一个动画监听器,以在动画开始和结束时隐藏或显示FAB和BottomAppBar。
注意:在使用上述代码之前,请确保已添加所需的依赖项,包括Material Components库和CoordinatorLayout库。