gpt4 book ai didi

android - 隐藏操作栏/工具栏时动画内容

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:10 25 4
gpt4 key购买 nike

我使用了 Google IO 存储库中的代码: https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/BaseActivity.java

我试图在向上滚动时隐藏工具栏并且效果很好,但我的问题是当工具栏在屏幕外动画时我的主要内容保持固定。

在 R.id.toolbar_actionbar 上运行动画的代码是:

view.animate()
.translationY(-view.getBottom())
.alpha(0)
.setDuration(HEADER_HIDE_ANIM_DURATION)
.setInterpolator(new DecelerateInterpolator());

我试过将工具栏放在带有内容的线性布局中,但它没有改变任何东西。只有当我将 actionbar 设置为 visibility=gone 时,内容才会向上移动。

有谁知道我必须做什么才能使内容与工具栏的翻译动画一起动画?

问题基本上可以归结为:如何为一个 View 的位置设置动画并使其他 View 随之设置动画?

Google IO 代码似乎只是为工具栏设置动画,其余内容也随之设置动画,但我无法使其正常工作。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">


<include
android:id="@+id/toolbar_actionbar"
layout="@layout/toolbar_actionbar" />

<FrameLayout
android:id="@+id/main_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/adsContainer"
android:layout_below="@+id/toolbar_actionbar" />

<LinearLayout
android:id="@+id/adsContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000000"
android:orientation="horizontal" />
</RelativeLayout>
<!-- The navigation drawer -->

<ExpandableListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />

</android.support.v4.widget.DrawerLayout>

最佳答案

您可以使用这个小 fragment 来设置 View 高度的动画:

public void animateHeight(final View view, int from, int to, int duration) {
ValueAnimator anim = ValueAnimator.ofInt(from, to);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int val = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = val;
view.setLayoutParams(layoutParams);
}
});
anim.setDuration(duration);
anim.start();
}

调用它看起来像这样:

View view = findViewById(R.id.view);
// Wait for layout to be drawn before measuring it
view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View view, int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
view.removeOnLayoutChangeListener(this);
animateHeight(view, view.getHeight(), 0, 5000);
}
});

关于android - 隐藏操作栏/工具栏时动画内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517386/

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