自设标题栏随着布局向上滚动实现透明渐变
有些时候,安卓要向IOS一样,将安卓自己的actionbar隐藏自设一个标题栏,而且有时需求又要将这个自设的标题栏实现内容滚动后能够跟着透明渐变。我在百度搜索了一大堆废话文章后,找了一个类似的功能改造成自己需求的效果。demo实现的简陋,见谅!
首先我们看看布局,非常简单:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/ma_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:divider="@android:color/black"
android:dividerHeight="0.5dp"
android:cacheColorHint="@android:color/transparent"
android:headerDividersEnabled="false"
android:footerDividersEnabled="false"
android:listSelector="@android:color/transparent" >
</ListView>
<LinearLayout
android:id="@+id/title_view"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#E42F47"
android:orientation="horizontal" >
<TextView
android:id="@+id/tt_t1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center"
android:text="《《《"
android:textSize="18sp"
android:layout_margin="10dp"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/tt_t2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Test_Title"
android:gravity="center"
android:textSize="16sp"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
</FrameLayout>
其中,id为title_view的LinearLayout即是自设的一个标题栏,我们要实现的就是随着listview的滚动,它能够跟着透明渐变。
那么开始!首先findViewById找出标题栏和listview,然后listview去setAdapter(),重点来了,给listview实现setOnScrollListener的监听事件。我们的思路就是通过获取被监听的控件即listview的第一个item的顶点(top)所在的位置,用它所在顶点的相反值(为什么要相反值?因为获取的这个值往往是个负数,需要取反)去被标题栏控件的高度除,得出一个float的值作为透明的百分比,实时设置标题栏的透明度变化。同时要注意,只有listview第一个item在标题栏周围时才去实现透明渐变。
关键代码在此:
OnScrollListener scrolListener = new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// 判断当前最上面显示的是不是头布局
if(firstVisibleItem == 0) {
if(title != null) {
View head_child = view.getChildAt(0);
if(head_child!=null) {
int top = -head_child.getTop();
// 获取头布局的高度
int height = title.getHeight();
// 满足这个条件的时候,只有这个时候,我们才调整透明度
if (top <= height && top >= 0) {
// 获取当前位置占头布局高度的百分比
float alpha = (float)top/(float)height;
title.getBackground().setAlpha((int) (alpha * 255));
// 通知标题栏刷新显示
title.invalidate();
}
}
}
}else if(firstVisibleItem > 0) {
title.getBackground().setAlpha(255);
}else {
title.getBackground().setAlpha(0);
}
}
};
demo地址在这里:
http://download.csdn.net/detail/u014436704/9284861
自设标题栏随着布局向上滚动实现透明渐变相关推荐
- jQuery实现文字向上滚动
在一些网页中,我们会看到有一行或多行文字向上滚动,就像轮播一样.那我们如何实现它呢,现在就开始吧! 单行文字 html代码 <div id="scrollDiv"> & ...
- html 向上滚动 不间断,向上不间断滚动div+css+js模板
div+css不间断向上滚动模板 上一次给大家介绍一种div css的不间断滚动代码JS特别多(不间断滚动css代码),这次给大家介绍的是比较实用比较简单的不间断css滚动代码 DIV+CSS不间断滚 ...
- android TextView向上滚动(模仿滚动文字广告效果)
android文字向上滚动效果没有自带的控件,这就需要开发者根据算法精确按照时间和坐标来实现TextView控件的向上移动,从网上找过几个框架,基本都会有bug,于是自己写了一个自定义控件,来实现Te ...
- Android之高仿京东APP首页“京东快报”自动向上滚动的广告条
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51013562 本文出自:[顾林海的博客] ##前言 上次在京东APP上 ...
- Vue中实现文字向上滚动的动画效果
在Vue中,想要实现文字向上滚动的效果,分成两种情况: 1 无缝滚动 无缝滚动如图: 我说的无缝滚动主要是指两点: 滚动中没有停顿 从头至尾再循环播放时没有停顿 实现这种情况可以使用CSS3的动画实现 ...
- 【Duilib自定义控件】水平布局的滚动扩展布局,实现菜单的可滑动效果
为了实现如下效果: 左侧为固定菜单,右侧为可滑动菜单.当窗口足够大,菜单可全部展显示. 窗口变小时,菜单只能显示一部分.滑动到最左侧,左滑按钮灰掉 左滑右滑按钮皆可用 滑动到最右侧,右滑按钮灰掉. 需 ...
- 仿京东首页的京东快报,自动向上滚动的广告条
向上滚动的广告条 实现原理 起初看到这个效果时,第一个想法就是向上移动动画+定时器,但当我准备写时发现,滚动时上下文字都是逐渐出来的(有点像滑动的),如果用动画的话不行,如果用滑动的话,那就是List ...
- Android 改变窗口标题栏的布局
Android改变窗口标题栏的布局 第一种方式 --在XML文件里面引入配置文件作为标题. 第二种方式 --动态的代码加入进去. 第三种方式(网上的): 一. 重点 一般应用的Title都是建立应 ...
- 向上滚动tabBar隐藏向下显示
原理: 监听滚动事件并获取页面当前的滚动高度,比较滚动前后的高度,判断是向上滚动还是向下滚动.并对tabBar样式进行更改. <html> <style>html body { ...
最新文章
- PreTranslateMessage作用和用法
- gedit emacs
- 使用OpenCV检测图像中的矩形
- linux查看fifo内容,linux 有名管道(FIFO)
- Android钢琴滑动代码,android 钢琴界面实现
- 联想y470上三代cpu_AMD三代线程撕裂者首测 单核不再是问题(二)
- 类python中高级用法
- 通俗易懂!视觉slam第六部分——旋转向量,欧拉角
- 想去三亚旅游,有什么好的景点推荐吗?
- php yii框架使用MongoDb
- android httpget 参数,如何在Android中向HTTP GET请求添加参数?
- 烟台大学举办首届ACM程序设计大赛
- 国庆高质量出行,可视化开启智慧旅游
- 330分能进复试的计算机相关专业排行榜(985院校)(共118个专业)
- 强化学习(4):策略梯度Policy Gradient算法
- 湘南巷子商城“0元购”逆袭上线
- LED电源按驱动方式分类,有这两种
- ubuntu ctags php,Ubuntu下创建vim+Taglist+cscope+ctags组合编辑器
- Java 静态方法与非静态方法
- 关于在软件开发过程中建立三道风险防线的想法