您的位置:首页 > 其它

使用Handler中postDelayed方法实现广告页面轮播效果

2016-05-21 16:30 639 查看
效果展示:



概况:

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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: