当前位置: 首页 > 知识库问答 >
问题:

回收器的视图自定义布局管理器动画

陈毅
2023-03-14

根据Building a RecolyerView LayoutManager文章,我已经为RecolyerView创建了自己的自定义布局管理器,但是由于现有的一些文档,我无法找到从布局管理器中强制RecolyView重建动画的方法(就像使用notifyItemInserted或notifyItemDeleted时的动画一样)。这些动画由recyclerView及其项目动画师控制,开发人员只能控制项目的位置。因此,我有一个fill方法,它根据当前滚动位置和布局管理器的状态来放置子视图。这样的方法从两个地方调用,

> onLayoutChildren中的

  • (当布局管理器执行项的初始化放置或数据集更改时,将调用此方法)

    @Override
    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
       detachAndScrapAttachedViews(recycler);
       fill(recycler);
    } 
    

    垂直滚动

    /** calculate offset of views while scrolling, layout items on new places*/
    @Override
    public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {
        dy = scrollVerticallyInternal(dy);
        offsetChildrenVertical(-dy);
        if (condition) {
            //todo refactor it, blinking now without animation. 
            detachAndScrapAttachedViews(recycler);
        }
    
        fill(recycler);
        return dy;
    }
    

    我希望在某些条件的情况下,对某些视图执行稍微复杂一点的转换并使用动画。
    如果以某种方式启动布局子流,就可能达到此目的,这时RecyclerView将调用OnLayoutChildres方法。
    我可以使用DetachandScrattachedViews(Recyclerer)并启动OnLayoutChildres并运行默认的Fill进程,但这种转换将立即执行,而不需要任何动画。

    是否可以从布局管理器中强制recyclerView(或布局管理器)运行其动画?

  • 共有1个答案

    狄阳华
    2023-03-14

    当我们实现了自定义LayoutManager之后,我们还为ExpandLayoutManager制作了自己的动画。特别是,我们使用了ValueAnimator来动画LayoutManager外观的更改。如果您对我们的ExpandLayoutManager感到好奇,那么它可以在GitHub上使用。

    在这里您还可以找到一些创建自定义LayoutManager的有价值的细节:http://cases.azoft.com/create-custom-layoutManager-android/

     类似资料:
    • 要使用自定义的布局管理器,我们可以重新实现 addItem(), sizeHint(), setGeometry(), itemAt() 和 takeAt()这些方法。为了确保当应用程序界面的空间非常小时,布局大小不会为 0,我们需要重载 minimumSize()方 法。日常中我们也经常看到这样的情形,即应用程序窗口的长和宽的尺寸是互为依存的,那 么我们就需要重载 hasHeightForWid

    • 我需要用动画更改RecyclerView的GridLayoutManager跨距计数,但当用户在RecyclerView布局上做出收缩或缩放手势时,我需要这样做。动画应缓慢且持续地跟随用户的手势,直到用户从屏幕上松开手指。

    • 我正在建立一个应用程序,出版商在那里上传问题到数据库。发布者可以添加他们想要的任何问题,所以我使用了一个回收器视图来处理这个问题。当publisher单击按钮添加问题时,将按照我的recyclerview适配器中指定的方式膨胀新的布局。TopicQuestionsAdapter是回收器视图适配器的名称 现在,回收器视图布局由四个FABs组成,用于添加不同类型的问题和选项,一个textview和一个

    • 我一直在尝试使用此处的少量指导来实现带有RecyclerView的CollapsingToolbar:http://android-developers.blogspot.co.uk/2015/05/android-design-support-library.html 和这里的项目:https://github.com/chrisbanes/cheesesquare,我目前有以下布局: 来源如下

    • 当点击fab时,snack bar出现,为此我必须使用协调器布局将fab水平移动到snack bar上方。但现在回收器视图的前几个项目是不可见的。它只从项目3开始。能否有人帮助解决这一点和什么改变要做。提前谢谢!!

    • 我有一个父回收器视图,其中包含一个水平回收器视图作为其项目。在其中,我将显示分类视频。当我开始滚动水平回收器视图时,应用程序崩溃。 错误是: 我的代码是category类 垂直适配器 水平适配器