android 图片轮播圆点,简单的图片轮播 加小圆点

本文介绍了如何使用ViewPager配合LinearLayout实现图片轮播效果,并展示了如何配置图片适配器、小圆点指示器的设置以及滑动事件的处理。关键步骤包括自定义适配器、设置小圆点样式和无限滚动功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说一下思路,使用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);//再次发送  调用  实现无限轮播

};

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值