为什么ViewPager滑动卡顿

来源:4-5 主界面搭建外层封装-5

慕用1394343

2019-04-30

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp">
        
        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:contentScrim="@color/white"
            app:expandedTitleTextAppearance="@style/TextAppearance.Title"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:titleEnabled="false">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="@dimen/len_224"
                android:contentDescription="@string/app_name"
                android:foreground="@color/black_alpha_48"
                android:scaleType="centerCrop"
                android:src="@drawable/bg" />


            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="@dimen/actionBarWithStatusBarSize"
                android:paddingTop="@dimen/statusBarSize"
                app:layout_collapseMode="pin">
                
            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/red_900"
        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior" />

</android.support.design.widget.CoordinatorLayout>

老师,上面是个布局的代码, 当我滑动AppbarLayout部分时,很流畅, 当我滑动ViewPager(换成RrecyclerView也一样)部分时,却会卡顿, 当我吧ViewPager放进AppbarLayout时,滑起来才流畅(当然,我觉得这儿滑的就是AppbarLayout…) 老师遇到过这种问题吗?

写回答

2回答

Qiujuer

2019-05-01

这个问题很正常,这是因为CoordinatorLayout +AppbarLayout有向上滑动的手势,ViewPager是横向的手势;所以滑动的时候容易出现手势被意外消费的情况。


简单来说就是横向滑动的手指如果幅度不大,并且有垂直手势加入就会被外层拦截了,然后就导致ViewPager的事件无法正常消费了,表现为你说的卡顿。


解决办法可以反射:ViewPager中的一个灵敏度的参数,把参数改改。

或者在ViewPager外部套上一层,用来做手势的捕获识别,这样来做优化也是可以的。

0
0

慕用1394343

提问者

2019-05-01

模拟器不卡,同学手机不卡  就我的卡   无语了

0
1
Qiujuer
跟手机也有一定关系,不同手机识别物理滑动的捕获速率不同的。
2019-05-01
共1条回复

手把手开发完整的即时通讯App 客户端+服务端+MVP架构

客户端+服务端+MVP架构+封装思想+主流框架

1749 学习 · 872 问题

查看课程