ViewPager导航页面可以自己定义adapeter,这里使用一种开源框架:ultraviewpager
1.首先在build.gradle中添加:
compile 'com.alibaba.android:ultraviewpager:1.0.4@aar'
2.在使用的不居中添加代码:
<com.tmall.ultraviewpager.UltraViewPager android:id="@+id/ultra_viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="@android:color/darker_gray" />
3.Activity中核心代码:
/*viewpager开源框架的使用*/ UltraViewPager ultraViewPager = (UltraViewPager) v.findViewById(R.id.ultra_viewpager); ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL); //UltraPagerAdapter 绑定子view到UltraViewPager PagerAdapter adapter = new UltraPagerAdapter(false); ultraViewPager.setAdapter(adapter); //内置indicator初始化 ultraViewPager.initIndicator(); //设置indicator样式 ultraViewPager.getIndicator() .setOrientation(UltraViewPager.Orientation.HORIZONTAL) .setFocusColor(Color.GREEN) .setNormalColor(Color.WHITE) .setRadius((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources().getDisplayMetrics())); //设置indicator对齐方式 ultraViewPager.getIndicator().setGravity(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); //构造indicator,绑定到UltraViewPager ultraViewPager.getIndicator().build(); //设定页面循环播放 ultraViewPager.setInfiniteLoop(true); //设定页面自动切换 间隔2秒 ultraViewPager.setAutoScroll(2000);
//UltraPagerAdapter//
public class UltraPagerAdapter extends PagerAdapter { private boolean isMultiScr; public UltraPagerAdapter(boolean isMultiScr) { this.isMultiScr = isMultiScr; } @Override public int getCount() { return 4; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { //布局处理代码 } container.addView(linearLayout); // linearLayout.getLayoutParams().width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 180, container.getContext().getResources().getDisplayMetrics()); // linearLayout.getLayoutParams().height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 400, container.getContext().getResources().getDisplayMetrics()); return linearLayout; } @Override public void destroyItem(ViewGroup container, int position, Object object) { LinearLayout view = (LinearLayout) object; container.removeView(view); }