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

ItemTouchHelper 实现交互动画

onMove方法处理拖拽的回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item的位置的时候被调用onSwiped方法当Item被滑动删除到不见处理被删除后的逻辑。...左右滑出屏幕其他item补上 只要在item滑出屏幕,将对应的数据删掉,再调用RecyclerView的notifyItemRemoved()方法刷新布局即可。...让item执行了两种属性动画而已,ItemTouchHelper.Callback中有一个方法可以拿到item被拖拽或滑动的位移变化,那就是onChildDraw()方法,该方法设置item渐变和缩放属性动画...源码分析 SnapHelper旨在支持RecyclerView的对齐方式,也就是通过计算对齐RecyclerViewTargetView 的指定点或者容器的任何像素点。...16.自定义SnapHelper 自定义SnapHelper 19.自定义ItemDecoration分割线 需要自定义类实现RecyclerView.ItemDecoration类,并选择重写合适方法

3.8K20

recycleview的优化_recyclerview原理

调用notifyDataSetChanged()方法ViewHolder会进入上面的一级缓存mAttachedScrap,而不是进入缓存池pool,这样的好处:1)不会存在缓存池pool满的问题...,如果项目中复用RecycledViewPool,开启该功能会更好的实现复用。...移出屏幕的ViewHolder会先进入第一级缓存ViewCache,当第一级缓存空间已满,会考虑将一级缓存已有的ViewHolder移到RecyclerViewPool中去。...mDataList进行相应操作,无需关心mAdapter内数据显示更新问题,不用再调用notifyDataChanged等函数,因为SortedListAdapterCallback内的回调函数自动完成了...ImageView的属性,滑动,RecyclerView的缓存复用机制可能导致ViewHolder不会重新创建,也不会重新bindView,这样某些ItemView的图片是View属性动画变换后的图片

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

Linux+Windows: 程序崩溃 C++ 代码,如何获取函数调用栈信息

一、前言 二、Linux 平台 三、Windwos 平台 一、前言 程序执行过程 crash 是非常严重的问题,一般都应该在测试阶段排除掉这些问题,但是总会有漏网之鱼被带到 release 阶段。...因此,程序的日志系统需要侦测这种情况,代码崩溃的时候获取函数调用栈信息,为 debug 提供有效的信息。...这篇文章的理论知识很少,直接分享 2 段代码: Linux 和 Windows 这 2 个平台上,如何用 C++ 来捕获函数调用栈里的信息。 二、Linux 平台 1....捕获异常,获取函数调用栈信息 void sigHandler(int signum, siginfo_t *info, void *ctx) { const size_t dump_size =...利用以上几个神器,基本上可以获取到程序崩溃函数调用栈信息,定位问题,有如神助! ----

5.5K20

关于RecyclerView你知道的不知道的都在这了(下)目录正文

分级缓存,说得白点,就是不同的容器,容器之间有优先级,回收先将 ViewHolder 缓存到高优先级的容器,容器满了的话,那就将容器腾出个位置来,被腾出来的 ViewHolder 这时就可以放到优先级较低的容器...困惑1:交由 Recycler 来处理我能理解,毕竟 Recycler 只复用的过程开了个接口给开发者扩展使用,但回收的过程并没有开任何接口给开发者扩展。...并且,官方注释也给出一种应用场景:使用 ViewPager 各页面的 RecyclerView 有相同的 Item 布局结构。...机制,每帧的回调过程手动调用 setXXX() 来实现的动画效果。...附上鸿神公众号的一篇文章,大伙看这篇就行了。 Android中使用RecyclerView + SnapHelper实现类似ViewPager效果 ?

1.2K30

android实现录屏小功能

本文实例为大家分享了android实现录屏小功能的具体代码,供大家参考,具体内容如下 思路 android实现录屏功能有两种方案,一种是直接使用android自带的MediaProjectionManager...可以播放录制内容;需要上传,所以文件要小,所有只能选择第二种方式。 github地址 ? 整个项目生成的是一个文件夹,文件夹包含一个MP3文件,一个cw协议文件(存储用户的操作),图片。...整个画板是一个recyclerView,item包含一个涂鸦画板,图片控件。...onPageChangeListener.onScrollStateChanged(recyclerView, newState); //newState == RecyclerView.SCROLL_STATE_IDLE 当滚动停止触发防止滚动过程不停触发....OnGlobalLayoutListener() { @Override public void onGlobalLayout() { //会多次调用

2.3K31

关于RecyclerView你知道的不知道的都在这了(上)前言目录正文

竖直LinearLayoutManager示例.png Tv 应用,这种竖直方向的 LinearLayoutManager 使用场景大多都是用于显示菜单项,使用频率并不是特别高,但在手机应用,这种的使用频率算是特别高的了...瀑布流的方向可以选择水平或者竖直,两者只是方向上的区别而已,水平方向的效果图就不贴了。 有点细节需要注意一下,瀑布流样式布局 item ,并不是说一定按照某个方向某个顺序来布局。...首先需要明确,RecyclerView 的回收机制工作,会先将移出屏幕的 ViewHolder 放进一级缓存,当一级缓存空间已满,才会考虑将一级缓存已有的 ViewHolder 移到 RecyclerViewPool...另外,注释也说了,该方法的回调是 ViewHolder 放进 RecyclerViewPool 前,而 ViewHolder 放进 Pool 时会被 reset,因为上一节也说过,其实 ViewHolder...RecyclerView 也是一个 View,如果你有 RecyclerView 需要拦截触屏事件自己处理的需求,那么你可以选择继承 RecyclerView,也可以选择调用这个方法。

3.1K60

一次使用Kotlin实现酷炫多选操作的尝试

比如,当你Apple Music创建自己的播放列表,如果不切换屏幕或者无尽的滚动一遍被选中的歌曲,你都不清楚自己选择了哪些歌曲。 如果我们想使用筛选功能事情就变得更糟糕了。...未被选择的item左边的列表。选中的item右边的列表。...这里是我实现这个库的过程,Kotlin的这些特性给我带来了方便: 1.扩展函数 Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,而不用修改原来的类。 就拿安卓的View来说。...parent = this.parent if (parent is ViewGroup) { parent.removeView(this) } } 定义了上面的方法之后,你就可以项目的任何地方这样调用它了...不幸的是streams安卓开发还不能使用。   对我们的多选库来说,我们需要对除了指定id的child之外的所有子view使用透明度动画。

