很多时候我们在开发的过程中,需要做一些特殊的效果,今天就为大家介绍一下如何做一个阻尼的效果,所谓的阻尼效果就是头布局的背景图片在下拉的时候放大,在释放手指的时候缩小,从而产生放大缩小的效果。实现的方案就是继承ListView,并添加头布局,在触摸监听事件里面去实现该效果。下面就开始演示实现效果的效果图,以及代码的实现方式。
PullZoomListView.java
public class PullZoomListView extends ListView {
private LinearLayout mHeadView;//要实现阻尼效果的HeadView
private int mHeadViewHeight;//默认状态下要实现阻尼效果的HeadView的高度
private LayoutParams mParams;
private int mMaxHeight = 200;//自定义下拉增加的最大高度
private int mDownY = -1; // 按下的y轴的值, 默认为: -1
private int mDiffY = -1;//纪录最终下拉的高度,默认为: -1
public PullZoomListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initHeadView();
}
public PullZoomListView(Context context, AttributeSet attrs) {
super(context, attrs);
initHeadView();
}
public PullZoomListView(Context context) {
super(context);
initHeadView();
}
//给ListView的HeadView添加要实现阻尼效果的View
private void initHeadView() {
mHeadView = (LinearLayout) View.inflate(getContext(), R.layout.head_view, null);
mHeadView.measure(0, 0);// 手动测量宽高
mHeadViewHeight = mHeadView.getMeasuredHeight();
this.addHeaderView(mHeadView);