Android 使用Handler的PostDelayed方法实现图片的轮播

Android 使用Handler的PostDelayed方法实现图片的轮播

第一步:创建MainActivity类

    public class BaseActivity extends ActionBarActivity {
        private List<String> 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<ImageView> convertViews = new LinkedList<ImageView>();

        @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);
        }
    }
}

—————————————————————————————————————————————————–

java架构师项目实战,高并发集群分布式,大数据高可用视频教程,共760G

下载地址:

https://item.taobao.com/item.htm?id=562739965822

01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
+
hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门

内容详情:

【入门篇】
J2SE的Socket网络编程应用
J2SE的反射机制高级应用
J2SE高深讲解
JAVA编程思想 中级教程
JAVA编程思想 初级教程
JAVA编程思想 高级教程
基于J2SE的QQ聊天工具开发
我来说说面向对象
【进阶篇】
CRM项目
Eclipse
Hibernate
JAVA WEB开发视频
JAVAWEB开发实战经典-高级案例篇
JAVAWEB
JAVA线程并发教程
java网上在线支付实战视频
java设计模式
jdbc
junit
mybatis
spring mvc
SpringMvc+Spring+MyBatis+Maven整合视频
SpringMVC
Spring
Struts2 开发实战讲解
Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频
Struts
SVN
tomcat
weblogic
WebService从入门到上手企业开发
企业系统OA办公自动化
手机进销存系统
数据结构和算法视频
设计模式系列
【高级篇】
Cas单点登录
Extjs4.1+Spring3.2+hibernate4.1+MySql5商城
Git权威指南
groovy入门视频
Java 8新特性
Lucene
Mongodb
node.js
Nutch相关框架
OA办公自动化系统
Quartz Job定时任务
Solr高级应用视频
Spring Security权限控制
Spring源码解读与设计详析
Struts2源码剖析与架构指导
大型CMS内容管理系统项目
微信入门视频
深入JVM内核—原理、诊断与优化
深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)
银行接口资料
【架构篇】
ActiveMQ实战
Apache-Tomcat集群搭建
Linux集群
Linux高级架构架构方案及实现指南
Memcached分布式集群
Mysql特级优化课程
Nginx+Tomcat+Memcached群集配置软件包
Nginx服务器搭建
Nginx网站架构实战(Web服务器负载均衡与反向代理)
SOA Dubbo
storm入门到精通
storm集群的搭建
storm项目实战
UML建模
互联网公司技术架构系列
京东B2C平台推荐搜索的实践和思考
京东大数据分析与创新应用
京东大规模存储持续研发
京东电商海量订单处理OFC系统的关键技术
优米网架构设计方案
基于SOA 思想下的百万数据架构
大型网站提速之MySQL优化
大型网站架构设计
大数据高并发架构实战案例
数据优化技术Redis
数据库高并发原理
深入Java程序性能调优
深入浅出MongoDB应用实战集群及系统架构
深度揭秘服务器端内幕
电商网站之Solr应用
系统架构设计师
阿里分布式数据库服务实践
—————————————————————————————————————————————————–

发布了544 篇原创文章 · 获赞 133 · 访问量 107万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览