新聞中心
前言

為忻城等地區(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 文件中添加
- allprojects {
- repositories {
- ...
- maven { url 'https://jitpack.io' }
- }
- }
②.在 module 的 build.gradle 文件中添加依賴
- dependencies {
- compile 'com.github.LRH1993:recyclerview_helper:V1.0.3'
- }
2.單/多類型Item使用
單類型
- CommonAdapter
mAdapter = new CommonAdapter (this, R.layout.item_common, mDatas) { - @Override
- public void convert(BaseViewHolder holder, int position) {
- holder.setText(R.id.tv_content,mDatas.get(position));
- int number = new Random().nextInt(3);
- holder.setImageResource(R.id.iv_content,mImageRes[number]);
- }
- };
- mRecyclerView.setAdapter(mAdapter);
通過實現(xiàn)CommonAdapter,傳入context,布局以及數(shù)據(jù),然后實現(xiàn)convert方法,設(shè)置view的顯示數(shù)據(jù)就完成了。很簡潔方便。
多類型
- MultiItemTypeSupport
support = new MultiItemTypeSupport () { - @Override
- public int getLayoutId(int itemType) {
- if (itemType == TYPE_HEAD) {
- return R.layout.item_special;
- } else {
- return R.layout.item_common;
- }
- }
- @Override
- public int getItemViewType(int position, String s) {
- if (position%3==0&& position>0) {
- return TYPE_HEAD;
- } else {
- return TYPE_COMMON;
- }
- }
- };
- -----------------------------------------------------------------------------------------------------------------------------
- MultiItemCommonAdapter
mAdapter = new MultiItemCommonAdapter (this, mDatas, support) { - @Override
- public void convert(BaseViewHolder holder, int position) {
- if (position%3==0&& position>0) {
- holder.setImageResource(R.id.iv_head,R.drawable.multi_image);
- } else {
- holder.setText(R.id.tv_content,mDatas.get(position));
- int number = new Random().nextInt(3)+3;
- holder.setImageResource(R.id.iv_content,mImageRes[number]);
- }
- }
- };
- mRecyclerView.setAdapter(mAdapter);
和單類型的區(qū)別就是需要實現(xiàn)MultiItemTypeSupport,在MultiItemCommonAdapter對象中傳入實現(xiàn)的該對象,該對象完成兩個方法,功能是通過類型判別Item布局以及通過位置和數(shù)據(jù)判斷返回類型。通過這個對象,避免我們在Adapter中進行類別判斷的書寫。
該部分實現(xiàn)參考了鴻洋大神對RecyclerView的封裝。
3.事件監(jiān)聽使用
事件監(jiān)聽的使用就比較簡單了,和正常使用一樣。
- adapter.setOnItemClickListener(new CommonAdapter.OnItemClickListener() {
- @Override
- public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) {
- System.out.println("點擊");
- showMyDialog("響應(yīng)點擊事件");
- }
- });
- adapter.setOnItemLongClickListener(new CommonAdapter.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) {
- showMyDialog("響應(yīng)長按事件");
- return false;
- }
- });
4.動畫使用
gif錄制效果不太明顯,實際手機上看著效果還是不錯的。
- mRecyclerView.setItemAnimator(new LandingAnimator());
- ScaleInAnimationAdapter scaleAdapter = new ScaleInAnimationAdapter(adapter);
- scaleAdapter.setFirstOnly(false);
- scaleAdapter.setDuration(500);
- mRecyclerView.setAdapter(scaleAdapter);
動畫效果分兩種:
第一種:adapter初始化item的動畫效果
第二種:ItemAnimator定義的動畫效果
第一種動畫效果使用了裝飾者模式,需要再封裝一層,然后通過setAdapter添加進去。
第二種直接和平時使用一樣。
除此之外,ItemAnimator還有以下高級功能:
設(shè)置動畫時長
- mRecyclerView.getItemAnimator().setAddDuration(1000);
- mRecyclerView.getItemAnimator().setRemoveDuration(1000);
- mRecyclerView.getItemAnimator().setMoveDuration(1000);
- mRecyclerView.getItemAnimator().setChangeDuration(1000);
插值器
- SlideInLeftAnimator animator = new SlideInLeftAnimator();
- animator.setInterpolator(new OvershootInterpolator());
- mRecyclerView.setItemAnimator(animator);
也可以通過自定義AnimateViewHolder實現(xiàn)類,實現(xiàn)其他動畫效果。
Adapter也有一些高級功能:
動畫時長
- AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAdapter(adapter);
- alphaAdapter.setDuration(1000);
- mRecyclerView.setAdapter(alphaAdapter);
插值器
- AlphaInAnimationAdapter alphaAdapter = new AlphaInAnimationAd
網(wǎng)頁題目:Recyclerview_helper多功能封裝,讓你的應(yīng)用更加自如
標(biāo)題URL:http://www.dlmjj.cn/article/dhsecse.html


咨詢
建站咨詢
