Android实现QQ空间沉浸式状态栏,并且滑动ListView实现透明度变化
来源:互联网 发布:知乎 收缩毛孔 编辑:程序博客网 时间:2024/05/09 06:23
安卓4.4以后增加了可以改变状态蓝颜色的api,所以现在主流的APP基本上都会把状态栏修改成自己APP的主题颜色。那么接下来就先实现沉浸式状态栏吧,
//透明状态栏 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//透明导航栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
在ancitvity的onCreate();里添加这两个方法,然后在布局里的控件里添加上(注意是在和状态栏接触的控件添加)
android:clipToPadding="true"android:fitsSystemWindows="true"
xml代码如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" android:orientation="vertical"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/transparent" android:cacheColorHint="@color/transparent" android:listSelector="@color/transparent" ></ListView> <RelativeLayout android:id="@+id/rl_title" android:layout_width="match_parent" android:layout_height="70dp" android:layout_alignParentTop="true" android:background="#009959" android:clipToPadding="true" android:fitsSystemWindows="true" > <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:gravity="center" android:minWidth="50dp" android:text="《 返回" android:textColor="#ffffff" /> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:gravity="center" android:text="你好,你有男朋友吗?" android:textColor="#ffffff" /> </RelativeLayout></RelativeLayout>
便可实现了沉浸式的状态栏,运行结果:
是不是很完美.
接下来实现滑动ListView使title的透明度变化,结果是这个的:
(不会做gif图。。。。那位高手知道还请指点QQ391573665 谢谢)
实现这种效果无非就是计算ListView的滑动距离然后设置title的alpha就好了。
首先是计算lsitView的滑动距离,这个比较简单设置OnScrollListene然后
public int getScrollY() { View c = listView.getChildAt(0); if (c instanceof ImageView){ if (c == null) { return 0; } int firstVisiblePosition = listView.getFirstVisiblePosition(); int top = c.getTop(); return -top + firstVisiblePosition * c.getHeight(); }else { return imageView.getHeight() - DensityUtil.dip2px(this, 70); } }
在onScroll方法里调用这个方法 得到滑动的距离
然后调用
public void changeTitle(int scrollY) { LogUtil.log("------------->" + scrollY); int height = imageView.getHeight() - DensityUtil.dip2px(this, 70); LogUtil.log("---height-->" + height); float alpha = 1f / height; float a = scrollY * alpha; LogUtil.log("---alpha-->" + a); rl_title.setAlpha(a); }
修改alpha
整体代码如下:
listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { changeTitle(getScrollY()); } }); }
。
2 0
- Android实现QQ空间沉浸式状态栏,并且滑动ListView实现透明度变化
- Android开发之实现QQ空间、美团首页沉浸式状态栏
- android实现沉浸式状态栏
- Android 实现沉浸式状态栏
- android实现沉浸式状态栏
- Android 实现沉浸式状态栏
- Android沉浸式状态栏实现
- android沉浸式状态栏实现
- Android 实现沉浸式状态栏
- android沉浸式状态栏实现
- android沉浸式状态栏实现
- android状态栏实现沉浸式
- Android 实现沉浸式状态栏
- Android沉浸式状态栏实现
- Android实现沉浸式状态栏
- Android实现沉浸式状态栏
- android 沉浸式状态栏实现
- Android沉浸式状态栏实现
- Group Commit of Binary Log
- libsvm for matlab安装与测试
- 深入Java关键字null
- YII小项目--在线接口管理工具
- windows socket api 函数大全
- Android实现QQ空间沉浸式状态栏,并且滑动ListView实现透明度变化
- Dagger2
- hibernate复合主键映射
- 2.ExpandableListView的使用
- SQL语句整理
- 【NWERC2015】【BZOJ4425】AssigningWorkstations分配工作站
- 淘宝架构框架
- WIFI 热点开发
- 互联网思维