原理就是滑动中改变透明度;

核心代码:

rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
} @Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
ScrollUnm = ScrollUnm + dy; //滑动距离总合
Log.i("dy",dy+"");
Log.i("overallXScroll",ScrollUnm+"");
if (ScrollUnm<=0){ //在顶部时完全透明
tv.setBackgroundColor(Color.argb((int) 0, 255,41,76));
}else if (ScrollUnm>0&&ScrollUnm<=height){ //在滑动高度中时,设置透明度百分比(当前高度/总高度)
double d = (double) ScrollUnm / height;
double alpha = (d*255);
tv.setBackgroundColor(Color.argb((int) alpha, 255,41,76));
}else{ //滑出总高度 完全不透明
tv.setBackgroundColor(Color.argb((int) 255, 255,41,76));
}
}
});

完整代码:

package com.example.admin.titlebargradient;

import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import java.util.Arrays;
import java.util.List; /**
* CCB 版权所有 翻版必究 嘻嘻嘻
*/
public class MainActivity extends AppCompatActivity {
private RecyclerView rv;
private TextView tv;
private List<String> data;
private int height = 640; // 滑动到什么地方完全变色
private int ScrollUnm = 0; //滑动的距离总和 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rv = findViewById(R.id.rv);
tv = findViewById(R.id.tv);
initData();
} private void initData() {
data = Arrays.asList("嗯嗯","啊啊","哦哦","呵呵","嘻嘻","哈哈","嘎嘎","嘿嘿","哼哼","哇哇","啪啪","嗝");
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
rv.setLayoutManager(linearLayoutManager);
rv.setAdapter(new MyAdapter(this,data));
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
} @Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
ScrollUnm = ScrollUnm + dy; //滑动距离总合
Log.i("dy",dy+"");
Log.i("overallXScroll",ScrollUnm+"");
if (ScrollUnm<=0){ //在顶部时完全透明
tv.setBackgroundColor(Color.argb((int) 0, 255,41,76));
}else if (ScrollUnm>0&&ScrollUnm<=height){ //在滑动高度中时,设置透明度百分比(当前高度/总高度)
double d = (double) ScrollUnm / height;
double alpha = (d*255);
tv.setBackgroundColor(Color.argb((int) alpha, 255,41,76));
}else{ //滑出总高度 完全不透明
tv.setBackgroundColor(Color.argb((int) 255, 255,41,76));
}
}
});
} class MyAdapter extends RecyclerView.Adapter<MyAdapter.Vh>{
private List<String> datas;
private Context context;
public MyAdapter(Context context,List datas) {
this.datas = datas;
this.context = context;
} @Override
public Vh onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context,R.layout.layout_item,null);
return new Vh(view);
} @Override
public void onBindViewHolder(Vh holder, int position) {
holder.tv.setText(datas.get(position).toString());
} @Override
public int getItemCount() {
return datas.size();
} class Vh extends RecyclerView.ViewHolder{
TextView tv;
public Vh(View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.tv);
}
}
}
}

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.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="48dp"
android:textColor="#ededed"
android:text="没错就是我"
android:gravity="center"
android:textSize="16dp"
android:background="#00ff294c"
/> </RelativeLayout>

滑动的百分比,就是透明度的百分比;完整代码请看GitHub;

完整代码:https://github.com/CuiChenbo/TitlebarGradient

