【发布时间】:2016-02-06 18:01:43
【问题描述】:
我想为我的collapsingToolbarLayout 创建一个自定义 contentScrim。我的 collapsingToolbarLayout 里面有一个imageview。当它滚动时,理论上图像视图应该会淡出,而我的稀松布颜色应该会淡入。
我们都知道我们可以制作这样的稀松布:
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="?attr/colorPrimary"
android:background="@color/white"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
android:fitsSystemWindows="true"
app:expandedTitleTextAppearance="@color/transparent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
>
然而,android 默认 scrim 似乎只有在您向上滚动 3/4 屏幕时才开始工作。在此之前,imageview 仍然完全显示。此外,当您到达屏幕的 3/4 时,稀松布启动并自动将 collapsingtoolbarlayout 的颜色更改为您的稀松布颜色:
当您向上滚动 3/4 并且在我们到达 toolbar 之前,它不会完全填满屏幕,我希望它逐渐消失,直到您向上滚动到 toolbar。
如果您想查看我想要创建的效果的示例,请查看 Facebook 应用程序。这是 collapsingToolbarLayout 完全展开时的 Facebook 应用:
当您向下滚动到大约 3/4 时,collapsingToolbarLayout 具有褪色的蓝色,并且蓝色没有完全饱和:
所以我在collapsingToolbarLayout 中创建了以下内容:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/frame_picture">
<com.customshapes.SquareImageView
android:id="@+id/backdrop"
android:contentDescription="@string/photo"
android:transitionName="@string/transition"
android:layout_width="match_parent"
android:layout_height="240dp"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
/>
<com.customshapes.SquareImageView
android:id="@+id/fading_backdrop"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:layout_height="240dp"
android:alpha="0"
android:fitsSystemWindows="true"
/>
</FrameLayout>
框架布局由背景imageview 组成,它包含显示在我的 collapsingToolbarLayout 中的图片,并且在它前面是一个图像视图,它只包含 'scrimColor' ?attr/colorPrimary,alpha 为 0,以便背景imageview 会发光。
然后我实现了appBarLayout的onOffsetChangedListener:
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
fading_backdrop.setImageAlpha(verticalOffset);
fading_backdrop.invalidate();
}
我们正在设置 fading_backdrop 的 alpha 值,以便在我们向上滚动时它会出现。我正在尝试人工制作稀松布。
但是,这似乎无法正常工作。当我运行这段代码时,完全没有褪色。有谁知道我做错了什么?
【问题讨论】:
标签: android android-collapsingtoolbarlayout android-appbarlayout