先说一下思路,使用ViewPager加 LinearLayout 布局 共同实现,
先看布局
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:id="@+id/support">
</android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
</LinearLayout>
再 看 配置图片设配器
//设配器
class MyAapter extends PagerAdapter{
private Context context;
private String[] path;//是一个数组 网络图片的URL
private BitmapUtils bu;//用于绘制一个位图给图片赋值
//构造传参
public MyAapter(Context context,String[] path){
this.context=context;
this.path=path;
bu = new BitmapUtils(context);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
ImageView imv=new ImageView(context);
int i=position%path.length;
bu.display(imv, path[i]);
container.addView(imv);
return imv;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE;//设置最大值
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;//必须写 否则报错的会
}
}
这里是给小圆点配置图片 (在res目录下创建一个drawable文件夹 放配置信息)
设置默认 与选择 状态 的选择
<item android:state_enabled="true" android:drawable="@drawable/shapetrue"></item>
<item android:state_enabled="false" android:drawable="@drawable/shapefalse"></item>
在设置@drawable/shapetrue与@drawable/shapefalse的图片信息比如
@drawable/shapetrue为
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size android:width="10dp" android:height="10dp"/>
<solid android:color="#ff0"/>//另一个 换个颜色即可
</shape>
小圆点的方法
public void dian(){
//用循环保证与图片索引一致
for(int i=0;i<path.length;i++){
//创建小圆点资源文件res/drawable
ImageView im=new ImageView(this);
im.setBackgroundResource(R.drawable.colorim);
//大小
LayoutParams l=new LayoutParams(LayoutParams.WRAP_CONTENT, -2);
l.rightMargin=15;
im.setLayoutParams(l);
if(i==0){
im.setEnabled(false);
}
//把图片视图加入布局
ll.addView(im);
}
}
重要的 一部 滑动事件
//获取控件
support=(ViewPager)findViewById(R.id.support);
ll=(LinearLayout)findViewById(R.id.ll);
//加载设配器
support.setAdapter(new MyAapter(this,path));
//发给Handler 消息池处理
hand.sendEmptyMessageDelayed(0, 2000);
//滑动事件
support.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// 取出正确的索引
int in=arg0%path.length;
//取出控件
ImageView ima=(ImageView)ll.getChildAt(in);
ima.setEnabled(false);
ImageView laseim=(ImageView)ll.getChildAt(index);
laseim.setEnabled(true);
index=in;
}
@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
}
});
dian();//调用的小圆点方法
Handler 处理详情
private Handler hand=new Handler(){
public void handleMessage(android.os.Message msg) {
//获得当前viewPager位置
int item=support.getCurrentItem();
item+=1;
support.setCurrentItem(item);
hand.sendEmptyMessageDelayed(0, 2000);//再次发送 调用 实现无限轮播
};
};