东莞企网站建设,郑州网站建设专业乐云seo,宠物网站建设方案书,免费制图网站按照国际惯例#xff0c;先上效果图其实这跟普通的ViewPager原理都一样#xff0c;需要改变的地方就是#xff1a;1.增加滑进和滑出的动画效果2.缩小ViewPager的大小#xff0c;给屏幕上留出上一张和下一张视图的空间布局文件#xff1a;xmlns:androidhttp://schema…按照国际惯例先上效果图其实这跟普通的ViewPager原理都一样需要改变的地方就是1.增加滑进和滑出的动画效果2.缩小ViewPager的大小给屏幕上留出上一张和下一张视图的空间布局文件xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:clipChildrenfalseandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:idid/shareImgandroid:layout_widthmatch_parentandroid:layout_marginHorizontal60dpandroid:layout_heightwrap_contentandroid:layout_centerInParenttrueandroid:clipChildrenfalseandroid:layout_aboveid/shareOptions/这里只贴出了需要用到的部分注意viewpager自身和父布局都需要加上 android:clipChildrenfalse 属性网上大神解释为在子View进行绘制时不裁切它们的显示范围接下来是动画部分这里需要写个继承自ViewPager.PageTransformer的类并重写transformPage方法public class ScaleAlphaPageTransformerimplements ViewPager.PageTransformer{public static final float MAX_SCALE 1.0f;public static final float MIN_SCALE 0.8f;public static final float MAX_ALPHA 1.0f;public static final float MIN_ALPHA 0.7f;private boolean alpha true;private boolean scale true;Overridepublic void transformPage(View page,float position) {if (position -1) {position -1;}else if (position 1) {position 1;}float tempScale position 0 ?1 position :1 - position;if(scale){float slope (MAX_SCALE -MIN_SCALE) /1;//一个公式float scaleValue MIN_SCALE tempScale * slope;page.setScaleX(scaleValue);page.setScaleY(scaleValue);}if(alpha){//模糊float alope (MAX_ALPHA -MIN_ALPHA) /1;float alphaValue MIN_ALPHA tempScale * alope;page.setAlpha(alphaValue);}}/**** 设置是否模糊和改变大小* param alpha* param scale*/public void setType(boolean alpha,boolean scale){this.alpha alpha;this.scale scale;}}最后就是调用了ScaleAlphaPageTransformer scaleAlphaPageTransformer new ScaleAlphaPageTransformer();scaleAlphaPageTransformer.setType(true,true);viewPager.setPageTransformer(true,scaleAlphaPageTransformer);viewPager.setPageMargin(2);viewPager.setOffscreenPageLimit(3);ShareImgAdapter shareImgAdapter new ShareImgAdapter(listOfImg);viewPager.setAdapter(shareImgAdapter);完成