关于Android RecyclerViewh5 苹果 解决滑动卡顿顿怎么解决

Android中RecyclerView嵌套滑动冲突解决的代码片段
作者:owner_of_dog_mi
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了Android中RecyclerView嵌套滑动冲突解决的代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在纵向RecyclerView嵌套横向RecyclerView时,如果纵向RecyclerView有下拉刷新功能,那么内部的横向RecyclerView的横向滑动体验会很差.(只有纯横向滑动时,才能滑动内部的横向RecyclerView,否则滑动事件就会影响到下拉刷新),添加拦截判断.
public class MySwipeRefreshLayout extends SwipeRefreshLayout {
private boolean mIsVpD
private final int mTouchS
private float startY;
private float startX;
public MySwipeRefreshLayout(Context context) {
super(context);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
public MySwipeRefreshLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
// 记录手指按下的位置
startY = ev.getY();
startX = ev.getX();
// 初始化标记
mIsVpDragger =
case MotionEvent.ACTION_MOVE:
// 如果viewpager正在拖拽中,那么不拦截它的事件,直接return false;
if (mIsVpDragger) {
// 获取当前手指位置
float endY = ev.getY();
float endX = ev.getX();
float distanceX = Math.abs(endX - startX);
float distanceY = Math.abs(endY - startY);
// 如果X轴位移大于Y轴位移,那么将事件交给viewPager处理。
if (distanceX & mTouchSlop && distanceX & distanceY) {
mIsVpDragger =
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 初始化标记
mIsVpDragger =
// 如果是Y轴位移大于X轴,事件交给swipeRefreshLayout处理。
return super.onInterceptTouchEvent(ev);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具RecyclerView滑动卡顿问题的一种解决方法 - CSDN博客
RecyclerView滑动卡顿问题的一种解决方法
RecyclerView是v7包的一个新控件,自推出以来广受Android程序爱好者的推崇,然而不得不说这个控件存在着一个比较严重的问题,就是滑动的时候会有不可容忍的卡顿现象出现。自发现这个问题后,我搜了许多关于RecyclerView的文章,但极少数提到这个问题,也并没有提到这个问题产生的原因以及解决方法。后来,我到StackOverflow里找了找,虽然提及这个问题的帖子不多,但还是找到了问题的原因:因为ViewHolder这个类里面的onCreateViewHolder方法和onBindViewHolder方法对时间非常敏感,需要在sub-millisecond times访问完,一切的读IO操作和network操作,还有类似的decode bitmap操作都比较耗时。所以不适宜在这两个方法里面执行这些操作。
一个解决方法是,可以将这些耗时的操作放到recyclerview.setAdapter(adapter)之前运行,运行完后再将需要的参数传入Adapter里,此处重写一个adapter类继承Adapter就可以了。解决后运行,滑动恢复了流畅。。
本文已收录于以下专栏:
相关文章推荐
首先:现象:recyclerview+glide+瀑布流
问题: 快速滑动出现,item错乱,图片闪烁,查了各种资料,找了各中原因,太难找了,关键问题就是,你从服务器获取图片的时候,当前的viewh...
解决RecyclerView卡顿的问题,找过很多问题的引发点,最后的解决灵感来自于这里:
onBindView里的IO操作导致RecyclerView scroll 卡顿
在项目中查找,发现onB...
对于列表,不管用RecyclerView 还是ListView,我们都会用ViewHolder来复用布局。但是,即使这样做了,还是会出现卡顿。
这时候我们就需要分析卡顿的原因是什么?为什么别人写的不卡...
问题由于加载图片过大时,在配置低的手机里滚动比较卡顿。这里记录下优化方法。使用/facebook/fresco是毫不疑问的,它很好解决了加载大图的需求。#解决方案 ...
上一篇 RecyclerView 卡顿优化(一)主要介绍了基本的优化思路及简单代码,对于布局不太复杂,基本够用了。
此篇主要介绍在上一篇的基础上,进行的进一步优化,及最后提供一个Demo(Recycl...
最近一直在捣鼓RecyclerView,今天闲来无事就把之前收集到的资料和使用过程中的体会整理一下,写了如下这篇博客。博客的结构跟之前的博客结构类似,首先简单交代背景,随后给出一个简单使用的实例,最终...
一、FPS评测应用流畅度不准确说到应用的流畅度,都会想到FPS,系统获取FPS的原理是:手机屏幕显示的内容是通过Android系统的SurfaceFLinger类,把当前系统里所有进程需要显示的信息合...
ListView和GridView列表在滑动时出现卡顿现象困扰了很多开发者,下面我们来总结一下优化方案:
1. 使用ViewHolder在adapter的getView方法中对convertView...
想必Tabs+ViewPager+ListView 结合使用的场景在你的Android手机中的各大应用里并不少见,比如最为典型的网易新闻。众所周知,用RecyclerView可以非常简单的替代掉Lis...
在项目中有时候遇到recyclerview嵌套recyclerview的情况,虽然不建议这样嵌套使用,但有时候也没办法。
代码如下:
1、在Activity中代码如下package ...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)NestedScrollView+RecyclerView 滑动卡顿简单解决方案 - 简书
NestedScrollView+RecyclerView 滑动卡顿简单解决方案
这个是在工作中发现的问题
以下xml是当前布局: &android.support.v4.widget.NestedScrollView
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
& &LinearLayout
android:id="@+id/linerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
&&!--省略部分组件--& &android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/&&/LinearLayout&&/android.support.v4.widget.NestedScrollView&
NestedScrollView中包含了LinearLayout,LinearLayout包含了一系列的组件,其中包括RecyclerView,RecyclerView和NestedScrollView都有滚动事件,这种情况下进行滑动操作,fling的操作体验很差,几乎就是手指离开的时候,滑动停止.
以下xml是改动后的布局:&android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
/&android:nestedScrollingEnabled="false"官方文档:Enable or disable nested scrolling for this view.If this property is set to true the view will be permitted to initiate nested scrolling operations with a compatible parent view in the current hierarchy. If this view does not implement nested scrolling this will have no effect. Disabling nested scrolling while a nested scroll is in progress has the effect of stopping
the nested scroll.这里设置为false,放弃自己的滑动,交给外部的NestedScrollView处理,就没有出现卡顿的现象了,并且有fling的效果
遇到问题,解决问题,总结问题}

我要回帖

更多关于 h5 苹果 解决滑动卡顿 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信