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

浅谈RecyclerView(完美替代ListView,GridView)

{    自定义适配器MyRecycleAdapter中,首先要写一个构造方法,因为有数据源,所有构造方法里必然有List private List strings...首先看一下以往我们对listview,gridview等等的删除某一项的操作 先在数据源中删除该位置的数据,然后刷新整个适配器,那么就可能会造成列表闪屏的问题,还有为了删除添加一个数据项而操作整个数据源的问题..., int position) { items.add(position, item); //数据源先添加该数据 notifyItemInserted(position); //某个位置刷新即可...items.indexOf(item); items.remove(position); //数据源先删除该数据 notifyItemRemoved(position); //某个位置删除即可...{ 123 public ImageView imageView; 124 public TextView textView; 125 126 public

2.2K60

【翻译】MotionLayout实现折叠工具栏(Part 1)

当然了,如果你已经自己的 App 中使用了,那么你在学会了这里的知识后也没什么必要做更改。...展开和折叠状态下, RecyclerView 列表的上边缘是处于不同位置的,因为它被约束到了 ID 为 toolbar_image 的 ImageView 图片下边缘,而这个过渡动画的实现正是由于控制着这个位置变量的值...通过改变图片的高度,这会导致 RecyclerView 的上边缘的移动,因为后者正是约束图片的下边缘位置。...我们所做的另一件事情则是改变边距大小( margins ),以及如何让 TextView 文本的位置相对于 ImageView 图片的位置而固定。...折叠状态下它会垂直居中,而在展开状态下它会对齐底部,因此 TextView 会更多的相对于 ImageView 的大小尺寸来进行相关设定。

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

几行代码搞定画廊效果

首先我们拿到布局,应该想到,上面的大图应该是一个ImageView,而下面是一个可横向滑动View,因为横向滑动的View并没有多少选择,所以这里我选择了recyclerView,这里看基本的布局: 这个RectImageView继承了ImageView,onmeaure的时候使高度和宽度相等,这个非常简单,这里就不提了...我们获取了一些必要的参数,比如当前itemView和ImageViewwindow中的位置,这样才能做动画的参数值,但是该怎么样做动画呢,首先属性动画虽然能改变view的属性,但是并不能改变view在当前层级的位置...接下来就好写多了,我们方法内,执行动画,监听动画结束即可,动画结束时,我们需要给真实的itemView和imageView赔礼道歉,并把它们放出来并且换一身新衣服了。...我们再点击的时候进行执行 CanScroll.canScroll((RecyclerView) rv,false);动画完成的监听里执行 CanScroll.canScroll((RecyclerView

1K10

手把手教你用RecyclerView实现猫眼电影选择效果

(1)每一次滑动都让图片保持正中间 滑动保持图片在正中间,RecyclerView24.2.0之后,Google官方给我们提供了一个SnapHelper的辅助类,可以帮助我们实现每次滑动结束都保持居中位置...,如下图所示: 如果想要是第0位置的图片保持中间,我们需要动态设置第0位置的图片的左边距为 (屏幕宽度-自定义ImageView图片宽度-自定义ImageView的Margin)/2,例如我自定义的...动态修改item的LayoutParams,我们不要在自定义的Adapter里直接更改,官方提供了ItemDecoration的api,可以给recyclerview的item添加装饰,我们在这里自定义一个继承...中,我们如果需要滑动到某一位置,一般会使用RecyclerView.smoothScrollToPosition(idx)方法,但是在此处我们设置item的点击事件时,不能直接使用这个方法,因为这个方法只会将...recyclerview滑动到idx位置的item可见便停止了,而无法移动到中间。

1.1K00

Android 知乎广告效果实现代码

肯定要自定义view了,一个类似imageView的控件,还要给它一个值用来指定广告图片的显示位置。...解决: 1.窗户问题首先想到imageView的scaleType属性,而scaleType中只有matrix和center可以不缩放图片的情况下显示一张大图中的部分,center始终显示图片中间部分...(此番解释只针对继承已有的imageview,textview等,如果是继承View,super位置就很随意了,因为super是个空实现) drawable.setBounds(l,t,r,b)方法 这个方法给图片设定一个绝对位置范围...关系就出来了: 广告item位置 / 广告有效移动距离 = dy / 图片有效移动距离 重写RecyclerView.OnScrollListener中的onScrolled方法,我们要得到:广告item...位置 和 广告有效移动距离 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled

1.3K40

一篇博客理解Recyclerview的使用

了解了RecyclerView的一些控制之后,紧接着来看看它的Adapter的写法,RecyclerView的Adapter与ListView的Adapter还是有点区别的,RecyclerView.Adapter...中添加这个回调接口: 例子2:可以点击的RecyclerView 原工程基础上对Adapter进行修改,添加OnItemClickListener接口,由于具体点击后的逻辑是交给MainActivity...(R.id.iv_item); } } } 效果如下: 4.自定义RecyclerView实现滚动时内容联动 例子3:RecyclerView制作相册效果 效果:原工程的基础上进行修改...OnLongClickListener() { @Override public boolean onLongClick(View v) { //得到当前点击item的位置...OnLongClickListener() { @Override public boolean onLongClick(View v) { //得到当前点击item的位置

59830

android实现RecyclerView列表单选功能

或者GONE 都可以,推荐使用INVISIBLE它会占用布局位置但是不显示,这样可以避免布局中其他控件因为勾选布局的消失而轻微变动位置 2.将适配器类中的onCreateViewHolder方法重写添加按键监听...,onBindViewHolder方法中重写添加判断点击的位置(具体原理请查看下面贴的代码) PS: RecyclerView的实现全部方法就不贴出来了,本人的博客中有RecyclerView各种实现效果文章...(View itemView) { super(itemView); mListImage = (ImageView)itemView.findViewById(R.id.DeviceList_ImageView...holder.mListNameText.setText(deivceListData.getmDeviceListDataNameText()); /* onBindViewHolder 方法可能是class...里for添加了其他视图 引入mposition与当前的position判断,判断点击的位置上显示打勾图片,在其他位置上不显示打勾 */ if (position == mposition) { holder.mListSelect.setVisibility

72710

Android使用RecyclerView实现今日头条频道管理功能

当滑动拖拽的时候,通知适配器来交换两个子控件的显示位置更改数据源,使数据源与子空间显示内容一致。 这就是实现的基本思路,是不是很简单?...我们所要做的就是触摸事件之后,如何去改变去更新Adapter和改变我们的数据。...{ public ImageView iv_icon; public TextView tv_des; public MyViewHolder(View itemView) {...) itemView.findViewById(R.id.tv_des); } } 解释一下onMove方法,例如:我们的数据是[1,2,3,4,5,6],当6移动到3的位置时,那么数据源最后变化为...但是显示的时候我们先是将当前position和targetposition对调[1,2,6,4,5,3],然后取出[4,5,3]进行右移一位,这样数据源就对上了。

1.4K31

RecyclerView优化实战指南

Android 开发中,RecyclerView 是一个非常常用的组件,用于展示大量数据。然而,如果不进行优化,RecyclerView 可能会导致 UI 卡顿、内存泄漏等问题。...RecyclerView 还提供了一些回调函数,允许你视图复用时进行一些自定义操作。 RecyclerView 可以大大简化开发过程,但是如果不进行优化,它可能会导致一些性能问题。...以下是异步加载的示例: onBindViewHolder 中使用线程池 executor 和 ImageLoader 下载图片,并在下载完成后将其设置到 ImageView 上。...禁止自动滑动 当数据项发生变化,RecyclerView 默认会自动滚动到新位置。...使用预加载 使用预加载技术可以使 RecyclerView 滑动过程中提前加载更多数据,保证滑动的流畅性和用户体验。

42420

Android属性动画实现图片从左到右逐渐消失

(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); Log.i...animation) { } @Override public void onAnimationEnd(Animator animation) { //当图片发生点击时可以通过下面代码将图片复位到原来位置...;如果我们不进行复位操作,此时ImageView位置由于平移动画发生改变,当我们显示另一张图片可能会发生显示不全情况 当动画终止(可能自然终止,也可能调用了动画的cance()方法),会响应其结束的监听方法...,然后我们该方法复位图片的位置即可: animator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart...animation) { } }); 动画实现的两种方式: 直接通过组件的animator()方式可以实现动画的链式调用,并且可以通过其withEndAction()或者withStartAction()方法动画启动和结束的时候执行一些逻辑

1.8K40

Mvvm、RxJava、Retrofit 三剑合璧

,专注自己的数据处理就可以了,如果是MVP遇到UI更改,就可能需要改变获取UI的方式,改变更新UI的接口,改变从UI上获取输入的代码,可能还需要更改访问UI对象的属性代码等等。...它也是一个ViewModel,但是它是RecyclerView每一个item的ViewModel,item加载时也和普通布局一样,也是通过绑定一个ViewModel来加载数据的,看到这就明白了吧,这就是...要根据type获取layout,为什么不把layout的id放在T类型的bean里面呢,因为onCreateViewHolder()的参数里只有type,没有position, 我们没有办法获取到每个位置的...ImageView的说完了,RecyclerView自然就简单了。...另外还有一点需要提下,如果一个控件的某个属性没有set方法,也是需要用这种方式写的。如果是自定义View的属性,也是可以用这种方式写的。

2.5K20

Android的ListView和RecyclerView的基本用法

Android5.0版本之后,Android官方推出了一个新的控件:RecyclerView ,完全解耦的设计使得RecyclerView比起ListView灵活了太多,应用的场合也非常广泛。...中的位置 */ @Override public void onItemClick(AdapterView<?...Activity来显示RecyclerView,笔者这里选择的是新建一个Activity来显示RecyclerView: 因为RecyclerViewandroid5.0版本新增support.v7...库中,并不是SDK中,所以我们要进行依赖声明:app中的build.gradle文件中加入以下代码: compile 'com.android.support:recyclerview-v7:25.1.1...的显示子项 * 每个 RecyclerView 控件的 item 调用这个方法之后调用 * onBindViewHolder 方法之后才能作为一个子项显示 RecyclerView

1.1K50

手把手教你打造RecyclerView滚动特效

= NO_VIEW) { ImageView imageView = (ImageView) viewGroup.findViewById(mImageViewId);...turningLine - itemTop) / itemHeight; return (int) (percent * 100); } } } 计算滑动块底部的位置...不足及期望 这样的动画效果固然有趣,但是其仍存在很多不足,就自己发现的问题,列不足如下: 每一个Item都监听RecyclerView的滑动事件非常耗时,低端机上可能存在滑动不流畅的现象,尚未测试,但在红米...因ImageView设置的ScaleType为CenterCrop,所以图片右侧变化放大过程中会有类似于金属拉丝的效果,因此图片缩放的scale最好在原来的基础上乘以1.1,单个Item的动画中此问题已解决...在此,期望有耐心将本文看完的小伙伴们文章下方的评论里留下宝贵意见,一起来完善这个效果。另,若有小伙伴Github上看到有这样效果的稳定的第三方库,希望可以文章下方评论中留下链接。

2.4K10

Android RecyclerView使用简述

八、RecyclerView动态更改数据 ① 创建布局item和数据Bean ② 适配器和显示数据 ③ 刷新选中位置数据 九、RecyclerView左右滑动和上下拖动 ① 显示数据 ② ItemTouchHelper...八、RecyclerView动态更改数据   之前我们显示数据都是直接显示的,后面使用过程中并没有对数据进行更改,那么下面我们来进行更改试试看。...,然后更改选中状态,通过notifyItemChanged()表示刷新适配器数据,不过这里只刷新当前位置的数据,然后记录选中的个数,最后显示选中个数,就是这么简单,下面我们运行一下看看。   ...九、RecyclerView左右滑动和上下拖动   操作RecyclerView的时候,我们还会有例如Item侧滑删除这样的操作,或者上下拖动更改Item的位置。...onMove(),实现拖动item的位置的更换,修改代码如下所示: @Override public boolean onMove(@NonNull RecyclerView recyclerView

2.2K21
领券