Android 根据图片高度动态设置ViewPager高度

本文介绍了如何在Android中根据图片高度动态设置ViewPager的高度。通过OnPageChangeListener的onPageScrolled方法,结合页面滑动偏移量计算并更新ViewPager的高度,以实现高度随图片内容自适应变化的效果。

有图片的地方,就有需求。
为什么一个App有那么多的Banner,这里就不吐槽了。我们还是直接进主题,如何让ViewPager自适应图片的高度。
效果如下:
这里写图片描述
如何去改变ViewPager的高度,都知道用setLayoutParams,我们不清楚的是,在什么时候给Viewpager设置。聪明的孩子马上就想到,我们用ViewPager的时候,有一个OnPageChangeListener是用来监听viewpager滑动翻页的。

@Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

在这三个方法中,只有onPageScrolled是滑动过程一直调用的,而且刚好有个positionOffset是代表Viewpager的偏移量。这里我们不用OnPageSelected,光看Log日志,我们就知道它只有在页面position位置改变才会被调用,不满足Viewpager高度慢慢变化这个动态过程。
那么在onPageScrolled里我们要如何操作呢。为了更通俗的解决这个初中数学问题,我决定拿出我封印多年的截图涂鸦技术,look
这里写图片描述
从图片1到图片2,我们可以看成是图片1高度慢慢变大的过程,高度增量y =(img1高度-img2高度)的绝对值。看到这里,相信很多小伙伴就知道怎么算了,举个例子,如果你已经滑动了20%页面,那你滑动距离就是0.2x0.2x/高度增量h=x/y ,算出来的h就是图片1增长的高度了,而我们是要给ViewPager setLayoutParams,需要拿到的具体高度就是 图片1高度+h了。
具体代码如下:

import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值