真正的画廊,左右条目可点击居中, 左右条目可滑动

利用Viewpager实现真正的Gallery, 左右条目可点击居中, 左右条目可滑动,也就是可以获得焦点

前言: 最近公司做一个想Gallery一样的效果,于是想在网上找个现成的,但是怎么找也没找到,就是找到一个鸿洋大神的巧用ViewPager 打造不一样的广告轮播切换效果的,但是左右条目不可点击,又不可以滑动,所以就做了个这个控件,本控件也是利用ViewPgaer做出来的

首先看一下效果:

这里写图片描述
从图上可以看出, 两边的item可以被点击居中, 可以被滑动,也就是可以获得焦点

接下来讲一下原理

设置PageTransformer

PageTransformer大家估计都相当熟悉吧,下面是PageTransformer的代码

public void transformPage(View page, float position) {

    if (position < -1) {
        position = -1;
    } else if (position > 1) {
        position = 1;
    }

    float tempScale = position < 0 ? 1 + position : 1 - position;

    float slope = (MAX_SCALE - MIN_SCALE) / 1;

    float scaleValue = MIN_SCALE + tempScale * slope;
    page.setScaleX(scaleValue);
    page.setScaleY(scaleValue);

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        page.getParent().requestLayout();
    }
}

这个的作用就是让Viewpager展示多个条目,看下面的图片, 红色的才是ViewPager的大小,所以此PageTransformer是为了在Viewpager外面展示图片

这里写图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
RecyclerViewAndroid开发中常用的列表控件,它可以实现各种不同的布局方式和功能。其中,使用RecyclerView实现画廊效果,即被选中的item居中放大,是一种常见的需求。 实现RecyclerView画廊效果,需要借助LayoutManager和ItemDecoration这两个类来实现。首先,需要自定义一个继承自LinearLayoutManager的类,例如GalleryLayoutManager。在GalleryLayoutManager中,我们需要重写onLayoutChildren方法,以实现item的布局。在这个方法中,我们可以通过计算item的布局位置和大小,实现被选中item的放大和居中。 接下来,我们还需要自定义一个继承自RecyclerView.ItemDecoration的类,例如GalleryItemDecoration。在GalleryItemDecoration中,我们需要重写getItemOffsets方法,以实现item间的间距效果。 在RecyclerView的Adapter中,我们可以使用ViewHolder的方式来管理item的布局和数据。当某个item被选中时,我们可以通过改变其布局参数,实现放大效果。同时,我们还可以通过RecyclerView.scrollToPosition方法,使被选中的item居中显示。 最后,在Activity或Fragment中,我们可以通过初始化RecyclerView、设置LayoutManager、ItemDecoration和Adapter等步骤,实现RecyclerView画廊效果。当用户滑动RecyclerView时,我们可以通过监听RecyclerView滑动事件,确定被选中的item,并将其居中放大。 总的来说,通过自定义LayoutManager、ItemDecoration和对RecyclerView的布局参数的处理,配合Adapter和Activity/Fragment的协调,我们可以实现RecyclerView画廊效果,即被选中item居中放大。通过这种方式,可以增加用户体验和提升界面的美观程度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值