阻尼效果(视差特效)
空间,微博很多地方都有这种下拉出现的”阻尼“效果,这种效果最早在ios上出现,如今android上这种功能也是很常见了。
先看效果图:
该功能可以分为两个点:
- 当ListView下拉的时候,顶部的HeaderView会有一个拉长的效果;
- 当下拉一段距离后,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