Android标题头滑动渐变,Titlebar滑动渐变,仿美团饿了么标题头渐变;的更多相关文章

  1. Android开发之多级下拉列表菜单实现(仿美团,淘宝等)

    注:本文转载于:http://blog.csdn.net/minimicall/article/details/39484493 我们在常用的电商或者旅游APP中,例如美团,手机淘宝等等,都能够看的到 ...

  2. Android开发:仿美团下拉列表菜单,帮助类,复用简单

    近期在项目中须要用到下拉菜单.公司比較推崇美团的下拉菜单,于是要实现该功能.想着.这个功能应该是一个常常会用到的.于是何不写一个帮助类,仅仅要往这个类里面传入特定的參数,既能够实现下来菜单,并且还能够 ...

  3. WPF 背景颜色渐变的滑动条实现

    原文:WPF 背景颜色渐变的滑动条实现 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/BYH371256/article/details/83507 ...

  4. Android ViewPager再探:增加滑动指示条

    上一篇:<Android ViewPager初探:让页面滑动起来> ViewPager只是左右滑动有些丑,也不知道当前位于第几页面. 可以在上方加入滑动指示条,来确定当前位置. 只需要修改 ...

  5. Android ViewPager初探:让页面滑动起来

    下一篇:<Android ViewPager再探:增加滑动指示条> ViewPager需要用到适配器PagerAAdapter,以下四个函数需要重写: instantiateItem(Vi ...

  6. Android:使用ViewPager实现左右滑动切换图片(图上有点点)

    在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...

  7. Android:使用ViewPager实现左右滑动切换图片 (简单版)

    ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...

  8. Android 使用ViewPager实现左右循环滑动图片

    ViewPager这个小demo实现的是可以左右循环滑动图片,下面带索引,滑到最后一页在往右滑动就要第一页,第一页往左滑动就到最后一页,先上效果图,用美女图片是我一贯的作风,呵呵 1.    首先看一 ...

  9. Android ViewFlipper增添ScrollView后不能滑动了

    Android ViewFlipper添加ScrollView后不能滑动了在Activity中添加ScrollView实现滚动activity的效果后,activity的滑动效果却无法生效了,原因是因 ...

随机推荐

  1. MongoDB索引的种类与使用

    一:索引的种类 1:_id索引:是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段2:单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索 ...

  2. dojo:如何为表格添加从数据库获得存储的下拉框

    为表格添加下拉框的例子官网上就有,但如果下拉框的数据是从数据库请求的.需要有一些注意的地方. 首先希望实现的效果如下图所示: 表格初始数据为空,点击查询后获得表格表格数据,但下拉框的数据是在对应的fo ...

  3. 基于MVC4+EasyUI的Web开发框架形成之旅(6)--基类控制器CRUD的操作

    在上一篇随笔中,我对Web开发框架的总体界面进行了介绍,其中并提到了我的<Web开发框架>的控制器的设计关系,Web开发框架沿用了我的<Winform开发框架>的很多架构设计思 ...

  4. zookeeper 启动显示started,jps查看进程却没有,解决方法

    如图所示, 输入 zkServer.sh start 显示如下: Starting zookeeper ... STARTED 可是输入jps指令 却找不到zookeeper进程 去zkdata文件目 ...

  5. Spring Boot 监控与管理

    在微服务架构中,我们将原本庞大的单体系统拆分为多个提供不同服务的应用,虽然,各个应用的内部逻辑因分解而简化,但由于部署的应用数量成倍增长,使得系统的维护复杂度大大提升,为了让运维系统能够获取各个为服务 ...

  6. CentOS6.4 添加php-fpm系统服务

    简介: php-fpm安装完成后默认不会注册为系统服务,所以需要手工添加系统服务脚本.在/etc/init.d目录下新建php-fpm文件,并更改权限其即可. 1.检测/usr/local/php/v ...

  7. aircrack 破解wifi密码

    分享一个用aircrack破解wifi密码的步骤: 1.新建一个终端 airmon-ng check kill airmon-ng start wlan0 airodump-ng wlan0mon 此 ...

  8. php 文件读取方式

    整理了一下PHP中读取文件的几个方法,方便以后查阅. 1.fread string fread ( int $handle , int $length ) fread() 从 handle 指向的文件 ...

  9. php .htaccess文件使用详解

    1..htaccess文件使用前提 .htaccess的主要作用就是实现url改写,也就是当浏览器通过url访问到服务器某个文件夹时,作为主人,我们可以来接待这个url,具体地怎样接待它,就是此文件的 ...

  10. ubuntu 17.10.1 安装 virtual box 增强工具

    ubuntu 17.10.1 安装 virtual box 增强工具遇到 “  Please install the gcc make perl packages from your distribu ...