How to create bouncable scrollview in android?

后端 未结 4 617
天命终不由人
天命终不由人 2020-12-16 03:45

How to create a bounce ScrollView in Android like iPhone?

4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-16 04:27

    Add effect bounce to scrollview in android

    Step 1: Create new file BounceScrollView in package com.base.view

    public class BounceScrollView extends ScrollView
    {
        private static final int MAX_Y_OVERSCROLL_DISTANCE = 200;
    
        private Context mContext;
        private int mMaxYOverscrollDistance;
    
        public BounceScrollView(Context context) 
        {
            super(context);
            mContext = context;
            initBounceScrollView();
        }
    
        public BounceScrollView(Context context, AttributeSet attrs) 
        {
            super(context, attrs);
            mContext = context;
            initBounceScrollView();
        }
    
        public BounceScrollView(Context context, AttributeSet attrs, int defStyle) 
        {
            super(context, attrs, defStyle);
            mContext = context;
            initBounceScrollView();
        }
    
        private void initBounceScrollView()
        {
            //get the density of the screen and do some maths with it on the max overscroll distance
            //variable so that you get similar behaviors no matter what the screen size
    
            final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
                final float density = metrics.density;
    
            mMaxYOverscrollDistance = (int) (density * MAX_Y_OVERSCROLL_DISTANCE);
        }
    
        @Override
        protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) 
        { 
            //This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable mMaxYOverscrollDistance; 
            return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);  
        }
    
    }
    

    Step 2: At your layout, please change

    
    

    to

    
    

提交回复
热议问题