自定义ScrollView实现阻尼效果(类似于QQ下拉一段距离)

本文探讨如何利用Scroller对象的startScroll和computeScrollOffset方法,结合自定义ViewGroup的computeScroll方法,实现类似QQ的下拉阻尼滚动效果。通过在computeScroll方法中不断调用postInvalidate,实现滚动动画直至Scroller完成动画。
摘要由CSDN通过智能技术生成
public class DampingScrollView extends ScrollView{
    private View activityView;  //activity传递进来的View用来控制其高度(可以是ImageViewTextView 等)
    private Scroller mScroller; //
    /** 回弹时所用的时间 */
    private static final int DURATION = 100;
    /** 最大Y坐标 其值一般设定为Scroller对应控件的高度 */
    private static final int MAX_DY = 100;
    TouchTool tool;
    int left, top;
    float startX, startY, currentX, currentY;
    int imageViewH;
    int rootW, rootH;
    boolean scrollerType;

    public DampingScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mScroller=new Scroller(context);
    }

    public DampingScrollView(Context context) {
        super(context);
        mScroller=new Scroller(context);
    }



    public void setActivityView(View activityView) {
 //设置要改变高度的视图
        this.activityView = activityView;
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int action = event.getAction();
        if (!mScroller.isFinished()) {
            return super.onTouchEvent(event);
        }
        currentX = event.getX();
        currentY = event.getY();
        switch (action) {
            case MotionEvent.ACTION_DOWN:// 变量赋初始值
                left = activityView.getLeft();
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值