先说一下思路,使用ViewPager加 LinearLayout  布局 共同实现,

先看布局

android:layout_width="match_parent"

android:layout_height="fill_parent"

android:id="@+id/support">

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

再 看  配置图片设配器

//设配器

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文件夹 放配置信息)

设置默认  与选择 状态  的选择

在设置@drawable/shapetrue与@drawable/shapefalse的图片信息比如

@drawable/shapetrue为

android:shape="oval">

//另一个 换个颜色即可

小圆点的方法

public void dian(){

//用循环保证与图片索引一致

for(int i=0;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);//再次发送  调用  实现无限轮播

};

};

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