日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Recyclerview_helper多功能封裝,讓你的應(yīng)用更加自如

前言

為忻城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及忻城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、忻城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

RecyclerView作為列表使用,在項目中的應(yīng)用場景實在是太普遍了。針對項目應(yīng)用,主要使用了RecyclerView的單或多類型Item,點擊/長按事件,ItemAnimator動畫效果以及上拉加載、下拉刷新。recyclerview_helper就是針對以上應(yīng)用場景進行的封裝與使用,避免在項目使用中重復(fù)的敲代碼以及依賴多個庫或者自定義實現(xiàn)等復(fù)雜方式。

介紹

如上所示,recyclerview_helper針對不同應(yīng)用場景封裝了不同的功能。

具體功能如下:

1.封裝了ViewHolder以及Adapter,避免每次都要重復(fù)寫創(chuàng)建ViewHolder以及重寫onCreateViewHolder,onBindViewHolder方法,支持單/多類型Item。

2.封裝了OnItemClickListener以及OnItemLongClickListener,不必每次寫接口,定義回調(diào)。僅支持對Item的點擊事件。

3.具有各種炫酷的動畫效果,功能裝飾者模式封裝Adapter添加初始化動畫效果 ,以及自定義ItemAnimator實現(xiàn)各種炫酷的Item增刪動畫效果。

4.支持添加頭尾布局,以及支持下拉刷新和上拉加載更多功能。同時支持自定義下拉刷新布局及動畫,以及上拉加載更多的布局,可實現(xiàn)各種炫酷效果,跟隨你的想象放飛。

使用

1.添加依賴

①.在項目的 build.gradle 文件中添加

 
 
 
 
  1. allprojects {
  2.         repositories {
  3.             ...
  4.             maven { url 'https://jitpack.io' }
  5.         }
  6.     } 

②.在 module 的 build.gradle 文件中添加依賴

 
 
 
 
  1. dependencies {
  2.     compile 'com.github.LRH1993:recyclerview_helper:V1.0.3'

2.單/多類型Item使用

單類型

 
 
 
 
  1. CommonAdapter mAdapter = new CommonAdapter(this, R.layout.item_common, mDatas) {            
  2.                  @Override
  3.             public void convert(BaseViewHolder holder, int position) {
  4.                 holder.setText(R.id.tv_content,mDatas.get(position));                
  5.                         int number = new Random().nextInt(3);
  6.                 holder.setImageResource(R.id.iv_content,mImageRes[number]);
  7.             }
  8.         };
  9.         mRecyclerView.setAdapter(mAdapter); 

通過實現(xiàn)CommonAdapter,傳入context,布局以及數(shù)據(jù),然后實現(xiàn)convert方法,設(shè)置view的顯示數(shù)據(jù)就完成了。很簡潔方便。

多類型

 
 
 
 
  1. MultiItemTypeSupport support = new MultiItemTypeSupport() {            
  2.                  @Override
  3.             public int getLayoutId(int itemType) {                
  4.                  if (itemType == TYPE_HEAD) {                    
  5.                      return R.layout.item_special;
  6.                 } else {                    
  7.                      return R.layout.item_common;
  8.                 }
  9.             }            
  10.             @Override
  11.             public int getItemViewType(int position, String s) {                
  12.                  if (position%3==0&& position>0) {                    
  13.                      return TYPE_HEAD;
  14.                 } else {                    
  15.                    return TYPE_COMMON;
  16.                 }
  17.             }
  18.         };
  19. -----------------------------------------------------------------------------------------------------------------------------
  20.  MultiItemCommonAdapter mAdapter = new MultiItemCommonAdapter(this, mDatas, support) {            
  21.             @Override
  22.             public void convert(BaseViewHolder holder, int position) {                
  23.                                  if (position%3==0&& position>0) {
  24.                     holder.setImageResource(R.id.iv_head,R.drawable.multi_image);
  25.                 } else {
  26.                     holder.setText(R.id.tv_content,mDatas.get(position));                    
  27.                                  int number = new Random().nextInt(3)+3;
  28.                     holder.setImageResource(R.id.iv_content,mImageRes[number]);
  29.                 }
  30.             }
  31.         };
  32.         mRecyclerView.setAdapter(mAdapter); 

和單類型的區(qū)別就是需要實現(xiàn)MultiItemTypeSupport,在MultiItemCommonAdapter對象中傳入實現(xiàn)的該對象,該對象完成兩個方法,功能是通過類型判別Item布局以及通過位置和數(shù)據(jù)判斷返回類型。通過這個對象,避免我們在Adapter中進行類別判斷的書寫。

該部分實現(xiàn)參考了鴻洋大神對RecyclerView的封裝。

3.事件監(jiān)聽使用

事件監(jiān)聽的使用就比較簡單了,和正常使用一樣。

 
 
 
 
  1. adapter.setOnItemClickListener(new CommonAdapter.OnItemClickListener() {            
  2.                 @Override
  3.             public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) {
  4.                 System.out.println("點擊");
  5.                 showMyDialog("響應(yīng)點擊事件");
  6.             }
  7.         });
  8.         adapter.setOnItemLongClickListener(new CommonAdapter.OnItemLongClickListener() {            
  9.                  @Override
  10.             public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) {
  11.                 showMyDialog("響應(yīng)長按事件");                
  12.                         return false;
  13.             }
  14.         }); 

4.動畫使用

gif錄制效果不太明顯,實際手機上看著效果還是不錯的。

 
 
 
 
  1. mRecyclerView.setItemAnimator(new LandingAnimator());
  2.         ScaleInAnimationAdapter scaleAdapter = new ScaleInAnimationAdapter(adapter);
  3.         scaleAdapter.setFirstOnly(false);
  4.         scaleAdapter.setDuration(500);
  5.         mRecyclerView.setAdapter(scaleAdapter); 

動畫效果分兩種:

第一種:adapter初始化item的動畫效果

第二種:ItemAnimator定義的動畫效果

第一種動畫效果使用了裝飾者模式,需要再封裝一層,然后通過setAdapter添加進去。

第二種直接和平時使用一樣。

除此之外,ItemAnimator還有以下高級功能:

設(shè)置動畫時長

 
 
 
 
  1. mRecyclerView.getItemAnimator().setAddDuration(1000);
  2. mRecyclerView.getItemAnimator().setRemoveDuration(1000);
  3. mRecyclerView.getItemAnimator().setMoveDuration(1000);
  4. mRecyclerView.getItemAnimator().setChangeDuration(1000); 

插值器

 
 
 
 
  1. SlideInLeftAnimator animator = new SlideInLeftAnimator();
  2. animator.setInterpolator(new OvershootInterpolator());
  3. mRecyclerView.setItemAnimator(animator); 

也可以通過自定義AnimateViewHolder實現(xiàn)類,實現(xiàn)其他動畫效果。

Adapter也有一些高級功能:

動畫時長

 
 
 
 
  1. AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAdapter(adapter);
  2. alphaAdapter.setDuration(1000);
  3. mRecyclerView.setAdapter(alphaAdapter); 

插值器

  1. AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAd

    網(wǎng)頁題目:Recyclerview_helper多功能封裝,讓你的應(yīng)用更加自如
    標(biāo)題URL:http://www.dlmjj.cn/article/dhsecse.html