首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通用RecylerAdapter,内置XRecyclerView,兼容上下拉与动画,高复用,一个Adapter通用所有页面,支持空页面,懒人专属

以前都是看文章的小喵同志,如今终于体也会到码字的不易,作为一个沉默寡言的程序猿,对于码文无数的前辈深表敬佩((/- -)/。...一个列表多种类型的item 正常情况下,对于每一个不同的列表,我们经常需要实现不同的Adapter ,来处理对应的逻辑,这样导致了我们有着许多重复的代码,优化代码(懒)这种动力的驱动下,个人实现了一个通用的...而且更是支持动态配置,上下拉的各种样式支持,具体ProgressStyle下有多种类型支持配置,解决了Adapter对瀑布流上拉的支持不够兼容的问题。...//是否屏蔽下拉 //xRecycler.setPullRefreshEnabled(false); //拉加载更多样式,也可以设置下拉 xRecycler.setLoadingMoreProgressStyle...(imageView); //本身也支持设置空局部 //xRecycler.setEmptyView(); xRecycler.setLoadingListener(new XRecyclerView.LoadingListener

36950
您找到你想要的搜索结果了吗?
是的
没有找到

Android ViewPager无限循环滑动并可自动滚动完整实例

代码基础的ViewPager下修改如下 : public class MainActivity extends AppCompatActivity { private ViewPager topVp...return imageViews.get(position%imageViews.size()); } }); } } 这样 之后就可以实现无限循环右滑了 但是程序刚启动...这样 就可以 实现 无限左右滑了 自动定时循环滑动: 下面增加自动定时左右滑动的功能 要实现自动滑动 最主要的是 实现定时器功能我这里使用 Handler+Runnable的方法在上述代码的基础...LinearLayout </RelativeLayout </LinearLayout 我们需要的原点 要放在 LinearLayout布局中 主要原理 就是向这个LinearLayout中动态添加...,因此 我们可以通过自己创建一个Scroller类 继承 Scroller 然后 通过反射 把ViewPager中的mScroller属性 设置成我们自己的可以设置时间的Scroller类即可 下面是代码

94410

Android开发之逐帧动画优化

Android如果使用逐帧动画的话,可以很方便地使用AnimationDrawable,无论是先声明xml还是直接代码里设置,都是几分钟的事,但使用AnimationDrawable有一个致命的弱点,...这里我们利用View.postDelayed方法延时替换图片,这样就能做到逐帧动画的效果了,然后替换图片之前,强制回收ImageView当前bitmap就可以减少内存消耗了,废话少说,上代码。...} @SuppressWarnings("unused") private void play(final int pFrameNo) { mImageView.postDelayed...循环播放和只播放一次,stopPlay是停止当前动画,而mLastPlayFrameNo是当前图片是所有图片中的第几张,循环中当当前的frameNo不等于mLastPlayFrameNo时回收图片,这个相当重要,处理不当可能会报出使用回收后的...bitmap的异常,因为有可能用户一开始ImageView设置的src就是第0张,又或者用户停止动画后又想重新播放,那么就会发生上面的情况。

1.7K20

Android自定义图片轮播Banner控件使用解析

图片轮播控件,可以说是每个App基本都会用到的。...它可以用来动态的展示多个图片,之前写过两篇博客:实现ViewPager无限循环的方式一和实现ViewPager无限循环的方式二,在这两篇博客中,分析了两种实现ViewPager无限循环的原理,但是使用的过程中...功能特点 支持自定义宽高比例 支持自定义图片切换时间 支持自定义指示点的颜色 支持自定义指示点的背景色 支持自定义指示点的高度 支持是否显示指示点 支持每个图片设置不同的点击事件 使用简单 <com.xiaomai.bannerview.BannerView...layoutParams.addRule(ALIGN_PARENT_BOTTOM); addView(indicator, layoutParams); } } 控件和自定义的属性都经过赋值和初始化了,接下来,该为设置图片资源了...imageView = new ImageView(container.getContext()); imageView.setImageResource(defaultImageResource);

1K30

【Android】造轮子:轮播图

需要轮播的图片 经过处理,变成这样 ? 处理后的轮播图 界面上看到的是三张图片,而实际ViewPager中的是这样的5张。...后面有两个LinearLayout,第一个LinearLayout用来放指示器,java代码中动态添加;第二个LinearLayout就用来显示Title了,当然,如果还需要显示的其他内容,可以在这个布局里面中添加...(runnable, delay); } } }; } /** * 设置指示器图片,setData之前调用...来加载图片 Picasso.with(context).load(url).into(imageView); //Imageview前添加一个半透明的黑色背景,防止文字和图片混在一起...源码地址:Github 以上有错误之处,感谢指出 投稿给鸿洋大神后,大神帮我测了下,发现这轮播图MOTO nexus 6,快速滑动会卡住,然后跳跃,类似应该在小米5也会复现。

1.8K50

ViewPager2打造轮播Banner

item> @dimen/_10dp 布局中引用即可代码如下<com.google.android.material.imageview.ShapeableImageView...这里选择使用官方提供的ShapeableImageView实现它的圆角需要写一个style ④我们都知道ViewPager2的适配器和RecyclerView的使用一样,这里就不贴代码了 ⑤最后我们给ViewPager2设置...)for (item in pic) { newList.add(item) } newList.add(pic[0]) 最后一位添加第一张图 当ViewPager2滑动到第0位和最后一位时的处理分别如下...位置 处理 currentPosition == 0 setCurrentItem(adapter.itemCount - 2, false) currentPosition == adapter.itemCount...ViewPager2是一个视图组,未调用setOnTouchListener是因为recyclerview拦截事件并首先调用onTouchEvent bannerVp.getChildAt(0)给它设置监听即可

1.7K30

2014-10-31Android学习------序列帧动画,开始,结束监听的解决--------GIF动画实现

,这个时候我们就可以去处理它的监听事件了 5.接下来就在实现这个布局文件的activity类中去实现这个接口中的函数就可以了 也就是重载 上面的步骤应该说的够清楚了,接下来我们就来看看 帧动画事件的监听处理...它是先从文件中把图片加载到动画这个类,然后再有这个类放在视图上,就想上篇文章,我们定义一个Movie类一样,不过这里是 AnimationDrawable, 首先我们来看看官方API是怎么样介绍的:...创建系列帧动画最简单的方法就是XML文件中去定义动画,把它们放在文件夹下,res/drawable/folder(folder是可以自己定义的,也可以不要这个文件),把他们设置为一个视图对象的背景。...ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image); img.setBackgroundResource(R.drawable.spin_animation...当在main.xml定义好之后,我们需要去处理activity类了: 1.onCreate(Bundle )类中先去加载这个布局 @Override protected void onCreate

1.3K30

Android编程实现悬浮窗获取并显示当前内存使用量的方法

这一块就是悬浮窗,可以随意拖动,动态显示当前内存使用量。 下面看一下代码是如何实现的: 悬浮窗的实现是用了一个service,为什么要用service呢?了解service特点的大体就会明白。...另:设置View高度和宽度的时候一 个错误,即在View的构造函数中获取getWidth()和getHeight(),当一个view对象创建时,android并不知道其大小,所以 getWidth()...和getHeight()返回的结果是0,真正大小是计算布局时才会计算,所以会发现一个有趣的事,即在onDraw()却能取得长宽的原因。...: 在这里是设置成了所有应用程序之上,状态栏之下的形式,当移动的时候,会调用case MotionEvent.ACTION_MOVE: 下面的代码主要是: private void updateViewPosition...希望本文所述对大家Android程序设计有所帮助。

1.4K21
领券