1、保证小圆点的数量和ViewPager的pager数量相同。
动态的设置,View对象,添加background, 选择drawable下面的shape文件。 需要注意的是需要用layoutparams为小圆点设置宽高。其父控件的layoutparams.
2、父控件(Linearlayout 水平方向),要将view对象添加到自己内部。
3、注意设置原点之间的间距marginLeft这个方法在Parms中。
注意对小圆点的父控件的linearLayout的设置。
for(int i =0; i<mImageViewList.size();i++){
point= new View(this);
point.setBackgroundResource(R.drawable.dot_guide_shape); //创建与ViewPager相同数量的小圆点,灰色。
//父控件设置控件的宽高参数。
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10, 10);
point.setLayoutParams(params);
//将布局文件添加到 父控件中。
ll_point_group.addView(point);
if(i>0){
params.leftMargin=8; //设置小圆点之间的间距。
}
}
红点覆盖在灰点的上面:
在LinearLayout上面覆盖个相对布局。
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="25dp" >
<LinearLayout
android:id="@+id/ll_point_group"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
<View
android:layout_width="10dp"
android:layout_height="10dp"
android:background="@drawable/dot_red_shape" />
</RelativeLayout>
覆盖在小灰点上的小红点跟随viewPager的page页面移动的原理: ViewPager 有一个onpagechangeListener页面变化的监听。
vp.setOnPageChangeListener(new OnPageChangeListener()
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// TODO Auto-generated method stub
// 將小圆点的距离动态予以改変。 保证小红点和page页面能同步。
int len = (int) ((int) (mPointwidth * positionOffset) + position * mPointwidth); // 这个距离是滑动过程成中不断的改变小红点的位置。
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view_red_point.getLayoutParams();
params.leftMargin = len; // 动态将小红点的位置改变。
view_red_point.setLayoutParams(params);
}
像素和dp之间有转换关系。
关联源码: E:\ProgramFiles\adt-bundle-windows-x86_64-20140702\sdk\extras\android\support\v4