无限轮播小圆点

来源:互联网 发布:阿里云优惠码在哪里看 编辑:程序博客网 时间:2024/04/29 20:28
首先写三个xml文件放到drawable-hdpi里面分别设置小点的:1.dot_focus.xml[html] view plain copy<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>  2.dot_unfocus.xml[html] view plain copy<?xml version="1.0" encoding="utf-8"?>  <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>  3.x_dot_selector.xml[html] view plain copy<?xml version="1.0" encoding="utf-8"?>  <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>  4.mian里的xml文件的写[html] view plain copy<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent" >      <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>  </RelativeLayout>  5.Activity写代码[java] view plain copypackage   import android.os.Bundle;  import android.os.Handler;  import android.app.Activity;  import android.graphics.RadialGradient;  import android.support.v4.view.ViewPager;  import android.support.v4.view.ViewPager.LayoutParams;  import android.support.v4.view.ViewPager.OnPageChangeListener;  import android.view.Menu;  import android.widget.RadioButton;  import android.widget.RadioGroup;  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 = 5;          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);          }      }  }  6.适配器写内容 [java] view plain copypackage com.  import com.lidroid.xutils.BitmapUtils;  import android.content.Context;  import android.support.v4.view.PagerAdapter;  import android.support.v4.view.ViewPager.LayoutParams;  import android.view.View;  import android.view.ViewGroup;  import android.widget.ImageView;  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);      }  }  
0 0
原创粉丝点击