之前帮朋友写了这样的一个效果:标题栏中的元素随着屏幕的滑动发生渐变的效果,有文字大小的渐变也有透明度和距离的渐变等,后面没有及时更新上来,今天补一下。效果图如下:
思路 + 原理
OK,先来说下思路,很容易就能想到图中渐变的效果是根据滑动监听一点点动态变化的,这里我们就可以监听NestedScrollView的滚动(or其他,我这里主页用的是NestedScrollView)。
原理:在FrameLayout中放一个LinearLayout,置于底部,然后设置LinearLayout距离顶部一段距离,假设marginTop是50dp,只要在监听滚动的时候动态改变这个marginTop的值就好了,这是整体LinearLayout上移的效果实现,至于文字的大小和透明度的改变,也是同样的原理,根据滚动距离做出同步修改即可。为了容易理解,我画了一张示意草图,看了即可一目了然。
OK,接下来放出xml的布局代码:
布局:
android:id="@+id/coordinator_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/sc"
android:layout_width="match_parent"
android:layout_height="match_parent">
********//省略
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="bottom"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/child_root_marginTop"
android:gravity="center_vertical"
android:minHeight="50dp"
android:paddingLeft="12dp"
android:paddingTop="5dp"
android:paddingRight="12dp"
android:paddingBottom="5dp">
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="标题"
android:textColor="#FFFFFF"
android:textSize="@dimen/text_size_30sp"
android:t