实现思路

滚动效果用实现。有个方法,可以滚动到指定位置(有滚动效果,不是直接到指定位置),不了解的看这里种定位滚动方式演示。每一个Item是一张长图,这样首尾相接滚动起来(滚到无限远)就是无限循环的效果,然后再改变滚动的速度,就可以了。

{;@(){(savedInstanceState);//全屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_main);mRecyclerView=findViewById(R.id.mRecyclerView);mRecyclerView.setAdapter(newSplashAdapter(MainActivity.this));mRecyclerView.setLayoutManager(newScollLinearLayoutManager(MainActivity.this));//smoothScrollToPosition滚动到某个位置(有滚动效果)mRecyclerView.smoothScrollToPosition(Integer.MAX_VALUE/2);}}

1.无限循环

将RecyclerView的Item数量设置成很大的值,用smoothScrollToPosition方法滚到很远的位置,就能实现这样的效果,很多banner轮播图的实现也是如此;

publicclassSplashAdapterextendsRecyclerView.AdapterSplashAdapter.ViewHolder{privateintimgWidth;publicSplashAdapter(Contextcontext){imgWidth=EasyUtil.getScreenWidth(context);}@OverridepublicViewHolderonCreateViewHolder(ViewGroupparent,intviewType){ViewitemView=LayoutInflater.from(parent.getContext()).inflate(R.layout.item_splash,parent,false);returnnewViewHolder(itemView);}@OverridepublicvoidonBindViewHolder(finalViewHolderholder,finalintposition){/*ViewGroup.LayoutParamslp=holder.item_bg.getLayoutParams();lp.width=imgWidth;lp.height=imgWidth*5;holder.item_bg.setLayoutParams(lp);*/}@OverridepublicintgetItemCount(){returnInteger.MAX_VALUE;}publicclassViewHolderextendsRecyclerView.ViewHolder{ImageViewitem_bg;publicViewHolder(finalViewitemView){super(itemView);item_bg=itemView.findViewById(R.id.item_bg);}}}

2.控制smoothScrollToPosition的滑动速度

参考RecyclerView调用smoothScrollToPosition()控制滑动速度,修改MILLISECONDS_PER_INCH的值即可

/***更改RecyclerView滚动的速度*/publicclassScollLinearLayoutManagerextendsLinearLayoutManager{privatefloatMILLISECONDS_PER_INCH=25f;//修改可以改变数据,越大速度越慢privateContextcontxt;publicScollLinearLayoutManager(Contextcontext){super(context);this.contxt=context;}@OverridepublicvoidsmoothScrollToPosition(RecyclerViewrecyclerView,RecyclerView.Statestate,intposition){LinearSmoothScrollerlinearSmoothScroller=newLinearSmoothScroller(recyclerView.getContext()){@OverridepublicPointFcomputeScrollVectorForPosition(inttargetPosition){returnScollLinearLayoutManager.this.computeScrollVectorForPosition(targetPosition);}@OverrideprotectedfloatcalculateSpeedPerPixel(DisplayMetricsdisplayMetrics){returnMILLISECONDS_PER_INCH/displayMetrics.density;//返回滑动一个pixel需要多少毫秒}};linearSmoothScroller.setTargetPosition(position);startSmoothScroll(linearSmoothScroller);}//可以用来设置速度publicvoidsetSpeedSlow(floatx){//自己在这里用density去乘,希望不同分辨率设备上滑动速度相同//0.3f是自己估摸的一个值,可以根据不同需求自己修改MILLISECONDS_PER_INCH=contxt.getResources().getDisplayMetrics().density*0.3f+(x);}}

3.图片宽度充满屏幕、高度按图片原始宽高比例自适应

@SuppressLint("AppCompatCustomView")publicclassFitImageViewextendsImageView{publicFitImageView(Contextcontext){super(context);}publicFitImageView(Contextcontext,AttributeSetattrs){super(context,attrs);}@OverrideprotectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){Drawabledrawable=getDrawable();if(drawable!=null){intwidth=MeasureSpec.getSize(widthMeasureSpec);intheight=(int)Math.ceil((float)width*(float)drawable.getIntrinsicHeight()/(float)drawable.getIntrinsicWidth());setMeasuredDimension(width,height);}else{super.onMeasure(widthMeasureSpec,heightMeasureSpec);}}}

4.这里需要注意的是、Item的根布局android:layout_height="wrap_content",否则图片高度会受限

android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"com.next.scrollimagedemo.view.FitImageViewandroid:id="@+id/item_bg"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/ww1"/!--ImageViewandroid:id="@+id/item_bg"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mipmap/ww2"android:scaleType="centerCrop"/--/android.support.constraint.ConstraintLayout

5.使RecyclerView不能手指触碰滑动

加层View屏蔽掉事件就好了

android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android.support.v7.widget.RecyclerViewandroid:id="@+id/mRecyclerView"android:layout_width="match_parent"android:layout_height="match_parent"/android.support.v7.widget.RecyclerViewTextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="#80000000"android:clickable="true"/ImageViewandroid:layout_width="wrap_content"android:layout_height="80dp"android:layout_marginTop="80dp"app:layout_constraintTop_toTopOf="parent"android:scaleType="centerInside"android:src="@mipmap/slogan"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"//android.support.constraint.ConstraintLayout

完成效果

html中图片自动循环滚动代码,实现长图片自动循环滚动效果相关推荐

  1. Python 图片透明化:使用代码轻松实现图片的透明化效果

    Python 图片透明化:使用代码轻松实现图片的透明化效果 在图像处理中,透明化是一个非常有用的技术.透明化可以让图像更加美观,使得我们可以轻松地将多张图片合成一张图片,同时还可以为图像添加各种特效. ...

  2. html焦点图自动播放纯代码,jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)...

    demo01.html 手动滚动图片 ul,li{margin:0;padding:0} img{border:0px;} #container{padding:40px;} #showArea im ...

  3. html背景图片随鼠标滚动条,博客音效代码、滚动条代码、单张图片滚动代码、背景图片代码、个性鼠标(2)...

    [99补]隐形博客音效代码 一句代码直接插入,比你从任何地方看到的都要简单: dynsrc=http://www.smartclub.com.cn/smart_sms/music/male/hktk. ...

  4. php百度自动推送代码,怎么设置百度自动推送代码安装教程-百度自动推送好处解析...

    网站设置自动推送可以大幅提高搜索引擎的抓取效率进而提高网站收录率,是SEO中非常重要的一个操作.博主今天以百度搜索引擎为例详细介绍各类网站添加百度自动推送的方法. 注意一点: 自动提交只有在网页被加载 ...

  5. 小程序图片缓存策略(不改代码更换OSS图片)

    昨天,后端给我提了一个问题:他更换了CDN上的图片,但是他打开小程序来看,还是旧图片,他尝试过删除小程序,重新进,还是旧图片. 我第一反应是:"你有没有清CDN缓存?" 他说:&q ...

  6. 给图片加水印的代码java_Java为图片加水印的代码

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.awt.AlphaComposite; import java.a ...

  7. html网页图片自动滚动代码,实现网页图片循环滚动的代码 上/下/左/右(html or asp)...

    向上: href="http://image2.sina.com.cn/gm/lineage2/whz/newwh/images/fy/images/images/ifimage/" ...

  8. 图片轮播php代码下载,jQuery带进度条滚动图片轮播代码

    jQuery带进度条滚动图片轮播代码 jQuery带进度条滚动图片轮播代码是一款带左右箭头按钮控制图片滚动轮播,标题和进度条显示效果. $(document).ready(function(e) { ...

  9. 自动图片轮播php源码,js图片自动轮播代码分享(js图片轮播)

    1.利用图片width显示位置来播放图片,技术:.offsetWidth .aBtn[i].index = i .setInterval() .oUl[0].style.left =  .onclic ...

最新文章

  1. 【Webview相关问题】控制字符引发的惨案及Base64
  2. poll()函数详解
  3. React是什么及特点
  4. shell关闭指定进程
  5. Serverless 风暴来袭,前端工程师如何应对?
  6. 成也炒作,败也炒作?孙宇晨遭遇最大信任危机
  7. 2.JAVA-基础语法以及String的介绍
  8. 【加密解密】密码学学习
  9. 大楼通信综合布线系统_建筑智能化,智能大楼防雷系统设计在综合布线中的重要性...
  10. 安装oracle12c之前,centos7安装oracle12c数据库的坑
  11. 【气体扩散】基于改进的遗传算法求解高斯烟羽模型模拟气体扩散含Matlab代码
  12. Android技术分享| 自定义LayoutManager
  13. 《VoIP技术构架(第2版·修订版)》一1.7 小结
  14. 恒指赵鑫:8.9恒指德指实盘指导记录总结与晚盘前瞻
  15. 如何将小程序代码上传到腾讯云服务器
  16. #国产工业软件#外行人看工业软件,接轨还是出轨?
  17. electron与jquery起冲突,使用jquery报错解决方法
  18. 4405. 统计子矩阵
  19. 2021-01-06
  20. 【渝粤教育】广东开放大学 计算机导论 形成性考核 (51)

热门文章

  1. C#与Word文档的交互
  2. 怎么将图片在线转成PDF
  3. JSON字符串转数组并取值
  4. 100例(p019—p021)
  5. 2021年电子合同最新政策汇总,29项举措鼓励各行业推广应用
  6. 一个系统测试的完整过程
  7. 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍
  8. 转载:SRT传输库评估报告(V1.0.0)
  9. [设计模式]设计模式SOLID原则
  10. 利用python做词频统计