第一种方式:回退到第一张

效果图

第二种方式:无限循环

效果图:

Android自动播放图片功能实现_第1张图片

源代码

逻辑代码--MainActivity

package com.example.week4_day4_viewpager2;import java.util.ArrayList;import java.util.List;import android.R.integer;import android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.support.v4.view.ViewPager;import android.view.Menu;import android.widget.ImageView;public class MainActivity extends Activity {private ViewPager viewPager;// 数据源private int[] images = { R.drawable.image1, R.drawable.image2,R.drawable.image3 };// 存放数据源的集合List list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager = (ViewPager) findViewById(R.id.viewpager);// 实例化listlist = new ArrayList();for (int i = 0; i < images.length; i++) {ImageView imageView = new ImageView(MainActivity.this);imageView.setImageResource(images[i]);list.add(imageView);}// 绑定适配器viewPager.setAdapter(new MyViewPagerAdapter(MainActivity.this, list));// 当有3张图片时,走到id=2时最后一张,viewPager.setCurrentItem(Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2% list.size());// 假设viewPager有无数条数据// 延迟两秒发送一条消息handler.sendEmptyMessageDelayed(1, 2000);}// 让图片自动播放,无限循环private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {/** * 第一种方法,播放到最后一张时,回退到第一张照片从头播放 * 弊端:回退时如果图片过多,会出现回退重影,即3张时,从最后一张瞬间回退到第2张,又瞬间回退到第1张 */// int i = viewPager.getCurrentItem();// 当前item// if (i == list.size() - 1) {// 如果第一条等于最后一条// // false:是否显示动画// viewPager.setCurrentItem(0, true);// 回到第一条item// } else {// viewPager.setCurrentItem(i + 1, true);// }/** * 第二种方法,无限循环播放,每次都把所有相片,放到后面查看 */viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);sendEmptyMessageDelayed(1, 2000);};};}
逻辑代码--自定义适配器
package com.example.week4_day4_viewpager2;import java.util.List;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;public class MyViewPagerAdapter extends PagerAdapter{private Context context;private List list;public MyViewPagerAdapter(Context context, List list) {super();this.context = context;this.list = list;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Integer.MAX_VALUE;//设置viewPager里有N条数据//return list.size();}@Overridepublic Object instantiateItem(ViewGroup container, int position) {//假设有3张照片,走到id=2时,走id=0的,所以取余container.addView(list.get(position%list.size()));return list.get(position%list.size());//return list.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stubcontainer.removeView(list.get(position%list.size()));//container.removeView(list.get(position));//super.destroyItem(container, position, object);}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0==arg1;}}
布局文件
    


更多相关文章

  1. Android Glide设置图片圆角,亲测有效
  2. ANDROID图片压缩代码
  3. Android 网络下载图片
  4. android listview 三种适配器设置
  5. Android:ImageView 设置图片
  6. Android如何截取当前View 为图片

随机推荐

  1. android 定时请求(两种实现方式)
  2. android 分享文字到其他应用程序
  3. android 访问并显示网页
  4. Android(安卓)使用XmlPullParser解析xml
  5. android捕获back返回键
  6. Downloading the Source
  7. font 在xml使用
  8. Android(安卓)px sp dip转化
  9. Android安装应用程序出现“INSTALL_FAILE
  10. 在android的spinner中,实现取VALUE值和TEX