需要实现的功能
当下滑或上滑到尽头时还能继续滑动,释放手指后能自动回弹到原来的位置
需要用到的知识点
- getScrollY()
- getScrollY是当前view的左上角相对于母视图(这里是ScrollView)的左上角的Y轴偏移量,上拉值增加,反之亦然。
- getMeasuredHeight()
- getHeight()
1.getMeasuredHeight()返回的是原始测量高度,与屏幕无关,getHeight()返回的是在屏幕上显示的高度,项目利用子View的getMeasuredHeight()减去父类(ScrollView)的高度,判断是否滑动到底部。
MyScrollView的实现
package rc.loveq.myscrollview;
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ScrollView;
/**
* Author:Rc
* Csdn:http://blog.csdn.net/loveqrc
* 0n 2016/12/8 08:46
* Email:664215432@qq.com
*/
public class MyScrollView extends ScrollView {
private static final String TAG ="MyScrollView" ;
private static final long RESTORE_TIME = 300;//回弹的时间
public static final int DRAG_RATE=2;//mChildView移动的距离=手指移动的的距离/DRAG_RATE
private View mChildView;
private float mDownY;
private Rect mRect=new Rect();//用于保存子View的位置
private boolean isRestoring=false;//是否正在回弹
public MyScrollView(Context context) {
super(context);
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public