【问题标题】:Horizontal RecyclerView with nice animation Android具有漂亮动画 Android 的水平 RecyclerView
【发布时间】:2018-02-12 11:58:25
【问题描述】:

如何制作带有漂亮 UI 动画的水平回收视图。 注意:我可以制作水平回收视图。但它怎么能从中间开始,当滚动它开始时呢?其次,背景图像将根据滚动动画可见或不可见。

我想做这样的事情,我已经尝试过 ItemDecoration,但是当它快速加载时,如果从中心开始有任何帮助,则从左侧开始。

【问题讨论】:

  • 你可以试试这个吗?
  • 你可以在活动开始时滚动到recyclerview的中间位置recyclerView.scrollToPosition(middle) ..并在后台做一些动画......在recyclerView的onScroll
  • 采用轮播布局的浏览器。 devexchanges.info/2016/06/…根据需要更改页面比例
  • H,你有没有检查家里的 Iflex 应用程序有一个和我的视图一样的视图,我想要那个。 play.google.com/store/apps/details?id=iflix.play&hl=en

标签: android android-recyclerview


【解决方案1】:

Recyclerview 上设置填充左侧,如下代码所示,以根据左侧填充开始您的recyclerView 行:

您的 Xml 代码应该是这样的:

<LinearLayout
           android:layout_marginTop="8dp"
           android:background="@drawable/banner2"
           android:layout_width="match_parent"
           android:layout_height="240dp">



           <android.support.v7.widget.RecyclerView
               android:paddingLeft="180dp"
               android:layout_marginTop="17dp"
               android:id="@+id/recycler_kids"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:clipToPadding="false"
               app:layout_behavior="@string/appbar_scrolling_view_behavior" />


       </LinearLayout>

查看这个以检测 recyclerview 上的隐藏行以显示背景图像Hiding views in RecyclerView

【讨论】:

  • 感谢您的重播。如果我使用 paddingLeft 如何在 recycleview 向左滑动时删除左边的填充。我想做这样的。 i.stack.imgur.com/HsATz.gif
  • 我更新了我的代码,请检查@t.gakk 并回复,它的工作代码
【解决方案2】:

使用起始空白区域启动水平 RecyclerView 使用:

recyclerView.addItemDecoration(new Horizo​​ntalSpaceItemDecoration(700));

并将 Class: Horizo​​ntalSpaceItemDecoration(); 定义为

public class HorizontalSpaceItemDecoration extends RecyclerView.ItemDecoration {

    private final int mHorizontalSpaceWidth;

    public HorizontalSpaceItemDecoration(int mHorizontalSpaceWidth) {
        this.mHorizontalSpaceWidth = mHorizontalSpaceWidth;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
                               RecyclerView.State state) {
        if (parent.getChildAdapterPosition(view) == 0) {
            outRect.left = mHorizontalSpaceWidth;
        }
    }

【讨论】:

    【解决方案3】:

    我的解决方案是先添加空白项。

        @Override
        public int getItemViewType(int position) {
            if (position==0){
                return 1;
            }else {
                return super.getItemViewType(position);
            }
        }
    

    您需要为此在 xml 中创建空白项

    【讨论】:

      【解决方案4】:

      你可以在你的适配器中使用它:

      if (position == 0) {
          holder.card_zero.setVisibility(View.VISIBLE);
          holder.card_info.setVisibility(View.GONE);
          holder.card_pic.setVisibility(View.GONE);
      } else {
          holder.card_zero.setVisibility(View.GONE);
          holder.card_info.setVisibility(View.VISIBLE);
          holder.card_pic.setVisibility(View.VISIBLE);   
      

      【讨论】:

        【解决方案5】:

        水平方向的线性布局管理器和PagerSnapHelper() 将有助于实现这一目标。以下来自pagersnap 的代码将提供更好的说明。

        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        LinearLayoutManager layoutManager = new LinearLayoutManager(context, 
        LinearLayoutManager.HORIZONTAL, false);
        SnapHelper snapHelper = new PagerSnapHelper();
        recyclerView.setLayoutManager(layoutManager);
        snapHelper.attachToRecyclerView(mRecyclerView);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-09-18
          • 2019-04-16
          • 1970-01-01
          • 2016-10-10
          • 1970-01-01
          • 1970-01-01
          • 2016-02-01
          • 1970-01-01
          相关资源
          最近更新 更多