Android开发使用Handler的PostDelayed方法实现图片轮播功能
作者:LovooGod 时间:2023-10-20 04:37:42
本文实例讲述了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);
}
}
}
希望本文所述对大家Android程序设计有所帮助。
来源:http://blog.csdn.net/lovoo/article/details/51168385
标签:Android,Handler,PostDelayed,图片轮播
0
投稿
猜你喜欢
SpringBoot接口如何对参数进行校验
2021-08-30 17:25:00
Android RecyclerView上拉加载和下拉刷新
2023-05-09 14:30:26
Java导出Execl疑难点处理的实现
2021-09-18 12:55:11
详解java Collections.sort的两种用法
2023-11-28 09:30:31
java实现PDF转图片的方法
2021-05-24 04:29:59
Java有哪些操作字符串的类?区别在哪?
2021-06-02 14:50:54
Android studio 3.5.2安装图文教程详解
2022-06-27 19:15:46
C#实现策略模式
2022-02-09 17:19:01
C#实现GridView导出Excel实例代码
2023-10-29 04:31:09
C#开发Windows UWP系列之布局面板RelativePanel
2023-04-11 12:28:29
Java中的动态和静态编译实例详解
2021-07-30 15:25:10
Mybatis 开发注解快速入门
2021-12-01 16:03:36
Android 控件GridView使用案例讲解
2023-07-14 17:33:28
Android SQLite数据库的增 删 查找操作
2023-02-09 09:47:25
解析如何在android中增加gsensor驱动(MMA7660)
2023-05-22 22:03:24
解决Intellij IDEA 使用Spring-boot-devTools无效的问题
2023-09-17 20:49:47
IntelliJ IDEA运行SpringBoot项目的详细步骤
2022-04-29 00:59:08
java后台批量下载文件并压缩成zip下载的方法
2021-07-24 21:13:11
理解Java的序列化与反序列化
2022-06-03 16:14:54
Java环境变量的设置方法(图文教程)
2023-01-02 17:51:42