本文实例为大家分享了AnAndroid图片无限轮播的具体代码,供大家参考,具体内容如下
public class MainActivity extends Activity {
private ViewPager viewPager;
private LinearLayout ll_dot;
private String[] imageUrls = new String[] {
"http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg",
"http://pic2.nipic.com/20090424/1468853_230119053_2.jpg",
"http://img3.3lian.com/2013/s1/20/d/57.jpg",
"http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg",
"http://a0.att.hudong.com/15/08/300218769736132194086202511_950.jpg" };
//private String[] imageUrls = new String[] {
//"http://192.168.230.1:8080/ab.jpg",
//"http://192.168.230.1:8080/ae.jpg",
//"http://192.168.230.1:8080/af.jpg",
//"http://192.168.230.1:8080/ah.jpg" };
private ArrayList<ImageView> viewList;
private ArrayList<ImageView> dotList;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 先去获取到当前条目索引
int currentItem = viewPager.getCurrentItem();
// 条目索引+1
currentItem++;
// 重新设置给viewPager
viewPager.setCurrentItem(currentItem);
// 再调用发延时消息的方法
sendDelayMessage();
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
ll_dot = (LinearLayout) findViewById(R.id.ll_dot);
// 初始化图片
initViewList();
// 初始化小圆点
initDots();
// 设置数据适配器
viewPager.setAdapter(new MyPagerAdapter(this, viewList, handler));
// 设置初始的展示条目
viewPager.setCurrentItem(viewList.size() * 100000);
// 设置延时切换
sendDelayMessage();
// 监听viewPager的一个滑动事件
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// 遍历小点的集合
for (int i = 0; i < dotList.size(); i++) {
// 如果当前的索引值和i相等
if (position % dotList.size() == i) {
// 设置小点为亮色
dotList.get(i).setImageResource(R.drawable.dot_focuse);
} else {
// 否则暗色
dotList.get(i).setImageResource(R.drawable.dot_normal);
}
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
/**
* 发送延时消息
*/
private void sendDelayMessage() {
handler.sendEmptyMessageDelayed(0, 2000);
}
private void initDots() {
// 创建一个装小点控件的集合
dotList = new ArrayList<ImageView>();
dotList.clear();
for (int i = 0; i < imageUrls.length; i++) {
ImageView imageView = new ImageView(this);
if (i == 0) {
// 如果是第一张,默认给一个亮的小点
imageView.setImageResource(R.drawable.dot_focuse);
} else {
// 如果不是滴一个,默认给一个暗的小点
imageView.setImageResource(R.drawable.dot_normal);
}
// 设置小点的默认宽高为20dp
LayoutParams params = new LayoutParams(20, 20);
// 设置小点的间距
params.setMargins(5, 0, 5, 0);
ll_dot.addView(imageView, params);
// 往小点集合中添加view
dotList.add(imageView);
}
}
private void initViewList() {
// 先使用xutils的工具类
BitmapUtils bitmapUtils = new BitmapUtils(this);
viewList = new ArrayList<ImageView>();
for (int i = 0; i < imageUrls.length; i++) {
// 创建imageView 并通过工具类将图片设置到控件上
ImageView imageView = new ImageView(this);
bitmapUtils.display(imageView, imageUrls[i]);
viewList.add(imageView);
}
}
}
适配器
public class MyPagerAdapter extends PagerAdapter {
private List<ImageView> viewList;
private Context context;
private Handler handler;
public MyPagerAdapter(Context context, List<ImageView> viewList,
Handler handler) {
this.context = context;
this.viewList = viewList;
this.handler = handler;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 通过控件集合获取imageView 添加到容器中,并作为key 返回
ImageView imageView = viewList.get(position % viewList.size());
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
// 当按下的时候,停止轮播
case MotionEvent.ACTION_DOWN:
// 移除所有的回调和消息
handler.removeCallbacksAndMessages(null);
break;
// 抬起
case MotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(0, 2000);
break;
// 取消的时候,继续开始录播
case MotionEvent.ACTION_CANCEL:
handler.sendEmptyMessageDelayed(0, 2000);
break;
default:
break;
}
//触摸事件不被消费,true 消费该触摸事件
return true;
}
});
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// super.destroyItem(container, position, object);
container.removeView((View) object);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android图片无限轮播
# Android无限轮播
# Android图片轮播
# Android图片处理工具类BitmapUtils
# Android图片处理教程之全景查看效果实现
# Android图片压缩的实例详解
# Android图片选择器ImageEditContainer
# Android图片色彩变换实现方法
# Android选择与上传图片之PictureSelector教程
# 遍历
# 如果不是
# 按下
# 不被
# 先去
# 大家分享
# 第一张
# 创建一个
# 回调
# 具体内容
# 大家多多
# 移除
# 点为
# 小圆点
# af
# ah
# ab
# ae
# ArrayList
# gt
相关文章:
如何用搬瓦工VPS快速搭建个人网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何高效配置IIS服务器搭建网站?
如何通过虚拟机搭建网站?详细步骤解析
如何通过西部建站助手安装IIS服务器?
如何在万网自助建站平台快速创建网站?
制作公司内部网站有哪些,内网如何建网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何在阿里云购买域名并搭建网站?
建站主机选购指南:核心配置优化与品牌推荐方案
如何在建站之星绑定自定义域名?
建站之星如何助力企业快速打造五合一网站?
如何在云主机上快速搭建网站?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
5种Android数据存储方式汇总
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
网站按钮制作软件,如何实现网页中按钮的自动点击?
定制建站方案优化指南:企业官网开发与建站费用解析
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何在服务器上三步完成建站并提升流量?
内网网站制作软件,内网的网站如何发布到外网?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
教学网站制作软件,学习*后期制作的网站有哪些?
如何通过虚拟主机空间快速建站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
代刷网站制作软件,别人代刷火车票靠谱吗?
建站之星微信建站一键生成小程序+多端营销系统
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
网站制作知乎推荐,想做自己的网站用什么工具比较好?
潮流网站制作头像软件下载,适合母子的网名有哪些?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
股票网站制作软件,网上股票怎么开户?
如何在宝塔面板创建新站点?
建站之星×万网:智能建站系统+自助建站平台一键生成
建站与域名管理如何高效结合?
网站专业制作公司有哪些,做一个公司网站要多少钱?
如何快速搭建高效WAP手机网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
专业网站建设制作报价,网页设计制作要考什么证?
建站之星如何实现网站加密操作?
如何选择可靠的免备案建站服务器?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何确保西部建站助手FTP传输的安全性?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
建站主机无法访问?如何排查域名与服务器问题
如何用PHP快速搭建CMS系统?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
*请认真填写需求信息,我们会在24小时内与您取得联系。