第二篇--viewpager+fragment打造应用框架

来源:互联网 发布:金融网络销售好做吗 编辑:程序博客网 时间:2024/05/19 07:10

由于上一篇的原因,我改用了hyman老师视频的第三课里所用到的viewpager+fragment来实现我的APP框架。感谢hyman老师。他的课程可以从这里找到。

hyman老师讲解的很细致,按照视频的步骤我一步一步写好了APP的框架,这里就不多说了。

框架写好以后,我又根据网上代码给viewpager添加了一个滑动渐隐动画,具体代码如下:


MainActivity.java文件:

public class DepthPageTransformer implements ViewPager.PageTransformer {        private static final float MIN_SCALE = 0.75f;        public void transformPage(View view, float position) {            int pageWidth = view.getWidth();            if (position < -1) { // [-Infinity,-1)                // This page is way off-screen to the left.                view.setAlpha(0);            } else if (position <= 0) { // [-1,0]                // Use the default slide transition when moving to the left page                view.setAlpha(1);                view.setTranslationX(0);                view.setScaleX(1);                view.setScaleY(1);            } else if (position <= 1) { // (0,1]                // Fade the page out.                view.setAlpha(1 - position);                // Counteract the default slide transition                view.setTranslationX(pageWidth * -position);                // Scale the page down (between MIN_SCALE and 1)                float scaleFactor = MIN_SCALE                        + (1 - MIN_SCALE) * (1 - Math.abs(position));                view.setScaleX(scaleFactor);                view.setScaleY(scaleFactor);            } else { // (1,+Infinity]                // This page is way off-screen to the right.                view.setAlpha(0);            }        }    }    public class ZoomOutPageTransformer implements ViewPager.PageTransformer    {        private static final float MIN_SCALE = 0.85f;        private static final float MIN_ALPHA = 0.5f;        @SuppressLint("NewApi")        public void transformPage(View view, float position)        {            int pageWidth = view.getWidth();            int pageHeight = view.getHeight();            if (position < -1)            { // [-Infinity,-1)                // This page is way off-screen to the left.                view.setAlpha(0);            } else if (position <= 1) //a页滑动至b页 ; a页从 0.0 -1 ;b页从1 ~ 0.0            { // [-1,1]                // Modify the default slide transition to shrink the page as well                float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));                float vertMargin = pageHeight * (1 - scaleFactor) / 2;                float horzMargin = pageWidth * (1 - scaleFactor) / 2;                if (position < 0)                {                    view.setTranslationX(horzMargin - vertMargin / 2);                } else                {                    view.setTranslationX(-horzMargin + vertMargin / 2);                }                // Scale the page down (between MIN_SCALE and 1)                view.setScaleX(scaleFactor);                view.setScaleY(scaleFactor);                // Fade the page relative to its size.                view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE)                        / (1 - MIN_SCALE) * (1 - MIN_ALPHA));            } else            { // (1,+Infinity]                // This page is way off-screen to the right.                view.setAlpha(0);            }        }    }

然后在初始化的时候即可调用:

渐隐动画:

mViewPager.setPageTransformer(true, new ZoomOutPageTransformer());
或者:

放大缩小动画:

mViewPager.setPageTransformer(true, new DepthPageTransformer());

来设置切换动画。

0 0
原创粉丝点击