visual indication of over scroll in android

后端 未结 8 550
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-06 01:49

I am trying to add some visual indication, that there are no more pages in the desired fling direction in the ViewPager. However I am struggling to find a place, where to put re

相关标签:
8条回答
  • 2021-02-06 02:37

    If you look at the v4 support library you will see there's a class used by ViewPager called EdgeEffectCompat (this provides the glow effect when you reach the beginning or end of a view pager in ICS+) If you look at the implementation in the compat library you will see that it has an if-statement to see if the build version is 14+ (ICS) or not. If it is, then it ends up eventually (if you trace long enough) using the normal EdgeEffect class that was inroduced in ICS. Otherwise it uses BaseEdgeEffectImpl which basically has nothing in it.

    If you want, you can make your own custom ViewPager that uses EdgeEffect of your own. You can look at the android source code to see how they implemented EdgeEffect here which you can pretty much copy (just make sure to copy the overscroll_edge and overscroll_glow drawables in the AOSP /res/drawable directories to your own project since they are internal to android) or go ahead and create your own version.

    Good luck.

    (By the way, that's how they create the cool looking edge tilt effect in the launcher menu on ICS... so you can pretty much be as creative as you want with this ;)

    0 讨论(0)
  • 2021-02-06 02:38

    You have a lot of options, you can show a Toast, display a Dialog, make a TextView or image to appear over your UI, etc. Or because you know the amount of View items in the ViewPager, you could add different View at positions 0 and/or n + 1 with the message and make it bounce to the last View that actually contains your data.

    You could implement:

    viewPager.setOnPageChangeListener(new OnPageChangeListener() {
        public void onPageSelected(int position) {
            //TODO If position is the 0 or n item, add a view at 0 or at n+1 to indicate there is no more pages with data.
        }
    
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            // TODO Show a Toast, View or do anything you want when position = your first/last  item;
        }
    
        public void onPageScrollStateChanged(int state) {
        }
    });
    
    0 讨论(0)
提交回复
热议问题