请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么ViewPager滑动卡顿

<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…) 老师遇到过这种问题吗?

正在回答 回答被采纳积分+3

2回答

Qiujuer 2019-05-01 23:50:42

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


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


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

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

0 回复 有任何疑惑可以回复我~
提问者 慕用1394343 2019-05-01 17:16:33

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

0 回复 有任何疑惑可以回复我~
  • Qiujuer #1
    跟手机也有一定关系,不同手机识别物理滑动的捕获速率不同的。
    回复 有任何疑惑可以回复我~ 2019-05-01 23:51:15

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信