首页 > 系统 > Android > 正文

【商城开发一】Android高仿京东标题栏渐变,下拉隐藏(RecyclerView)

2019-11-07 23:52:45
字体:
来源:转载
供稿:网友

开始工作了,第一个项目是一个商城app,分享一下京东商城滑动标题栏渐变,下拉刷新隐藏标题栏的效果。先看看再说

1.先看一下布局文件,是一个刷新控件嵌套一个RecyclerView,head_searche是搜索栏,也就是toolbar了。

<?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">    <com.muzi.homepage.SuperSwipeRefreshLayout        android:id="@+id/superlayout"        android:layout_width="match_parent"        android:layout_height="match_parent">        <android.support.v7.widget.RecyclerView            android:id="@+id/recyclerView"            android:layout_width="match_parent"            android:layout_height="match_parent" />    </com.muzi.homepage.SuperSwipeRefreshLayout>    <include layout="@layout/head_searche" /></RelativeLayout>2.然后是渐变效果。实例化RecyclerView,重写滑动监听,mDistance是int类型,表示滑动距离。通过判断滑动距离,来改变所搜栏的Alpha值。自己看代码

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                //滑动的距离                mDistanceY += dy;                //toolbar的高度                int toolbarHeight = head_search_rr.getBottom();                //当滑动的距离 <= toolbar高度的时候,改变Toolbar背景色的透明度,达到渐变的效果                if (mDistanceY <= toolbarHeight) {                    float scale = (float) mDistanceY / toolbarHeight;                    float alpha = scale * 255;                    head_search_rr.setBackgroundColor(Color.argb((int) alpha, 255, 255, 255));                } else {                    //将标题栏的颜色设置为完全不透明状态                    head_search_rr.setBackgroundResource(R.color.white);                }            }        });3.刷新隐藏搜索栏,SuperSwipeRefreshLayout的下拉刷新监听,当滑动的时候设置搜索栏的Visibility为GONE就行了

  /**         * 下拉刷新         */        refreshLayout.setOnPullRefreshListener(new SuperSwipeRefreshLayout.OnPullRefreshListener() {            @Override            public void onRefresh() {                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        refreshLayout.setRefreshing(false);                    }                }, 500);            }            @Override            public void onPullDistance(int distance) {                if (distance > 0) {                    head_search_rr.setVisibility(View.GONE);                } else {                    head_search_rr.setVisibility(View.VISIBLE);                }            }            @Override            public void onPullEnable(boolean enable) {            }        });


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表