//布局
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="fill_parent"
android:layout_height="130dip" />
<RadioGroup
android:id="@+id/rg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/vp"
android:gravity="center"
android:orientation="horizontal" >
</RadioGroup>
//Activity页面
public class MainActivity extends Activity {
//在网上随便找了几张图片
private String[] paths = new String[] {
"http://img1.3lian.com/2015/w7/98/d/22.jpg",
"http://img1.3lian.com/2015/w7/98/d/1.jpg",
"http://img1.3lian.com/2015/w7/98/d/2.jpg",
"http://img1.3lian.com/2015/w7/98/d/3.jpg",
"http://img1.3lian.com/2015/w7/98/d/4.jpg",
"http://img1.3lian.com/2015/w7/98/d/21.jpg",
};
private RadioGroup rg;
private ViewPager vp;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int currentItem = vp.getCurrentItem();
vp.setCurrentItem(currentItem += 1);
handler.sendEmptyMessageDelayed(0, 1000);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
vp.setAdapter(new MyPagerAdapter(this, paths));
initView();
vp.setCurrentItem(Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2
% paths.length);
handler.sendEmptyMessageDelayed(0, 1000);
}
private void initView() {
initDots();
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
rg.check(arg0 % paths.length);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
private void initDots() {
int wrap = RadioGroup.LayoutParams.WRAP_CONTENT;
RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(wrap, wrap);
params.leftMargin =paths .length;
rg = (RadioGroup) findViewById(R.id.rg);
for (int i = 0; i < paths.length; i++) {
RadioButton rb = new RadioButton(this);
rb.setId(i);
rb.setButtonDrawable(R.drawable.x_dot_selector);
if (i != 0) {
// 如果是第一个时,不需要加左边距
rg.addView(rb, params);
} else {
rg.addView(rb);
}
rg.check(0);
}
}
}
//适配器
public class MyPagerAdapter extends PagerAdapter {
private final Context context;
private final String[] paths;
private BitmapUtils bitmapUtils;
public MyPagerAdapter(Context context, String[] paths) {
this.context = context;
// TODO Auto-generated constructor stub
this.paths = paths;
bitmapUtils = new BitmapUtils(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 得到网络图片地址
String path = paths[position % paths.length];
// 得到imageView对象
ImageView iv = new ImageView(context);
LayoutParams layoutParams = new LayoutParams();
layoutParams.height = layoutParams.MATCH_PARENT;
layoutParams.width = layoutParams.MATCH_PARENT;
iv.setLayoutParams(layoutParams);
bitmapUtils.display(iv, path);
container.addView(iv);
return iv;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
### 在drawable下新建 x_dot_selector
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 选中时 -->
<item android:drawable="@drawable/dot_focus" android:state_checked="true"/>
<!-- 非选中时 -->
<item android:drawable="@drawable/dot_unfocus"/>
</selector>
### 在drawable下新建 dot_focus
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<!-- 描边 -->
<stroke
android:width="1dip"
android:color="#0000FF" />
<!-- 填充色 -->
<solid android:color="#FF6600" />
<!-- 设置宽度和高度相同,这样就变成了圆 -->
<size
android:height="10dip"
android:width="10dip" />
</shape>
### 在drawable下新建 dot_unfocus
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<!-- 描边 -->
<stroke
android:width="1dip"
android:color="#0000FF" />
<!-- 填充色 -->
<solid android:color="#FFFFFF" />
<!-- 设置宽度和高度相同,这样就变成了圆 -->
<size
android:height="10dip"
android:width="10dip" />
</shape>