首页 / 安卓 / 安卓标题栏随屏幕滑动改变颜色
安卓标题栏随屏幕滑动改变颜色
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了安卓标题栏随屏幕滑动改变颜色,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2899字,纯文字阅读大概需要5分钟。
内容图文
为了我们项目的美观我们也许经常会碰到一些感觉很头疼的问题,如标题所说就是一个,一个scrollView包裹的页面或者存在listView的页面往往需要在往上滑动的时候标题栏实现悬浮并且背景颜色也要随之改变。废话不多说了,直接说怎么实现吧。
1.如果是scrollView包裹的页面,我们需要把scrollView和标题栏定义在相对布局中,保证标题栏可以悬浮,listView也是同理。
2.如果是scrollView我们需要用到onOverScrolled方法,然而这是一个protected方法,所以我们要通过自定义scrollView使用接口回调来实现,listView则需要使用的是onScroll方法,它同样是一个protected方法,所以它的解决思路和上面是一样的。
3.知道改怎么调用监听方法了就可以来完成功能的实现,原理其实也很简单,就是监听滑动的高度来给标题栏设定不同的背景色,当然也可以做更多的事情。下面就两种分别把主要代码放在下面。
a.ScrollView
1).首先自定义接口
public interface ScrollViewListener {
void onScrollChanged(int scrollX, int scrollY, boolean clampedX, boolean clampedY);
}
2)自定义scrollView,实现接口的回调
- public class SmartScrollView extends ScrollView {
- private ScrollViewListener scrollViewListener = null;
- public SmartScrollView (Context context, AttributeSet attrs,
- int defStyle) {
- super(context, attrs, defStyle);
- }
- public SmartScrollView (Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public SmartScrollView (Context context) {
- super(context);
- }
- @Override
- protected void onScrollChangedint scrollX, int scrollY, boolean clampedX, boolean clampedY) {
- super.onScrollChanged(scrollX, scrollY, clampedX, clampedY);
- if(this.scrollViewListener!= null) {
- scrollViewListener.onScrollChanged(scrollX, scrollY, clampedX, clampedY);
- }
- }
- public void setScrollViewListener(ScrollViewListener scrollViewListener) {
- this.scrollViewListener = scrollViewListener;
- }
- }
3).实现布局这部分代码过于简单就不粘了
4).在页面中实现功能
smartScrollView.setScrollViewListener(new ScrollViewListener() {
@Override
public void onScrollChanged(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
//获取图片的高度,在这个范围内渐变
if (scrollY >= iv_background.getTop() + iv_background.getMeasuredHeight()) {
ll_title.setBackgroundColor(Color.rgb(0,0,0));
} else if (scrollY>=0) {
//计算透明度
float persent = scrollY * 1f / (iv_background + iv_background.getMeasuredHeight());
int alpha = (int) (255 * persent);
int color = Color.argb(alpha,0,0,0);
ll_title.setBackgroundColor(color);
}
}
});
b.listView
这个定义接口回调和scrollView类似,就是参数换了而已,直接写关键代码把
((PullRefreshListView) pl_list).setOnRefreshListener(new OnRefreshListener() {
@Override
public void onScroll(int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int[] ints = new int[2];
mImage.getLocationOnScreen(ints);
/**
* mImage距离屏幕顶部的距离(图片顶部在屏幕最上面,向上滑动为负数,所以取反)
* 如果不隐藏状态栏,需要加上状态栏的高度;隐藏状态栏就不用加了;
*/
int scrollY = -ints[1] + statusbarHeight;
int imageHeight = mImage.getHeight();
if (mImage != null && imageHeight > 0) {
// 如果图片没有向上滑动,设置为全透明
if (scrollY < 0) {
mByWhichView.setBackgroundColor(Color.argb(0,0,0,0));
} else {
// 图片已经滑动,而且还没有全部滑出屏幕,根据滑出高度的比例设置透明度的比例
if (scrollY < imageHeight) {
int alpha= (int) (new Float(scrollY) / new Float(imageHeight) * 255);
ll_title.setBackgroundColor(Color.argb(alpha,0,0,0));
} else {
ll_title.setBackgroundColor((Color.rgb(0,0,0));
}
}
}
}
});
大概就是这样了。
原文:http://www.cnblogs.com/bereeze-cai/p/6138800.html
内容总结
以上是互联网集市为您收集整理的安卓标题栏随屏幕滑动改变颜色全部内容,希望文章能够帮你解决安卓标题栏随屏幕滑动改变颜色所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。