html中图⽚⾃动循环滚动代码,实现长图⽚⾃动循环滚动效果
实现思路
滚动效果⽤实现。有个⽅法,可以滚动到指定位置(有滚动效果,不是直接到指定位置),不了解的看这⾥种定位滚动⽅式演⽰。每⼀个Item
是⼀张长图,这样⾸尾相接滚动起来(滚到⽆限远)就是⽆限循环的效果,然后再改变滚动的速度,就可以了。
{;@(){(savedInstanceState);//全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);se 滚动到某个位置(有滚动效果)mRecyclerView.smoothScrollToPosition(Integer.MAX_VALUE/2);}}
1.⽆限循环
将RecyclerView的Item数量设置成很⼤的值,⽤smoothScrollToPosition⽅法滚到很远的位置,就能实现这样的效果,很多banner轮播
图的实现也是如此;
publicclassSplashAdapterextendsRecyclerView.AdapterSplashAdapter.ViewHolder{privateintimgWidth;publicSplashAdapter(Co {ScreenWidth(context);}@OverridepublicViewHolderonCreateViewHolder(ViewGroupparent,intviewType) {ViewitemView=LayoutInflater.Context()).inflate(R.layout.item_splash,parent,false);returnnewViewHolder(itemView);} {/*ViewGroup.LayoutParamslp=holder.LayoutParams();lp.width=imgWidth;lp.height=imgWidth*5;holder.item_bg.setLayou {returnInteger.MAX_VALUE;}publicclassViewHolderextendsRecyclerView.ViewHolder{ImageViewitem_bg;publicViewHolder(finalView {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);=context;}@OverridepublicvoidsmoothScrollToPosition(RecyclerViewrecyclerView,RecyclerView.Statestat {LinearSmoothScrollerlinearSmoothScroller=Context())
{@OverridepublicPointFcomputeScrollVectorForPosition(inttargetPosition)html滚动效果代码
{returnScollLinearLayoutManager.thisputeScrollVectorForPosition(targetPosition);}@OverrideprotectedfloatcalculateSpeedPer {returnMILLISECONDS_PER_INCH/displayMetrics.density;//返回滑动⼀个pixel需要多少毫
秒}};linearSmoothScroller.setTargetPosition(position);startSmoothScroll(linearSmoothScroller);}//可以⽤来设置速度publicvoidsetSpeedSlow(floatx){//⾃⼰在这⾥⽤density去乘,希望不同分辨率设备上滑动速度相同//0.3f是⾃⼰估摸的⼀个值,可以
根据不同需求⾃⼰修改MILLISECONDS_PER_Resources().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){Size(widthMeasureSpec);intheight=
(il((float)width*
(IntrinsicHeight()/(IntrinsicWidth());setMeasuredDimension(width,height);}Measure
4.这⾥需要注意的是、Item的根布局android:layout_height="wrap_content",否则图⽚⾼度会受限
straint.ConstraintLayoutxmlns:android="schemas.android/apk/res/android"android:layout_widt
-
ImageViewandroid:id="@+id/item_bg"android:layout_width="match_parent"android:layout_height="wrap_content"android:src="@mip -/straint.ConstraintLayout
5.使RecyclerView不能⼿指触碰滑动
加层View屏蔽掉事件就好了
straint.ConstraintLayoutxmlns:android="schemas.android/apk/res/android"xmlns:app="s auto"xmlns:tools="schemas.android/tools"android:layout_width="match_parent"android:layout_height="match_parent"to
完成效果
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论