Android 标题栏滑动渐变背景色

来源:互联网 发布:简单装修 知乎 编辑:程序博客网 时间:2024/04/27 14:25

刚好今天做项目的时候遇到这种效果需求,如下,就是随着标题栏的滑动而改变背景色,一旦回到原点,背景色消失。

这里就不需要见解了吧,注释都写好了!

public class MainActivity extends AppCompatActivity {    private RecyclerView recyclerView;    private LinearLayout llSearch;    private HomeAdapter adapter;    private int height = 640;// 滑动开始变色的高,真实项目中此高度是由广告轮播或其他首页view高度决定    private int overallXScroll = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);        llSearch = (LinearLayout) findViewById(R.id.ll_search);        LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this);        recyclerView.setItemAnimator(new DefaultItemAnimator());        recyclerView.addItemDecoration(new RecycleViewDivider(                MainActivity.this, LinearLayoutManager.HORIZONTAL, Utils.dip2px(MainActivity.this, 0.5f), ContextCompat.getColor(MainActivity.this, R.color.line_color)));        recyclerView.setLayoutManager(manager);        adapter = new HomeAdapter(this);        recyclerView.setAdapter(adapter);/** Color.argb((int) 255, 41, 193, 246)         * A表示Alpha值,表示颜色的透明度,FF为不透明,00表示完全透明;         R表示红颜色值;         G表示绿颜色值;         B表示蓝颜色值;         */        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                overallXScroll = overallXScroll + dy;// 累加y值 解决滑动一半y值为0                if (overallXScroll <= 0) {  //未滑动时,设置透明度为0                    rl_top_search.setBackgroundColor(Color.argb((int) 0, 255, 72, 155));                } else if (overallXScroll > 0 && overallXScroll <= height) { //确定一个渐变区域,背景颜色透明度渐变                    //设置渐变比例                    float scale = (float) overallXScroll / height;                    float alpha = (255 * scale);                    rl_top_search.setBackgroundColor(Color.argb((int) alpha, 255, 72, 155));                } else {//超过渐变区域,透明度都是满的                    rl_top_search.setBackgroundColor(Color.argb((int) 255, 255, 72, 155));                }            }        });    }}


想要上面的底部菜单栏的可以TP到这里:http://blog.csdn.net/baiyulinlin1/article/details/74990105

原创粉丝点击