滑动改变标题栏的颜色
最近发现不少app中有这样的效果,滑动界面时,标题栏颜色渐变。分析了一下,感觉挺简单的,写了个小demo练手。
最终效果图
从上图效果来作分析,首先,RecyclerView滑动,标题栏背景由透明转换为深红色,滑动的距离是标题栏的高度,超过此高度标题栏背景色固定不变
JAVA
package cn.pan.slidesample;import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;import java.util.ArrayList;
import java.util.List;public class MainActivity extends FragmentActivity {private ArrayList dataList;private RecyclerView mRecyclerView;private int mDistanceY;private Toolbar mToolbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);loadData();initView();}private List loadData() {dataList = new ArrayList();for (int i = 0; i < 20; i++) {dataList.add("item" + i);}return dataList;}private void initView() {mToolbar = (Toolbar) findViewById(R.id.toolbar);if (mRecyclerView == null) {mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);}mRecyclerView.setLayoutManager(new LinearLayoutManager(this));mRecyclerView.setAdapter(new DataAdapter(this, dataList));mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {//滑动的距离mDistanceY += dy;//toolbar的高度int toolbarHeight = mToolbar.getBottom();//当滑动的距离 <= toolbar高度的时候,改变Toolbar背景色的透明度,达到渐变的效果if (mDistanceY <= toolbarHeight) {float scale = (float) mDistanceY / toolbarHeight;float alpha = scale * 255;mToolbar.setBackgroundColor(Color.argb((int) alpha, 128, 0, 0));} else {//上述虽然判断了滑动距离与toolbar高度相等的情况,但是实际测试时发现,标题栏的背景色//很少能达到完全不透明的情况,所以这里又判断了滑动距离大于toolbar高度的情况,//将标题栏的颜色设置为完全不透明状态mToolbar.setBackgroundResource(R.color.colorTitle);}}});}}
NOTE: 代码实现的关键是监听了RecyclerView的滑动距离,
addOnScrollListener
该方法回调返回每次滑动的距离,我们在回调方法onScrolled()
中做逻辑的处理。代码中的注释已经写的很清楚了。注意:这里的数据类型千万别搞错了。
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="cn.pan.slidesample.MainActivity"><android.support.v7.widget.Toolbar
android:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?android:actionBarSize"><TextView
android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textColor="@color/colorPrimary"android:text="@string/app_name" /></android.support.v7.widget.Toolbar><android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>
扩展:
经常使用美团外卖的小伙伴应该发现了,这个效果跟美团的有点类似。美团的标题栏是滑动时,把整个标题栏的透明度做了修改(包括里面的文字内容,上述只是修改了背景色),直到透明度完全为0的时候,重新显示了一个新的view。
这个原理是一样的,根据滑动的距离界限,设置标题的透明度View.setalpha()
,然后setVisiable()
就行了,小伙伴门可以去尝试一下
滑动改变标题栏的颜色相关推荐
- 获取listView上滑距离,根据这个距离改变标题栏颜色
1.继承ListView 2.重写onScrollchanged方法,在这个方法中调接口,在主页面实现接口 3.得到liostView的滑动距离,不断在onScrollchanged方法中调用 下面是 ...
- 标题栏透明android,android改变标题栏的透明度
类似这种效果,想必大家都看过,如某宝的商品详情页,小米商城首页等... 我们这里是自定义一个ScrollView去监听控件的滑动,然后不断去改变标题栏的透明度. /** * Created by ...
- Android Studio更改标题栏的颜色
Android Studio更改标题栏的颜色 第一步,在value的colors.xml文件夹中添加两个颜色.如下: #FFFFFF #000000 1 2 第二步,在value的style.xml文 ...
- PS改变icon图标颜色
在项目中经常会遇到要改变图标的颜色,比如说我遇到的这个,要求默认状态下图标为蓝色,当鼠标放在图标上时,图标变为橙色,当然这些事情都是设计的事情,由于我做练习的psd图不是很全,很多事情得自己上手,在这 ...
- WPF修改窗体标题栏的颜色
WPF程序通常情况下没办法修改窗体标题栏的样式,包括标题栏的背景颜色. 不过借助一个叫Fluent.Ribbon的第三方控件,貌似可以修改标题栏的背景颜色. 可以通过NuGet来安装这个控件:Inst ...
- Android 天气APP(二十一)滑动改变UI、增加更多天气数据展示,最多未来15天天气预报
上一篇:Android 天气APP(二十)增加欢迎页及白屏黑屏处理.展示世界国家/地区的城市数据 前言 写APP是有很多细节需要处理的,这些细节可以提高你的APP的使用概率.这已经是第二十一篇文章 ...
- 创建一个简单的应用程序窗口,显示“欲穷千里目 更上一层楼”。这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红、绿、黄、蓝,四种字体分别为宋体、楷
创建一个简单的应用程序窗口,显示"欲穷千里目 更上一层楼".这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红.绿.黄.蓝,四 ...
- 把主框架窗口设置为圆角矩形,并改变外围边框颜色
最近需要把主框架窗口设置为圆角矩形,并且替换掉边框颜色.程序中已经隐藏掉标题栏,菜单栏,工具栏,因此边框不是蓝色,而是系统颜色. 改变外围边框颜色是在void CMainFrame::OnNcPain ...
- 积跬步,聚小流------ps有用小技巧,改变png图标颜色
积跬步,聚小流------ps有用小技巧,改变png图标颜色 * 实现效果: 原图: 改动后: * 实现目的: 满足为实现不同界面色彩搭配改动png图标的颜色 * 实现方法: 1.打开Phot ...
最新文章
- 如何用 TensorFlow 实现生成式对抗网络(GAN)
- 易语言基础编程知识〖E语言手册〗
- 网络编程学习笔记(ICMPv6和IPv6套接口选项)
- java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解...
- 生信分析和美图资源推荐!!!
- d3 v4 api interpolate
- protobuf使用错误总结
- qt结合arcgis for qt加载tpk文件(离线地图)
- AppScan下载安装教程
- 计算机二级C语言选择题总结
- 求解会议安排问题 C++实现
- 后台管理系统——02首页布局
- 关于2014年相关人脸检测识别的几个论文摘要翻译
- 【2019-2020春学期】数据库实验大作业
- Metadata 元数据信息详解
- thinkphp5.1+uniapp+mysql5.7开发的朋友圈社区程序源码
- 移远M26实现短信接收
- 别人教我学计算机的作文,我教舅妈学电脑优秀作文.doc
- 如何解决C++编译错误C2280尝试引用已删除的函数【每天一个小技巧】
- 大小口圆锥台计算机,2011年对口单招计算机试卷A04(18页)-原创力文档