1.2K20

使用 ConcatAdapter 顺序连接其他 Adapter

这方面的一个用例,是列表头部和底部显示加载状态: 当列表从网络检索数据,我们想显示一个加载的图标;如果出现错误,我们要显示错误信息和重试按钮。...我们可以构造 ConcatAdapter 使用一个 ConcatAdapter.Config 对象来实现这样的效果。...显示加载状态的头部和底部的例子,两种 ViewHolder 事实上使用的是相同的内容,所以我们可以复用它们。...数据变更通知 当 ConcatAdapter 的一个 Adapter 调用了通知函数,ConcatAdapter 会在更新 RecyclerView 之前计算新的项目位置。...与 RecyclerViews 一样,我们要选择更精细的更新操作,一般情况下避免调用 Adapter.notifyDataSetChanged()。

52320

基于Android开发的天气预报app(源码下载)「建议收藏」

所以这边为了避免这种情况的不确定因素,我选择使用百度提供的免费地位接口,国内,百度和高德定位服务做得都还是不错的。使用百度定位api接口同样需要注册一个百度开发者账号,因为这不是本篇文章的重点。...调用函数传入一个回调接口的指针,当异步线程完成相应的耗时操作之后,再使用该指针调用回调函数即可实现异步线程与主线程的交互了。 城市列表的信息的获取到这里就算结束了。...2、获取天气信息 获取天气信息的网络操作是和获取城市信息的操作是一样的,使用上面那个网络异步函数即可,如果觉得不好,也可以使用网络开源项目包装的网络访问接口,比如说OKHttp。...项目中,就是一个view包含一个城市的天气信息,然后view又加入到ViewPager。...下拉刷新功能 本项目中的下拉刷新功能是使用SwipeRefreshLayout控件实现的,实现的步骤很简单: 1、布局文件实现下拉刷新功能的地方添加android.support.v4.widget.SwipeRefreshLayout

2.6K10

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

最近的一个电影票平台项目中,使用RecyclerView实现了仿猫眼的电影选择控件,如下图所示: 以上图为例,我们的需求如下: 每一次滑动都让图片保持中间。...(1)每一次滑动都让图片保持正中间 滑动保持图片在正中间,RecyclerView24.2.0之后,Google官方给我们提供了一个SnapHelper的辅助类,可以帮助我们实现每次滑动结束都保持居中位置...顾名思义,两者都可以是滑动结束item保持正中间,但是LinearSnapHelper可以一次滑动多个item,而PagerSnapHelper像ViewPager一样限制你一次只能滑动一个item...,我们如果需要滑动到某一位置,一般会使用RecyclerView.smoothScrollToPosition(idx)方法,但是在此处我们设置item的点击事件,不能直接使用这个方法,因为这个方法只会将...Glide框架加载图片,因为加载的是网络url,使用高斯模糊的时候我们需要使用方法将url转为bitmap,因为是网络,我们不能再主线程里完成,因此需要新开一个线程,Glide,可以设定一个占位符

1.1K00

实战 | 认识 RecyclerView

