这个是上个公司做的功能,一直说写一篇文档,可是一直没时间,现在直接把我自己封装的控件放上来,大家可以帮忙校验校验。。。
public class ReboundScrollView extends HorizontalScrollView {
//移动因子, 是一个百分比, 比如手指移动了100px, 那么View就只移动50px
//目的是达到一个延迟的效果
private static final float MOVE_FACTOR = 0.5f;
//松开手指后, 界面回到正常位置需要的动画时间
private static final int ANIM_TIME = 300;
//ScrollView的子View, 也是ScrollView的唯一一个子View
private View contentView;
//手指按下时的Y值, 用于在移动时计算移动距离
//如果按下时不能上拉和下拉, 会在手指移动时更新为当前手指的Y值
private float startX;
//用于记录正常的布局位置
private Rect originalRect = new Rect();
//手指按下时记录是否可以继续左拉
private boolean canPullLeft = false;
//手指按下时记录是否可以继续右拉
private boolean canPullRight = false;
//在手指滑动的过程中记录是否移动了布局
private boolean isMoved = false;
public ReboundScrollView(Context context) {
super(context);
}
public ReboundScrollView(Context context, AttributeSet attrs) {
sup