Android自定义View--ScrollView实现回弹效果

本文介绍了如何在Android中为ScrollView实现回弹效果。当滚动到边界时,允许继续滑动并在松手后自动回弹到初始位置。关键在于理解并使用getScrollY()来获取滚动偏移量,以及结合getMeasuredHeight()和getHeight()判断是否到达底部。
摘要由CSDN通过智能技术生成

这是要实现的效果

需要实现的功能

当下滑或上滑到尽头时还能继续滑动,释放手指后能自动回弹到原来的位置

需要用到的知识点

  • getScrollY()
    1. 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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值