本文实例讲述了Android开发使用Handler的PostDelayed方法实现图片轮播功能。分享给大家供大家参考,具体如下:

第一步:创建MainActivity类

public class BaseActivity extends ActionBarActivity {

private List mDatas;

private ViewPager mViewPager;

private boolean isRun = false;

private AutoRunTask mTask;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mViewPager = new ViewPager(this);

mViewPager.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, Util

.getDimen(R.dimen.home_pic_height)));

mViewPager.setAdapter(new HomePagerAdapter());

// 设置滑动的初始位置

mViewPager.setCurrentItem(1000 * mDatas.size());

mViewPager.setOnTouchListener(this);

mTask = new AutoRunTask();

mTask.start();

}

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

mTask.stop();

break;

case MotionEvent.ACTION_UP:

case MotionEvent.ACTION_CANCEL:

mTask.start();

break;

default:

break;

}

return false; //viewpager必须是false,如果是true是就不能移动

}

}

第二步:创建无限循环的PagerAdaper

class HomePagerAdapter extends PagerAdapter {

// 使用此对imageView进行复用

private LinkedList convertViews = new LinkedList();

@Override

public int getCount() {

// return mPicUrls.size();

return Integer.MAX_VALUE; // 可以无线滑动

}

@Override

public boolean isViewFromObject(View arg0, Object arg1) {

return arg0 == arg1;

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

if (object != null && object instanceof ImageView) {

ImageView imageView = (ImageView) object;

// 添加到集合里

convertViews.add(imageView);

container.removeView(imageView);

}

super.destroyItem(container, position, object);

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

// position 因为无线大,所以

int index = position % mDatas.size();

ImageView imageView = null;

if (convertViews != null && convertViews.size() > 0) {

// 取出一个imageView

imageView = convertViews.remove(0);

} else {

imageView = new ImageView(Util.getContext());

}

String uri = HttpHelper.URL + "image?name=" + mDatas.get(index);

mBitmapUtils.display(imageView, uri);

container.addView(imageView);

return imageView;

}

}

第三步:使用handler创建轮播类

public class AutoRunTask extends Handler implements Runnable {

@Override

public void run() {

while (isRun) {

removeCallbacks(this);

int currentItem = mViewPager.getCurrentItem();

currentItem++;

mViewPager.setCurrentItem(currentItem);

postDelayed(this, 2000);

}

}

public void start() {

if (!isRun) {

removeCallbacks(this);

isRun = true;

postDelayed(this, 2000);

}

}

public void stop() {

if (isRun) {

isRun = false;

removeCallbacks(this);

}

}

}

希望本文所述对大家Android程序设计有所帮助。

java postdelayed_Android开发使用Handler的PostDelayed方法实现图片轮播功能相关推荐

  1. 原生Js_使用setInterval() 方法实现图片轮播功能

    用javascript图片轮播功能 <!DOCTYPE html> <html><head><meta charset="utf-8" / ...

  2. Handler的一个图片轮播程序

    1 Handler是什么? * Handler:用来更新UI(主线程)的一套机制,也是一套消息处理机制,我们可以发送信息,也可以通过它来处理消息. * 比如最常见的Activity的生命周期:它的回调 ...

  3. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  4. android 自适应图片轮播,Android使用Recyclerview实现图片轮播效果的方法

    Android使用Recyclerview实现图片轮播效果的方法 发布时间:2020-06-23 15:47:58 来源:亿速云 阅读:113 作者:清晨 这篇文章将为大家详细讲解有关Android使 ...

  5. java图片轮播_java制作广告图片自动轮播控件

    首页图片的轮播 /** * 广告图片自动轮播控件 * */ public class ImageCycleView extends LinearLayout { /** * 上下文 */ privat ...

  6. JAVA轮播器_Android 图片轮播器的实现及源码解析

    在很多产品,尤其是电商类社区内的网页或者app中,我们经常会看到一个图片轮播墙,一页一页的广告/活动/商品介绍每隔一段时间就切换到下一张.那在安卓中我们该如何实现图片轮播器呢?面对自定义样式.自定义图 ...

  7. php网页轮播图,JavaScript_JavaScript实现图片轮播的方法,本文实例讲述了JavaScript实现图 - phpStudy...

    JavaScript实现图片轮播的方法 本文实例讲述了JavaScript实现图片轮播的方法.分享给大家供大家参考.具体如下: 这里没有使用到JQUERY,没有过渡效果,图片可自行替换 . test2 ...

  8. IOS开发基础之图片轮播器-12

    IOS开发基础之图片轮播器-12 核心代码 // // ViewController.m // 12-图片轮播器 // // Created by 鲁军 on 2021/2/2. //#import ...

  9. 安卓开发——基于ViewPager的图片轮播

    概述: 要用ViewPager实现图片轮播,主要是两步: 1:用PagerAdapter使图片可以滑动切换 2:用Handler来实现图片自动轮播 页面布局部分的代码: <?xml versio ...

最新文章

  1. .NET分层登陆——机房收费系统再总结
  2. 关于CXF的FrontEnd和数据绑定方案
  3. android应用崩溃的调试方法
  4. 高考带给了我们什么..........
  5. 在 Azure App Service 上启用 Application Request Routing
  6. MOON.ORM 3.5 MYSQL的配置及使用方法(最新版免费下载使用.欢迎加盟)
  7. ASP.NET 母版页的加载顺序
  8. MPLS virtual private network OptionB实验(华为设备)
  9. 已有打开的与此命令相关联的 DataReader,必须首先将它关闭
  10. 8 个常用的 Python 爬虫技巧,分分钟提高效率!!
  11. Android--分享功能
  12. leetcode每日一题 838. 推多米诺 正解 双指针~这题很考察模拟逻辑——是一道不错的模拟题
  13. oracle性能调优之--Oracle 10g AWR 配置
  14. 淘气的小丁-抽奖小游戏
  15. Android8-Settings-BlueTooth
  16. 创建新Docker容器时出现“The container name /xxx is already in use by container xxxxxxxxxxx...”问题的解决办法
  17. Java编程题-买苹果
  18. 人机交互新时代:多维度快速看清ChatGPT(附下载)
  19. BPM是什么意思?BPM的优势及好处有哪些?
  20. 利用先进先出原则统计易飞ERP呆滞库存

热门文章

  1. python适配器模式角色_python设计模式-适配器模式
  2. 每日程序C语言5-斐波那契兔子数
  3. python批量处理txt_浅谈Python批处理文件夹中的txt文件
  4. php xml 四种,xml中常见的四种解析方式是什么?
  5. Java黑皮书课后题第5章:**5.19(打印金字塔形的数字)编写一个嵌套的for循环,打印下面的输出
  6. oracle 触发器登录,【学习笔记】Oracle触发器 实现指定用户登录oracle案例
  7. Centos 开机后,登录时无法输入密码怎么解决
  8. C#透明窗体实现方法
  9. jqgrid定义多选操作
  10. NSUserDefaults