Android recycleView或者viewpage横向或者垂直滑动(抖音上下滑动)

背景:

如今单内容在呈现的时候,很容易占取一屏,最常见是当下比较流行的模块:直播和短视频。

直播和短视频常见的播放预览的交互存在滑动,常见的滑动有左右或者上下。这两种滑动可以通过RecycleView或者ViewPager。

1.RecycleView实现单个item左右滑动或者上下滑动

1.1PagerSnapHelper帮助类

PagerSnapHelper:是recycleview的提供的包,可以直接引用

引用如下:
private void initView(RecyclerView recyclerView) {
    PagerSnapHelper helper = new PagerSnapHelper();
    helper.attachToRecyclerView(recyclerView);

    LinearLayoutManager manager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(manager);
    manager.setOrientation(LinearLayoutManager.HORIZONTAL);
    List<String> list = new ArrayList<>();
    for (int index = 1; index <= 20; index++) {
        list.add("这是第:"+index+"页");
    }

    DouyinAdapter adapter=new DouyinAdapter(list,this);
    recyclerView.setAdapter(adapter);

}

只要在PagerSnapHelper的attachToRecyclerView方法中,将recycleview加进去就行了。

1.2是横向滑动还是垂直滑动

方向的控制还是通过layoutManager来控制

LinearLayoutManager manager = new LinearLayoutManager(this); recyclerView.setLayoutManager(manager); manager.setOrientation(LinearLayoutManager.HORIZONTAL);

setOrientation():是控制的,受原来的recycleview的控制一样。

1.3获取当前item position:

2.ViewPage:可借助开源的,可找寻githunb,后期会提供解决方案。

recycleview和viewpage如何选择:

1.简单的展示:

1.1非播放内容:可以使用recycleview的,可以达到一样的效果

1.2播放内容:直播或者短视频,为了好管理,可以采用viewpage,内容独立,未来可以抽取成独                         立内容模块

2.涉及数据采集:

                       如果涉及到数据采集,按采集规则,有来源页和当前页等数据,选择viewpage比较方便。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android,可以通过自定义RecyclerView的ItemAnimator来实现滑动ItemView变大的效果。 首先,我们需要创建一个类来继承自RecyclerView.ItemAnimator,该类将负责处理ItemView的动画效果。代码如下: ```java public class CustomItemAnimator extends RecyclerView.ItemAnimator { @Override public boolean animateRemove(RecyclerView.ViewHolder holder) { return false; } @Override public boolean animateAdd(RecyclerView.ViewHolder holder) { return false; } @Override public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) { return false; } @Override public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromLeft, int fromTop, int toLeft, int toTop) { if (oldHolder != null) { // 缩小旧的ItemView AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(ObjectAnimator.ofFloat(oldHolder.itemView, "scaleX", 1f, 0.5f), ObjectAnimator.ofFloat(oldHolder.itemView, "scaleY", 1f, 0.5f)); animatorSet.setDuration(getChangeDuration()).start(); } if (newHolder != null) { // 放大新的ItemView AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(ObjectAnimator.ofFloat(newHolder.itemView, "scaleX", 0.5f, 1f), ObjectAnimator.ofFloat(newHolder.itemView, "scaleY", 0.5f, 1f)); animatorSet.setDuration(getChangeDuration()).start(); } return false; } @Override public void runPendingAnimations() { } @Override public void endAnimation(RecyclerView.ViewHolder item) { } @Override public void endAnimations() { } @Override public boolean isRunning() { return false; } } ``` 接下来,在使用RecyclerView的地方,需调用setItemAnimator方法将自定义的ItemAnimator设置给RecyclerView。代码如下: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setItemAnimator(new CustomItemAnimator()); ``` 这样,当RecyclerView的ItemView发生变化时,就会执行我们自定义的动画效果了。其,在animateChange方法我们通过对新旧ItemView的scaleX和scaleY属性进行属性动画来实现滑动ItemView变大的效果。 希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值