ScrollView实现标题栏渐变效果
2016-09-14 11:08
435 查看
首先,简单的思路就是在ScrollView滚动的时候 动态的去改变标题栏的透明度即可实现。
先看下效果图:
那么ScrollView有哪些滑动回调的方法呢? 只可惜,SDK只有在23的时候提供了一个setOnScrollChangeListener回调。但是SDK提供了另外一个方法可以获取到ScrollView滑动的距离:
这个方法是ScrollView父类View的方法 并且类型是protected 的,所以我们只能“曲线救国”了,即自定义ScrollView并且复写onScrollChanged 方法:
接下来看下布局文件
标题栏默认在上方是透明的。
MainActivity的代码:
这样就实现了ScrollView滑动的时候标题栏渐变的效果了。
我是源码
先看下效果图:
那么ScrollView有哪些滑动回调的方法呢? 只可惜,SDK只有在23的时候提供了一个setOnScrollChangeListener回调。但是SDK提供了另外一个方法可以获取到ScrollView滑动的距离:
/** * This is called in response to an internal scroll in this view (i.e., the * view scrolled its own contents). This is typically as a result of * {@link #scrollBy(int, int)} or {@link #scrollTo(int, int)} having been * called. * * @param l Current horizontal scroll origin. * @param t Current vertical scroll origin. * @param oldl Previous horizontal scroll origin. * @param oldt Previous vertical scroll origin. */ protected void onScrollChanged(int l, int t, int oldl, int oldt) { }
这个方法是ScrollView父类View的方法 并且类型是protected 的,所以我们只能“曲线救国”了,即自定义ScrollView并且复写onScrollChanged 方法:
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (mListener != null) { mListener.onScrollChanged(t); } } public void addOnScrollChangedListener(onScrollChangedListener listener) { mListener = listener; } public interface onScrollChangedListener { void onScrollChanged(int t); }
接下来看下布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/parent" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.ppdai.titlescrollviewdemo.MainActivity"> <com.ppdai.titlescrollviewdemo.MyScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/iv_top" android:layout_width="match_parent" android:layout_height="300dp" android:src="@mipmap/ic_launcher" android:scaleType="fitXY" /> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:text="快快快快快快快快快快快快快快快" /> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:text="快快快快快快快快快快快快快快快" /> </LinearLayout> </com.ppdai.titlescrollviewdemo.MyScrollView> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="56dp" android:background="#0000" android:gravity="center" android:text="我是标题" android:textColor="#0fff" /> </RelativeLayout>
标题栏默认在上方是透明的。
MainActivity的代码:
mParentView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ParentView.getViewTreeObserver().removeGlobalOnLayoutListener(this); mHeight = mIvTop.getHeight(); onScrollChanged(mScrollView.getScrollY()); } }); @Override public void onScrollChanged(int y) { if (y <= 0) {//未滑动 mTvTitle.setBackgroundColor(Color.argb((int) 0, 31, 100, 240)); } else if (y > 0 && y <= mHeight) { //滑动过程中 并且在mHeight之内 float scale = (float) y / mHeight; float alpha = (255 * scale); mTvTitle.setTextColor(Color.argb((int) alpha, 255, 255, 255)); mTvTitle.setBackgroundColor(Color.argb((int) alpha, 31, 100, 240)); } else {//超过mHeight mTvTitle.setBackgroundColor(Color.argb((int) 255, 31, 100, 240)); } }
这样就实现了ScrollView滑动的时候标题栏渐变的效果了。
我是源码
相关文章推荐
- android标题栏颜色渐变效果的实现(标题栏随着scrollview的滚动而变化)
- android标题栏颜色渐变效果的实现(标题栏随着scrollview的滚动而变化)
- 实现ScrollView滑动时标题栏的隐藏效果
- 自定义Scrollview--实现仿淘宝Toolbar透明度渐变效果
- 标题栏渐变效果的实现
- 标题栏渐变效果的实现
- iOS实现UINavigationBar随ScrollView偏移而渐变的效果
- Toolbar随着ScrollView滑动透明度渐变效果实现
- 标题栏渐变效果的实现
- 保存图片到本地,查看本地图片,递归实现scrollView的无限循环滚动,文字横向渐变效果,autoLayout
- Android ScrollView顶部搜索栏或者标题栏渐变效果
- ScrollView滑动实现标题栏透明度随之渐变
- 标题栏渐变效果的实现
- 标题栏渐变的效果实现
- scrollview实现美团商家详情的导航栏渐变效果
- Android UI设计之<十三>自定义ScrollView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
- android 仿淘宝实现标题栏滑动渐变效果,gif有点丑,凑合看吧!
- 标题栏渐变效果的实现
- Android开发基于ScrollView实现的渐变导航栏效果示例
- Android中Toolbar随着ScrollView滑动透明度渐变效果实现