RecyclerView下拉刷新和上拉加載更多_第1頁
RecyclerView下拉刷新和上拉加載更多_第2頁
RecyclerView下拉刷新和上拉加載更多_第3頁
RecyclerView下拉刷新和上拉加載更多_第4頁
RecyclerView下拉刷新和上拉加載更多_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

RecyclerView下拉刷新和上拉加載更多谷歌在v4包下提供了一個SwipeRefreshLayout來實現(xiàn)RecyclerView的下拉刷新,但是此類并不提供上拉加載更多的一個功能,網(wǎng)上有很多的博客實現(xiàn)了上拉加載,但是上拉的效果圖和之前的一樣,今天我就實現(xiàn)類似于SwipeRefreshLayout刷新的效果圖。圓形進(jìn)度條的實現(xiàn)類MaterialProgressDrawable,之后解決的就是什么時候讓圓形進(jìn)度條顯示,如何讓圓形進(jìn)度條隨著手指上下滑動。就是在dispatchTouchEvent分發(fā)事件的時候,不斷的去檢測RecyclerView是否已經(jīng)下拉到底部了,這時就讓圓形進(jìn)度條顯示,如何再向上滑動就向上滑動,向下滑動就向下滑動,松開就計算滑動的高度是否符合加載的高度,符合就固定圓形進(jìn)度條讓其滾動,不符合就消失。判斷是否已經(jīng)到底部了[java]viewplaincopyprivatebooleancanPullUp(){RecyclerView.LayoutManagerlm=mRecyclerView.getLayoutManager();mLastVisiblePosition=getLastVisibleItemPosition();intcount=mRecyclerView.getAdapter().getItemCount();if(0==count){//沒有item的時候可以上拉加載returntrue;}elseif(mLastVisiblePosition==(count-1)){//滑到底部了可以上拉加載if(lm.findViewByPosition(count-1).getBottom()<=getMeasuredHeight()){returntrue;}}returnfalse;}不斷檢測滑動的位置,顯示圓形進(jìn)度條的位置[java]viewplaincopy@OverridepublicbooleandispatchTouchEvent(MotionEventevent){if(!mIsAllowLoadMore)returnsuper.dispatchTouchEvent(event);switch(event.getAction()){caseMotionEvent.ACTION_DOWN:mStartY=(int)event.getRawY();break;caseMotionEvent.ACTION_MOVE:if(!mStart){//如果不滿足上拉的條件就直接分發(fā)事件if(!canPullUp()){returnsuper.dispatchTouchEvent(event);}if(canPullUp()&&!mIsCanScoll){showRefreshArrow();mStartY=(int)event.getRawY();mIsCanScoll=true;}else{//mStartY=(int)event.getRawY();//hideRefreshArrow();//hide();}if(mVisibleCanScoll){intendY=(int)event.getRawY();intoffset=mStartY-endY;//System.out.println("----------------------offset:"+offset);LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();intbottomMargin=lp.bottomMargin;bottomMargin+=offset;if(bottomMargin>=PULL_IMAGE_SIZE_PX_MAX){bottomMargin=PULL_IMAGE_SIZE_PX_MAX;}if(bottomMargin<=-PULL_IMAGE_SIZE_PX){bottomMargin=-PULL_IMAGE_SIZE_PX;}lp.setMargins(lp.leftMargin,lp.topMargin,lp.rightMargin,bottomMargin);mImageView.setLayoutParams(lp);rotateAniamtor(bottomMargin*ROTATE_ANIM_ANGLE_PER);mStartY=endY;}LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();//如果按住上拉時,上拉箭頭向下滑動的時候事件不應(yīng)分發(fā)if(mVisable&&lp.bottomMargin>-PULL_IMAGE_SIZE_PX){mIsDispatch=false;}elseif(mVisable&&lp.bottomMargin==-PULL_IMAGE_SIZE_PX){//等到上拉箭頭被隱藏掉的時候在分發(fā)事件mIsDispatch=true;}//是否分發(fā)事件if(!mIsDispatch){returnfalse;}else{returnsuper.dispatchTouchEvent(event);}}break;caseMotionEvent.ACTION_UP:caseMotionEvent.ACTION_CANCEL:if(!mStart){if(mVisibleCanScoll){LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();if(lp.bottomMargin>=PULL_IMAGE_SIZE_PX_EXECUTE){//lp.setMargins(lp.leftMargin,lp.topMargin,lp.rightMargin,PULL_IMAGE_SIZE_PX/3*2);//mImageView.setLayoutParams(lp);//start();getValueToTranslation();mPrepareAnimation=true;if(mOnPullListener!=null){mOnPullListener.onLoadMore(this);}}else{hideArrow();}}if(!mStart&&!mPrepareAnimation)hideArrow();}mIsCanScoll=false;break;}returnsuper.dispatchTouchEvent(event);}當(dāng)上拉松開時會有一個滑動的動畫[java]viewplaincopy/***執(zhí)行平移動畫*@paramfrom*@paramto*/privatevoidtranslationTo(intfrom,intto,finalbooleanisShow){//1.調(diào)用ofInt(int...values)方法創(chuàng)建ValueAnimator對象ValueAnimatormAnimator=ValueAnimator.ofInt(from,to);//2.為目標(biāo)對象的屬性變化設(shè)置監(jiān)聽器mAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener(){@OverridepublicvoidonAnimationUpdate(ValueAnimatoranimation){//3.為目標(biāo)對象的屬性設(shè)置計算好的屬性值intanimatorValue=(int)animation.getAnimatedValue();MarginLayoutParamsmarginLayoutParams=(MarginLayoutParams)mImageView.getLayoutParams();marginLayoutParams.bottomMargin=animatorValue;mImageView.setLayoutParams(marginLayoutParams);}});mAnimator.addListener(newAnimatorListenerAdapter(){@OverridepublicvoidonAnimationEnd(Animatoranimation){super.onAnimationEnd(animation);if(isShow){start();mPrepareAnimation=false;}else{hideRefreshArrow();hide();}}});//4.設(shè)置動畫的持續(xù)時間、是否重復(fù)及重復(fù)次數(shù)等屬性mAnimator.setDuration(100);//mAnimator.setRepeatCount(3);mAnimator.setRepeatMode(ValueAnimator.INFINITE);//5.為ValueAnimator設(shè)置目標(biāo)對象并開始執(zhí)行動畫mAnimator.setTarget(mImageView);mAnimator.start();}圓形進(jìn)度條隨著滑動的距離產(chǎn)生旋轉(zhuǎn)動畫[html]viewplaincopy/***旋轉(zhuǎn)動畫效果*/privatevoidrotateAniamtor(floatfrom){ObjectAnimatormAnimatorRotate=ObjectAnimator.ofFloat(mImageView,"rotation",from,from+1);mAnimatorRotate.setRepeatMode(Animation.INFINITE);mAnimatorRotate.setRepeatCount(1);mAnimatorRotate.setDuration(10);mAnimatorRotate.start();}圓形進(jìn)度條的陰影背景實現(xiàn)[java]viewplaincopy/***mImageView的背景*/privateDrawablegetShapeDrawable(){/***<layer-listxmlns:android="/apk/res/android"><!--第一層上部和左部偏移一定距離--><item><shapeandroid:shape="oval"><solidandroid:color="#f5f5f5"/><!--描邊--><strokeandroid:width="0.5dp"android:color="#99f5f5f5"/></shape></item><!--第二層下部和有部偏移一定距離--><itemandroid:left="2dp"android:top="2dp"android:bottom="2dp"android:right="2dp"><shapeandroid:shape="oval"><solidandroid:color="#ffffff"/><!--描邊--><!--<strokeandroid:width="0.33dp"android:color="#dedede"/>--></shape></item></layer-list>*///代碼實現(xiàn)GradientDrawablegradientDrawable=newGradientDrawable();gradientDrawable.setShape(GradientDrawable.OVAL);gradientDrawable.setColor(Color.parseColor("#f5f5f5"));intstroke=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,0.5f,getContext().getResources().getDisplayMetrics());gradientDrawable.setStroke(stroke,Color.parseColor("#99f5f5f5"));GradientDrawablegradientDrawable2=newGradientDrawable();gradientDrawable2.setShape(GradientDrawable.OVAL);gradientDrawable2.setColor(Color.parseColor("#ffffff"));LayerDrawabledrawable=newLayerDrawable(newDrawable[]{gradientDrawable,gradientDrawable2});intpadding=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,2,getContext().getResources().getDisplayMetrics());drawable.setLayerInset(1,padding,padding,padding,padding);////第一個參數(shù)1代表數(shù)組的第二個元素,為白色returndrawable;}好了,源碼就分析到這,如果發(fā)現(xiàn)bug或者有任何意見歡迎留言。源碼:[java]viewplaincopypackagecom.cj.recyclerview.refresh;importandroid.animation.Animator;importandroid.animation.AnimatorListenerAdapter;importandroid.animation.ObjectAnimator;importandroid.animation.ValueAnimator;importandroid.content.Context;importandroid.content.res.Resources;importandroid.graphics.Color;importandroid.graphics.drawable.Drawable;importandroid.graphics.drawable.GradientDrawable;importandroid.graphics.drawable.LayerDrawable;importandroid.support.annotation.ColorRes;importandroid.support.v4.widget.SwipeRefreshLayout;importandroid.support.v7.widget.GridLayoutManager;importandroid.support.v7.widget.LinearLayoutManager;importandroid.support.v7.widget.RecyclerView;importandroid.support.v7.widget.StaggeredGridLayoutManager;importandroid.util.AttributeSet;importandroid.util.TypedValue;importandroid.view.MotionEvent;importandroid.view.View;importandroid.view.ViewGroup;importandroid.view.animation.Animation;importandroid.view.animation.DecelerateInterpolator;importandroid.widget.ImageView;importandroid.widget.RelativeLayout;/***Createdbychenjon2016/9/28.*/publicclassPullRefreshLayoutextendsRelativeLayout{privateint[]colors={0xFFFF0000,0xFFFF7F00,0xFFFFFF00,0xFF00FF00,0xFF00FFFF,0xFF0000FF,0xFF8B00FF};privatefinalintCIRCLE_BG_LIGHT=0xFFFAFAFA;privateMaterialProgressDrawablemProgress;privateValueAnimatormValueAnimator;privatebooleanmStart=false;privatebooleanmVisable=false;privatestaticfinalintPULL_IMAGE_SIZE=40;privatestaticintPULL_IMAGE_SIZE_PX;//上拉View的大?。ㄏ袼兀﹑rivatestaticintPULL_IMAGE_SIZE_PX_MAX;//最大拉動的距離privatestaticintPULL_IMAGE_SIZE_PX_EXECUTE;//拉動到什么位置開始執(zhí)行privatestaticintPULL_IMAGE_SIZE_PX_EXECUTE_REFRESH;//刷新是所在的位置privatestaticfloatROTATE_ANIM_ANGLE_PER;//根據(jù)最大距離計算旋轉(zhuǎn)角度的比列privateImageViewmImageView;privatebooleanmIsFirst;privateintmStartY,mLastY;privateRecyclerViewmRecyclerView;//privateintmFirstVisiblePosition;privateintmLastVisiblePosition;privatebooleanmIsCanScoll;privatebooleanmVisibleCanScoll;privatebooleanmPrepareAnimation;//準(zhǔn)備執(zhí)行動畫privatebooleanmIsAllowLoadMore=true;//是否可以上拉刷新privatebooleanmIsDispatch=true;//是否分發(fā)事件publicPullRefreshLayout(Contextcontext){this(context,null);}publicPullRefreshLayout(Contextcontext,AttributeSetattrs){this(context,attrs,0);}publicPullRefreshLayout(Contextcontext,AttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);}/***是否允許下拉加載更多*@paramallowLoadMore*/publicvoidsetAllowLoadMore(booleanallowLoadMore){mIsAllowLoadMore=allowLoadMore;}publicbooleanisAllowLoadMore(){returnmIsAllowLoadMore;}/***設(shè)置進(jìn)度圈的顏色*@paramcolors如:0xFFFF0000*/publicvoidsetColorSchemeColors(int...colors){this.colors=colors;}/***設(shè)置進(jìn)度圈的顏色*@paramcolorResIds如:R.color.red*/publicvoidsetColorSchemeResources(@ColorResint...colorResIds){finalResourcesres=getResources();int[]colorRes=newint[colorResIds.length];for(inti=0;i<colorResIds.length;i++){colorRes[i]=res.getColor(colorResIds[i]);}setColorSchemeColors(colorRes);}@OverrideprotectedvoidonLayout(booleanchanged,intl,intt,intr,intb){super.onLayout(changed,l,t,r,b);if(!mIsFirst){createProgressView();over:for(inti=0;i<getChildCount();i++){ViewchildView=getChildAt(i);if(childViewinstanceofSwipeRefreshLayout){ViewGroupviewGroup=(ViewGroup)childView;for(intj=0;j<viewGroup.getChildCount();j++){ViewchildViewJ=viewGroup.getChildAt(j);if(childViewJinstanceofRecyclerView){mRecyclerView=(RecyclerView)childViewJ;breakover;}}}if(childViewinstanceofRecyclerView){mRecyclerView=(RecyclerView)childView;breakover;}}mIsFirst=true;}}@OverridepublicbooleandispatchTouchEvent(MotionEventevent){if(!mIsAllowLoadMore)returnsuper.dispatchTouchEvent(event);switch(event.getAction()){caseMotionEvent.ACTION_DOWN:mStartY=(int)event.getRawY();break;caseMotionEvent.ACTION_MOVE:if(!mStart){//如果不滿足上拉的條件就直接分發(fā)事件if(!canPullUp()){returnsuper.dispatchTouchEvent(event);}if(canPullUp()&&!mIsCanScoll){showRefreshArrow();mStartY=(int)event.getRawY();mIsCanScoll=true;}else{//mStartY=(int)event.getRawY();//hideRefreshArrow();//hide();}if(mVisibleCanScoll){intendY=(int)event.getRawY();intoffset=mStartY-endY;//System.out.println("----------------------offset:"+offset);LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();intbottomMargin=lp.bottomMargin;bottomMargin+=offset;if(bottomMargin>=PULL_IMAGE_SIZE_PX_MAX){bottomMargin=PULL_IMAGE_SIZE_PX_MAX;}if(bottomMargin<=-PULL_IMAGE_SIZE_PX){bottomMargin=-PULL_IMAGE_SIZE_PX;}lp.setMargins(lp.leftMargin,lp.topMargin,lp.rightMargin,bottomMargin);mImageView.setLayoutParams(lp);rotateAniamtor(bottomMargin*ROTATE_ANIM_ANGLE_PER);mStartY=endY;}LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();//如果按住上拉時,上拉箭頭向下滑動的時候事件不應(yīng)分發(fā)if(mVisable&&lp.bottomMargin>-PULL_IMAGE_SIZE_PX){mIsDispatch=false;}elseif(mVisable&&lp.bottomMargin==-PULL_IMAGE_SIZE_PX){//等到上拉箭頭被隱藏掉的時候在分發(fā)事件mIsDispatch=true;}//是否分發(fā)事件if(!mIsDispatch){returnfalse;}else{returnsuper.dispatchTouchEvent(event);}}break;caseMotionEvent.ACTION_UP:caseMotionEvent.ACTION_CANCEL:if(!mStart){if(mVisibleCanScoll){LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();if(lp.bottomMargin>=PULL_IMAGE_SIZE_PX_EXECUTE){//lp.setMargins(lp.leftMargin,lp.topMargin,lp.rightMargin,PULL_IMAGE_SIZE_PX/3*2);//mImageView.setLayoutParams(lp);//start();getValueToTranslation();mPrepareAnimation=true;if(mOnPullListener!=null){mOnPullListener.onLoadMore(this);}}else{hideArrow();}}if(!mStart&&!mPrepareAnimation)hideArrow();}mIsCanScoll=false;break;}returnsuper.dispatchTouchEvent(event);}privatevoidhideArrow(){LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();//lp.setMargins(lp.leftMargin,lp.topMargin,lp.rightMargin,-PULL_IMAGE_SIZE_PX);//mImageView.setLayoutParams(lp);translationTo(lp.bottomMargin,-PULL_IMAGE_SIZE_PX,false);}privatevoidshowRefreshArrow(){mImageView.setVisibility(View.VISIBLE);visable();}/***隱藏箭頭顯示的載體ImageView*/privatevoidhideRefreshArrow(){mImageView.setVisibility(View.GONE);}privatebooleancanPullUp(){if(mRecyclerView==null||mRecyclerView.getAdapter()==null)returnfalse;RecyclerView.LayoutManagerlm=mRecyclerView.getLayoutManager();mLastVisiblePosition=getLastVisibleItemPosition();intcount=mRecyclerView.getAdapter().getItemCount();if(0==ount){//沒有item的時候也可以上拉加載returntrue;}elseif(mLastVisiblePosition==(count-1)){//滑到底部了if(lm.findViewByPosition(count-1).getBottom()<=getMeasuredHeight()){returntrue;}}returnfalse;}/***獲取底部可見項的位置**@return*/privateintgetLastVisibleItemPosition(){RecyclerView.LayoutManagerlm=mRecyclerView.getLayoutManager();intlastVisibleItemPosition=0;if(lminstanceofGridLayoutManager){lastVisibleItemPosition=((GridLayoutManager)lm).findLastVisibleItemPosition();}elseif(lminstanceofLinearLayoutManager){lastVisibleItemPosition=((LinearLayoutManager)lm).findLastVisibleItemPosition();}returnlastVisibleItemPosition;}/***創(chuàng)建刷新View和初始化一些數(shù)據(jù)*/privatevoidcreateProgressView(){mImageView=newImageView(getContext());intsize=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,PULL_IMAGE_SIZE,getContext().getResources().getDisplayMetrics());PULL_IMAGE_SIZE_PX=size;PULL_IMAGE_SIZE_PX_MAX=PULL_IMAGE_SIZE_PX*2;PULL_IMAGE_SIZE_PX_EXECUTE=PULL_IMAGE_SIZE_PX;PULL_IMAGE_SIZE_PX_EXECUTE_REFRESH=PULL_IMAGE_SIZE_PX/3*2;ROTATE_ANIM_ANGLE_PER=(360.0f/PULL_IMAGE_SIZE_PX_MAX);LayoutParamslp=newLayoutParams(size,size);lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);lp.addRule(RelativeLayout.CENTER_HORIZONTAL);lp.setMargins(lp.leftMargin,lp.topMargin,lp.rightMargin,-PULL_IMAGE_SIZE_PX);mImageView.setLayoutParams(lp);mImageView.setBackground(getShapeDrawable());addView(mImageView);mImageView.setVisibility(View.GONE);mProgress=newMaterialProgressDrawable(getContext(),mImageView);mProgress.setBackgroundColor(CIRCLE_BG_LIGHT);//圈圈顏色,可以是多種顏色mProgress.setColorSchemeColors(colors);//設(shè)置圈圈的各種大小mProgress.updateSizes(MaterialProgressDrawable.LARGE);mImageView.setImageDrawable(mProgress);}/***mImageView的背景*/privateDrawablegetShapeDrawable(){/***<layer-listxmlns:android="/apk/res/android"><!--第一層上部和左部偏移一定距離--><item><shapeandroid:shape="oval"><solidandroid:color="#f5f5f5"/><!--描邊--><strokeandroid:width="0.5dp"android:color="#99f5f5f5"/></shape></item><!--第二層下部和有部偏移一定距離--><itemandroid:left="2dp"android:top="2dp"android:bottom="2dp"android:right="2dp"><shapeandroid:shape="oval"><solidandroid:color="#ffffff"/><!--描邊--><!--<strokeandroid:width="0.33dp"android:color="#dedede"/>--></shape></item></layer-list>*///代碼實現(xiàn)GradientDrawablegradientDrawable=newGradientDrawable();gradientDrawable.setShape(GradientDrawable.OVAL);gradientDrawable.setColor(Color.parseColor("#f5f5f5"));intstroke=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,0.5f,getContext().getResources().getDisplayMetrics());gradientDrawable.setStroke(stroke,Color.parseColor("#99f5f5f5"));GradientDrawablegradientDrawable2=newGradientDrawable();gradientDrawable2.setShape(GradientDrawable.OVAL);gradientDrawable2.setColor(Color.parseColor("#ffffff"));LayerDrawabledrawable=newLayerDrawable(newDrawable[]{gradientDrawable,gradientDrawable2});intpadding=(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,2,getContext().getResources().getDsplayMetrics());drawable.setLayerInset(1,padding,padding,padding,padding);////第一個參數(shù)1代表數(shù)組的第二個元素,為白色returndrawable;}/***隱藏箭頭*/privatevoidhide(){if(mValueAnimator!=null){mValueAnimator.cancel();mVisable=false;mVisibleCanScoll=false;}}privatevoidvisable(){if(mValueAnimator==null){mValueAnimator=mValueAnimator.ofFloat(0f,1f);mValueAnimator.setDuration(10);mValueAnimator.setInterpolator(newDecelerateInterpolator());mValueAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener(){@OverridepublicvoidonAnimationUpdate(ValueAnimatoranimation){floatn=(float)animation.getAnimatedValue();//圈圈的旋轉(zhuǎn)角度mProgress.setProgressRotation(n*0.5f);//圈圈周長,0f-1FmProgress.setStartEndTrim(0f,n*0.8f);//箭頭大小,0f-1FmProgress.setArrowScale(n);//透明度,0-255mProgress.setAlpha((int)(255*n));}});mValueAnimator.addListener(newAnimatorListenerAdapter(){@OverridepublicvoidonAnimationEnd(Animatoranimation){super.onAnimationEnd(animation);mVisable=true;}});}if(!mValueAnimator.isRunning()){if(!mVisable){//是否顯示箭頭mProgress.showArrow(true);mValueAnimator.start();mVisibleCanScoll=true;}}}privatevoidstart(){if(mVisable){if(!mStart){mProgress.start();mStart=true;}}}/***計算執(zhí)行動畫的距離參數(shù)*/privatevoidgetValueToTranslation(){//如果mImageView還沒有被創(chuàng)建出來是不會執(zhí)行的if(mImageView!=null){LayoutParamslp=(LayoutParams)mImageView.getLayoutParams();intbottomMargin=lp.bottomMargin;//執(zhí)行平移translationTo(bottomMargin,PULL_IMAGE_SIZE_PX_EXECUTE_REFRESH,true);}}privatevoidstop(){if(mStart){mProgress.stop();mStart=false;mVisable=false;mVisibleCanScoll=false;}}/***執(zhí)行平移動畫*@paramfrom*@paramto*/privatevoidtranslationTo(intfrom,intto,finalbooleanisShow){//1.調(diào)用ofInt(int...values)方法創(chuàng)建ValueAnimator對象

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論