使用Handler中postDelayed方法实现广告页面轮播效果
2016-05-21 16:30
639 查看
效果展示:
概况:
1.使用handler进行线程之间的通讯
2 Handler的post方法作用:
将run方法里面的代码推到handler实例化的那个线程(主线程)中运行
3. postDelayed方法作用:
该继承post方法的特点,并且可以根据第二个参数进行延时执行。可以做广告轮播的效果。
代码展示:
1.MainActivity的Code:
2.PagerAdapter适配的Code:
概况:
1.使用handler进行线程之间的通讯
2 Handler的post方法作用:
将run方法里面的代码推到handler实例化的那个线程(主线程)中运行
3. postDelayed方法作用:
该继承post方法的特点,并且可以根据第二个参数进行延时执行。可以做广告轮播的效果。
实现思路: 1.初步构建ViewPager。 2.初始化数据。 3.适配数据,把适配到的数据设置到ViewPager中。 4.通过Handler中的postDelayed方法的延时效果进行页面轮播。
代码展示:
1.MainActivity的Code:
public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private List<ImageView> imageList; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handler = new Handler(); //1在layout中创建viewpager viewPager = (ViewPager) findViewById(R.id.viewpager); //2初始化数据 loadData(); //3进行适配 MyViewpagerAdapter adapter = new MyViewpagerAdapter(imageList); viewPager.setAdapter(adapter); handler.postDelayed(new Runnable() { @Override public void run() { //循环播放广告页面的步骤 //a获取当前页面 int currentItem = viewPager.getCurrentItem(); //b当切换到最后一张图时,就回到第一张 if(currentItem==imageList.size()-1){ currentItem = -1; } //c切换到指定position的页面 viewPager.setCurrentItem(currentItem+1); //d关键:启动播放。 handler.postDelayed(this,1000);//轮播间隔时间 } },5555);//启动轮播延时时间 } private void loadData() { imageList = new ArrayList<>(); ImageView imageview = new ImageView(this); imageview.setScaleType(ImageView.ScaleType.FIT_XY); imageview.setImageResource(R.mipmap.qq20150311160905); imageList.add(imageview); imageview = new ImageView(this); imageview.setScaleType(ImageView.ScaleType.FIT_XY); imageview.setImageResource(R.mipmap.qq20150311161032); imageList.add(imageview); imageview = new ImageView(this); imageview.setScaleType(ImageView.ScaleType.FIT_XY); imageview.setImageResource(R.mipmap.qq20150311160932); imageList.add(imageview); } } 、、、
2.PagerAdapter适配的Code:
public class MyViewpagerAdapter extends PagerAdapter { private List<ImageView> imageList; public MyViewpagerAdapter(List<ImageView> imageList) { this.imageList = imageList; } @Override public int getCount() { return imageList.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageview = imageList.get(position); container.addView(imageview); return imageview; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(imageList.get(position)); } }
相关文章推荐
- Runtime应用防止按钮连续点击 (转)
- 总公司路由排错?
- P问题、NP问题、NPC问题的概念及实例证明
- 青鸟 翻译
- 在js里获得type="file"的文件大小从而进行限制
- Coursera机器学习 week6 编程作业代码
- SM2算法第二十七篇: openssl库中的BIGNUM(超赞)
- NYOJ 题目73 比大小
- 用数组代替递归极大提高算法时间
- linux 使用别名
- 【URAL 1486】Equal Squares
- Android之Window与WindowManager
- Sharepoint之配置向导创建DB失败
- 开始跟贺老师学编程了
- TCP/UDP的客户端/服务器编程
- [转]python 获取脚本所在目录
- BM算法详解
- Axure 万年历(日期选择下拉文本框)
- 【BZOJ-3931】网络吞吐量 最短路 + 最大流
- Adapter(适配器)-类对象结构型模式