日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

前言

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

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

介紹

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

具體功能如下:

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

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

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

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

使用

1.添加依賴

①.在項(xiàng)目的 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); 

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

多類型

 
 
 
 
  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ū)別就是需要實(shí)現(xiàn)MultiItemTypeSupport,在MultiItemCommonAdapter對(duì)象中傳入實(shí)現(xiàn)的該對(duì)象,該對(duì)象完成兩個(gè)方法,功能是通過(guò)類型判別Item布局以及通過(guò)位置和數(shù)據(jù)判斷返回類型。通過(guò)這個(gè)對(duì)象,避免我們?cè)贏dapter中進(jìn)行類別判斷的書(shū)寫(xiě)。

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

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

事件監(jiān)聽(tīng)的使用就比較簡(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("點(diǎn)擊");
  5.                 showMyDialog("響應(yīng)點(diǎn)擊事件");
  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)長(zhǎng)按事件");                
  12.                         return false;
  13.             }
  14.         }); 

4.動(dòng)畫(huà)使用

gif錄制效果不太明顯,實(shí)際手機(jī)上看著效果還是不錯(cuò)的。

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

動(dòng)畫(huà)效果分兩種:

第一種:adapter初始化item的動(dòng)畫(huà)效果

第二種:ItemAnimator定義的動(dòng)畫(huà)效果

第一種動(dòng)畫(huà)效果使用了裝飾者模式,需要再封裝一層,然后通過(guò)setAdapter添加進(jìn)去。

第二種直接和平時(shí)使用一樣。

除此之外,ItemAnimator還有以下高級(jí)功能:

設(shè)置動(dòng)畫(huà)時(shí)長(zhǎng)

 
 
 
 
  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); 

也可以通過(guò)自定義AnimateViewHolder實(shí)現(xiàn)類,實(shí)現(xiàn)其他動(dòng)畫(huà)效果。

Adapter也有一些高級(jí)功能:

動(dòng)畫(huà)時(shí)長(zhǎng)

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

插值器

  1. AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAd

    本文題目:Recyclerview_helper多功能封裝,讓你的應(yīng)用更加自如
    轉(zhuǎn)載來(lái)于:http://m.5511xx.com/article/dhsecse.html