2023年6月21日发(作者:)
androidRecyclerview仿京东,滚动屏幕标题栏渐变⾸先,本⽂代码部分参考了conglida博主写的⾃定义scrollview 实现标题栏渐变:此资源只使⽤⾃定义scrollview 实现标题栏渐变和上拉下拉刷新。如果需要listview,等其他控件,需实现onScrollListener,在onscroll中嵌⼊渐变代码。再次感谢conglida博主的⽆私奉献!由于Recyclerview已经推出很长时间了,不得不说这个控件确实好,可以替代scrollview、listview、gridview,功能很强⼤,⽬前我已经⽤这个新控件实现了标题栏渐变的效果。使⽤框架:LuperRecyclerView是⽀持addHeaderView、 addFooterView、分页加载的RecyclerView解决⽅案,滑动底部⾃动加载更多。开始正题。布局⽂件: 部分代码:CommonHeader headerView; private void initView(View view) { mSwipeRefreshLayout = (SwipeRefreshLayout)ewById(_container); gressViewOffset(false, 0, 2px(getActivity(), 92)); //设置刷新时动画的颜⾊,可以设置4个 efreshListener(this); reshing(true); mRecyclerView = (RecyclerView) ewById(er_view); mGridAdapter = new HotsGridAdapter(getActivity(),mHandler); mHeaderAndFooterRecyclerViewAdapter = new HeaderAndFooterRecyclerViewAdapter(mGridAdapter); pter(mHeaderAndFooterRecyclerViewAdapter); layoutManager = new GridLayoutManager(getActivity(), 2); entation(AL); othScrollbarEnabled(true); FixedSize(true); outManager(layoutManager); headerView = new CommonHeader(getActivity(),_home_header); derView(mRecyclerView, headerView); mTitlebar = (RelativeLayout) ewById(_title_bar); ibility(E); kground().setAlpha(0); keyTextView = (TextView) ewById(_title); mCurCityText = (TextView) ewById(t_city_text); categorizeTextView = (TextView) ewById(_right); slideShowView = (SlideShowView) ewById(howView); moreSpecialProduct = ewById(l_more); lickListener(this); lickListener(this); lickListener(this); lickListener(this); slideShowView = (SlideShowView) ewById(howView); cart_btn = getActivity().findViewById(_cart_btn); animation_viewGroup = createAnimLayout(); imageLoader = tance(); crollListener(mOnScrollListener); orSchemeResources(_blue_light, _red_light, _orange_light, andro nSizeLookup(new HeaderSpanSizeLookup((HeaderAndFooterRecyclerViewAdapter) pter(), }关键代码:headerView = new CommonHeader(getActivity(),_home_header); derView(mRecyclerView, headerView);为RecyclerView添加headerview,headview包括了所有的其他view,如下图所⽰,所看到的view都包含在headerView⾥⾯,不包括titlebar哦。滑动监听事件:boolean pauseOnScroll = false, pauseOnFling=true; private RecyclerOnScrollListener mOnScrollListener = new RecyclerOnScrollListener() { @Override public void onScrolled(int dx, int dy) { lled(dx, dy); if (ght() > 0) { //define it for scroll height int lHeight = ght(); if(dy < 0){ kground().setAlpha(0); }else { if (dy < lHeight) { int progress = (int) (new Float(dy) / new Float(lHeight) * 200);//255 kground().setAlpha(progress); } else { kground().setAlpha(255 - 55); } } } } @Override public void onBottom() { om(); Log.d(TAG, "onBottom"); state = terViewState(mRecyclerView); if(state == g) { Log.d(TAG, "the state is Loading, just wait.."); return; } if (mCurPageIndex < totalPage) { // loading more terViewState(getActivity(), mRecyclerView, REQUEST_COUNT, g, null); ptyMessage(GET_LIST_DATA); Log.d(TAG, "onBottom loading"); } else { //the end //the end terViewState(getActivity(), mRecyclerView, REQUEST_COUNT, , null); } } @Override public void onScrollStateChanged(int newState) { //根据newState状态做处理 if (imageLoader != null) { switch (newState) { case 0: (); break; case 1: if (pauseOnScroll) { (); } else { (); } break; case 2: if (pauseOnFling) { (); } else { (); } break; } } } };具体原理请参考conglida博主写的⾃定义scrollview 实现标题栏渐变:
2023年6月21日发(作者:)
androidRecyclerview仿京东,滚动屏幕标题栏渐变⾸先,本⽂代码部分参考了conglida博主写的⾃定义scrollview 实现标题栏渐变:此资源只使⽤⾃定义scrollview 实现标题栏渐变和上拉下拉刷新。如果需要listview,等其他控件,需实现onScrollListener,在onscroll中嵌⼊渐变代码。再次感谢conglida博主的⽆私奉献!由于Recyclerview已经推出很长时间了,不得不说这个控件确实好,可以替代scrollview、listview、gridview,功能很强⼤,⽬前我已经⽤这个新控件实现了标题栏渐变的效果。使⽤框架:LuperRecyclerView是⽀持addHeaderView、 addFooterView、分页加载的RecyclerView解决⽅案,滑动底部⾃动加载更多。开始正题。布局⽂件: 部分代码:CommonHeader headerView; private void initView(View view) { mSwipeRefreshLayout = (SwipeRefreshLayout)ewById(_container); gressViewOffset(false, 0, 2px(getActivity(), 92)); //设置刷新时动画的颜⾊,可以设置4个 efreshListener(this); reshing(true); mRecyclerView = (RecyclerView) ewById(er_view); mGridAdapter = new HotsGridAdapter(getActivity(),mHandler); mHeaderAndFooterRecyclerViewAdapter = new HeaderAndFooterRecyclerViewAdapter(mGridAdapter); pter(mHeaderAndFooterRecyclerViewAdapter); layoutManager = new GridLayoutManager(getActivity(), 2); entation(AL); othScrollbarEnabled(true); FixedSize(true); outManager(layoutManager); headerView = new CommonHeader(getActivity(),_home_header); derView(mRecyclerView, headerView); mTitlebar = (RelativeLayout) ewById(_title_bar); ibility(E); kground().setAlpha(0); keyTextView = (TextView) ewById(_title); mCurCityText = (TextView) ewById(t_city_text); categorizeTextView = (TextView) ewById(_right); slideShowView = (SlideShowView) ewById(howView); moreSpecialProduct = ewById(l_more); lickListener(this); lickListener(this); lickListener(this); lickListener(this); slideShowView = (SlideShowView) ewById(howView); cart_btn = getActivity().findViewById(_cart_btn); animation_viewGroup = createAnimLayout(); imageLoader = tance(); crollListener(mOnScrollListener); orSchemeResources(_blue_light, _red_light, _orange_light, andro nSizeLookup(new HeaderSpanSizeLookup((HeaderAndFooterRecyclerViewAdapter) pter(), }关键代码:headerView = new CommonHeader(getActivity(),_home_header); derView(mRecyclerView, headerView);为RecyclerView添加headerview,headview包括了所有的其他view,如下图所⽰,所看到的view都包含在headerView⾥⾯,不包括titlebar哦。滑动监听事件:boolean pauseOnScroll = false, pauseOnFling=true; private RecyclerOnScrollListener mOnScrollListener = new RecyclerOnScrollListener() { @Override public void onScrolled(int dx, int dy) { lled(dx, dy); if (ght() > 0) { //define it for scroll height int lHeight = ght(); if(dy < 0){ kground().setAlpha(0); }else { if (dy < lHeight) { int progress = (int) (new Float(dy) / new Float(lHeight) * 200);//255 kground().setAlpha(progress); } else { kground().setAlpha(255 - 55); } } } } @Override public void onBottom() { om(); Log.d(TAG, "onBottom"); state = terViewState(mRecyclerView); if(state == g) { Log.d(TAG, "the state is Loading, just wait.."); return; } if (mCurPageIndex < totalPage) { // loading more terViewState(getActivity(), mRecyclerView, REQUEST_COUNT, g, null); ptyMessage(GET_LIST_DATA); Log.d(TAG, "onBottom loading"); } else { //the end //the end terViewState(getActivity(), mRecyclerView, REQUEST_COUNT, , null); } } @Override public void onScrollStateChanged(int newState) { //根据newState状态做处理 if (imageLoader != null) { switch (newState) { case 0: (); break; case 1: if (pauseOnScroll) { (); } else { (); } break; case 2: if (pauseOnFling) { (); } else { (); } break; } } } };具体原理请参考conglida博主写的⾃定义scrollview 实现标题栏渐变:
发布评论