【Android】头部背景图片可伸缩的ScrollView

本文介绍如何在Android中实现一个头部背景图片可伸缩的ScrollView,详细讨论了三种实现方式:纯动画、修改控件高度以及结合动画和修改高度的方法。通过第三种方式,可以实现图片的横向和纵向拉伸,并且平移下方布局,达到平滑的伸缩和回弹效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、需求

1、头部ImageView可伸缩,且不能影响其他控件摆放位置。

2、期望:可以自动识别ImageView位置,不用指定缩放View。

3、可以指定是否横向拉伸。

4、可以设置纵向平移的View。

2、实现方式

1、使用纯动画方式实现

经实践,使用纯动画方式可以实现头部图片伸缩效果,但是图片下方的布局不会跟着平移。本以为属性动画中的缩放动画是修改了控件的宽高实现,但实际来看并不是,那究竟属性动画的缩放动画是修改了控件的什么属性呢?官方给出的定义是:

scaleX and scaleY: These properties control the 2D scaling of a View around its pivot point.

可以看到,scale属性控制的是View关于其轴心点的二维缩放,没有修改宽高的说明,但是这个定义其实看着很模糊,有哪位大佬知道scale动画具体实现的话,希望不吝赐教。所以使用纯动画效果无法实现可伸缩的ScrollView;

2、使用修改控件高度的方式来实现伸缩效果

经实践,该方式可以实现头部图片的伸缩效果,且图片下方的布局会跟着平移,但有其局限性,首先是,图片伸缩只能是纵向拉伸,无法实现横向拉伸,因为一般头部背景图片会设置为match_parent,所以无法修改图片的宽度。其次,在实现图片回弹效果时,直接修改宽高实现,回弹效果会很生硬,所以,经过考虑,实现该控件要结合两者一起实现,就是第三种实现方式。

3、动画+修改控件宽高方式

结合方法二不足的地方,在方法二的基础上,用动画效果实现图片的横向伸缩以及添加可平移的控件。具体实现代码如下:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    sw
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值