实现的过程,我也会将 RecyclerView 的每个部分揉碎了展现给大家,这样大家就可以自己的应用实现了。 RecyclerView 是 "何方神圣"?为什么选择它呢?...RecyclerView 使用 ViewHolder 模式,这样做可以提高性能,因为它无需频繁调用 findViewById() 方法即可访问表项的视图; RecyclerView 使用 LayoutManager...首先在 Android Studio 里创建一个工程,并且使用 Empty Activity 模板。设置项目名称,并且选择 Kotlin 作为项目所用的语言。... ViewHolder ,创建一个变量来引用 TextView,然后将它指向表项布局里对应的视图。...重写 onCreateViewHolder() 当 ViewHolder 创建的时候会调用该方法。该方法里进行初始化和填充 RecyclerView 的表项视图。

1.1K30

ViewPager2:官方Viewpager升级版来临

目前还只是推出了第一个预览版,我们可以直接引入来使用了: implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha01' 我们先来看看有哪些功能和使用上的变化...); 熟悉RecyclerView的同学都知道,SnapHelper用于辅助RecyclerView滚动结束将Item对齐到某个位置。...PagerSnapHelper的作用让滑动结束使当前Item居中显示,并且 限制一次只能滑动一页,不能快速滑动,这样就和viewpager的交互很像了。...layout_width="match_parent" android:layout_height="200dp" android:orientation="vertical" /> 代码设置一个普通的...不过目前viewpager2只是第一个预览版,还存在稳定性方面的问题,不建议大家引入到正式项目中来,尝尝鲜就好。

1.7K10

Android RecyclerView八个必会的面试技巧

参考简答:性能优化方面的经验主要包括: 使用合适的LayoutManager: 不同的布局需求需要选择合适的LayoutManager,避免过度嵌套。...ViewHolder模式: 使用ViewHolder来缓存视图,减少View的创建和销毁次数,从而提高性能。 异步加载: 加载大数据集合时,使用异步加载或分页加载来避免主线程阻塞,提高用户体验。...参考简答:ViewHolder模式通过Adapter创建一个ViewHolder类,用于缓存Item的View对象。这样滑动过程,可以避免频繁地调用findViewById。...参考简答: ViewHolder模式: RecyclerView使用ViewHolder模式来缓存视图。当ItemView滑出屏幕,对应的ViewHolder会被缓存,而不是立即销毁。...当需要新的ItemView,可以从缓存获取ViewHolder,避免频繁的View创建和销毁。

20420

kotlin-android-extensions插件也被废弃了?扶我起来

findViewById()函数去获取控件的实例,而是直接调用该控件xml定义的id名称,就能够设置其显示的内容了。...某天我将项目工程的Gradle版本升级到了最新,然后构建项目发现了这样一个警告提示: ?...然后onBindViewHolder()函数当中,直接调用holder.itemView再接上控件id的名称就可以使用它了。 这种写法确实简化了不少代码,但是这种写法对吗?...首先,我们onCreateViewHolder()函数调用FruitItemBinding的inflate()函数去加载fruit_item.xml布局文件,这和ViewBindingFragment...onCreate()函数,我们调用TitlebarBinding.bind()函数,让titlebar.xml布局和activity_main.xml布局能够关联起来。

2.7K31

Kotlin京东业务实战 | 强大又简洁的JVM语言

>>>> 为什么选择 Kotlin 简洁:这一点对于Android来说非常重要。项目所需要的库应该尽可能的小。...Kotlin使用了显式的null,这会强制我们必要进行null检查。 互操作:Kotlin可与Java语言无缝通信。...这样,每次使用该类型的变量,我们都需要进行null检查。比如说,如下代码将无法编译通过: var artist: Artist? = null?...如果不配置,插件代码不能打到apk调用时报ClassNotFoundException异常。...; 为了保证插件包大小,并且与主站代码不重复,引用类库使用provided; 解决方法:使用provided引入类库,在编译使用,最终不会被编译到apk;后期将配置环境放到aura更方便。

1.6K00

Android开发之漫漫长途 XV——RecyclerView

除了上述场景外,RecyclerView强制使用ViewHolder模式,我们知道ListView使用ViewHolder来进行性能优化,但是这不是必须得,但是RecyclerView是必须的,另外...RecyclerView还有许多优势,这里就不一一列举了,总体来说现在越来越多的项目使用RecyclerView,许多老旧项目也渐渐使用RecyclerView来替代ListView。...* 创建ViewHolderRecyclerViewDemo1Adapter创建一个继承RecyclerView.ViewHolder的静态内部类,记为ViewHolder * (RecyclerView...必须使用ViewHolder模式,这里的ViewHolder实现几乎与ListView优化时所使用ViewHolder一致) * RecyclerViewDemo1Adapter实现: *...因此:ItemDecoration的onDraw()绘制Item之前调用,ItemDecoration的onDrawOver()绘制Item之后调用

2.2K20
领券