ViewPager无限轮播,下方展示小点

//布局

<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>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值