你知道android中的视差特效吗

本文介绍了Android中实现视差效果和阻尼效果的原理与方法,包括ListView下拉时Header视图的拉长效果及手指松开后的回弹动画。通过重写overScrollBy方法和监听ACTION_UP事件,结合属性动画或自定义动画来实现。同时强调了在布局中正确设置图片拉伸方式的重要性。
摘要由CSDN通过智能技术生成

阻尼效果(视差特效)

空间,微博很多地方都有这种下拉出现的”阻尼“效果,这种效果最早在ios上出现,如今android上这种功能也是很常见了。

先看效果图:
image

该功能可以分为两个点:

  1. 当ListView下拉的时候,顶部的HeaderView会有一个拉长的效果;
  2. 当下拉一段距离后,ListView会复位,执行一个简单的回弹动画。

这个功能实现起来挺简单的,下面来介绍如何实现:

第一个功能:(阻尼效果)

来看下关键代码:

	@Override
	protected boolean overScrollBy(int deltaX, int deltaY, int scrollX,
			int scrollY, int scrollRangeX, int scrollRangeY,
			int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
		Log.d("TAG", "deltaY: " +deltaY + " scrollY: " + scrollY + " scrollRangeY: " + scrollRangeY
				+ " maxOverScrollY: " + maxOverScrollY + " isTouchEvent: " + isTouchEvent);
		
		// 手指拉动 并且 是下拉
		if(isTouchEvent && deltaY < 0) {
			// 把拉动的瞬时变化量的绝对值交给Header, 就可以实现放大效果
			if(mImage.getHeight() <= drawableHeight ) {
			    //①将deltaY除以3使产生阻尼效果
				int newHeight = mImage.getHeight() + Math.abs(deltaY/3.0f);
				
				mImage.getLayoutParams().height = newHeight;
				使View重绘
				mImage.requestLayout();
			}
			
		}
		
		return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,
				scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);
	}

看到上面的代码&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值