终于来补上了,7.21
这篇主要实现下ViewPager+小圆点:
小圆点其实是一些图片,或者控件,只是用来区分当前ViewPager显示的是第几页。
布局上采用相对布局或者帧布局,使得小圆点和ViewPager的布局能重叠。
代码实现上主要理解下ViewPager.setOnPageChangeListener()事件。当ViewPager的页面改动时,同时更改小圆点指示的位置。
1、xml中定义ViewPager和存放小圆点的容器。2、动态生成控件添加到ViewPager中,动态添加小圆点到存放小圆点的容器中。3、ViewPager的页面改动时,更改小圆点指示的位置。
1、xml布局(外层是RelativeLayout)
<android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:layout_marginBottom="50dp" android:layout_alignParentBottom="true" android:orientation="horizontal"> </LinearLayout>2、动态添加控件到ViewPager和存放小圆点的容器(记得初始化时,设置小圆点指示的位置是0)
ll=(LinearLayout) findViewById(R.id.ll); ivList=new ArrayList<ImageView>(); for(int i=0; i<5; i++){ ImageView iv=new ImageView(this); iv.setImageResource(R.drawable.aaaa); ivList.add(iv); Button btn=new Button(this); if(i==0){ btn.setText("1"); nPrePosition=0; } else btn.setText(""); ll.addView(btn); }3、ViewPager显示的页面改动时,更改小圆点指示的位置
public void onPageSelected(int arg0) { Button preBtn=(Button) ll.getChildAt(nPrePosition); preBtn.setText(null); Button curBtn=(Button) ll.getChildAt(arg0); curBtn.setText("1"); nPrePosition=arg0; }
for(int i=0; i<ivList.size(); i++){ if(i==arg0){ Button btn=(Button) ll.getChildAt(nPrePosition); btn.setText("1"); }else{ Button btn=(Button) ll.getChildAt(nPrePosition); btn.setText(""); } }而上面用到的方式是:先定义一个变量nPrePosition来保存滑动后小圆点之前指示的是哪个位置,然后更改时,只需更改当前和前一次小圆点的指示位置,而不用变更所有的。
PagerAdapter(page>3)时,启动时,保存两个初始化的页,第一次滑动时,再保存一个经过初始化的页,即会保存当前页、上一页、下一页。当再次滑动时,会先销毁上上页,再初始化下一页,打印信息如下: